Commits

Anonymous committed 2cd2c9c

Bug fixes: BuildDir() non-writable files, and CPPPATH/LIBPATH variable subsitution (from Charles Crain).

  • Participants
  • Parent commits 2cdc11c

Comments (0)

Files changed (5)

File src/CHANGES.txt

   - Added a GetBuildPath() method to return the full path to the
     Node for a specified string.
 
+  - Fixed variable substitution in CPPPATH and LIBPATH.
+
   From Anthony Roach:
 
   - Documented CXXFLAGS, CXXCOM, and CPPPATH.

File src/engine/SCons/Node/FS.py

     def file_link(src, dest):
         shutil.copyfile(src, dest)
         st=os.stat(src)
-        os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]))
+        os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
 
 class PathName:
     """This is a string like object with limited capabilities (i.e.,

File src/engine/SCons/Node/FSTests.py

 import SCons.Node.FS
 from TestCmd import TestCmd
 from SCons.Errors import UserError
+import stat
 
 built_it = None
 
         assert f1.srcpath == 'src/test1', f1.srcpath
         assert f2.srcpath == 'src/test1', f2.srcpath
 
+        # Test to see if file_link() works...
+        test=TestCmd(workdir='')
+        test.subdir('src','build')
+        test.write('src/foo', 'foo\n')
+        os.chmod(test.workpath('src/foo'), stat.S_IRUSR)
+        SCons.Node.FS.file_link(test.workpath('src/foo'),
+                                test.workpath('build/foo'))
+        os.chmod(test.workpath('src/foo'), stat.S_IRUSR | stat.S_IWRITE)
+        st=os.stat(test.workpath('build/foo'))
+        assert (stat.S_IMODE(st[stat.ST_MODE]) & stat.S_IWRITE), \
+               stat.S_IMODE(st[stat.ST_MODE])
+
         exc_caught = 0
         try:
             fs = SCons.Node.FS.FS()

File src/engine/SCons/Util.py

         src = dict[self.src]
         if not type(src) is types.ListType and not isinstance(src, UserList):
             src = [ src ]
-        return src
+        return map(lambda x, d=dict: scons_subst(x, {}, d), src)
 
     def generate(self, dict):
         if not dict.has_key(self.src):

File src/engine/SCons/UtilTests.py

         assert dict['_LIBFLAGS'][2] == 'foobazbar', \
                dict['_LIBFLAGS'][2]
 
-        dict = {'CPPPATH'   : [ 'foo', 'bar', 'baz' ],
+        dict = {'CPPPATH'   : [ 'foo', 'bar', 'baz', '$FOO/bar' ],
                 'INCPREFIX' : 'foo',
-                'INCSUFFIX' : 'bar'}
+                'INCSUFFIX' : 'bar',
+                'FOO'       : 'baz' }
         autogenerate(dict, dir = SCons.Node.FS.default_fs.Dir('/xx'))
-        assert len(dict['_INCFLAGS']) == 3, dict('_INCFLAGS')
+        assert len(dict['_INCFLAGS']) == 4, dict['_INCFLAGS']
         assert dict['_INCFLAGS'][0] == os.path.normpath('foo/xx/foobar'), \
                dict['_INCFLAGS'][0]
         assert dict['_INCFLAGS'][1] == os.path.normpath('foo/xx/barbar'), \
                dict['_INCFLAGS'][1]
         assert dict['_INCFLAGS'][2] == os.path.normpath('foo/xx/bazbar'), \
                dict['_INCFLAGS'][2]
+        assert dict['_INCFLAGS'][3] == os.path.normpath('foo/xx/baz/barbar'), \
+               dict['_INCFLAGS'][3]
         
         
 if __name__ == "__main__":