diff options
| author | Steven Knight <knight@baldmt.com> | 2001-12-20 23:23:46 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2001-12-20 23:23:46 (GMT) |
| commit | 754c465fbd31d4c9518e0bbdc20ee5021934aee9 (patch) | |
| tree | 22f850e54038df3399403d4653d3650a99660e32 /src | |
| parent | bce5d5cd1f391ae5adfb90f3d936cd12516c1d5f (diff) | |
| download | SCons-754c465fbd31d4c9518e0bbdc20ee5021934aee9.zip SCons-754c465fbd31d4c9518e0bbdc20ee5021934aee9.tar.gz SCons-754c465fbd31d4c9518e0bbdc20ee5021934aee9.tar.bz2 | |
Bug fixes: BuildDir() non-writable files, and CPPPATH/LIBPATH variable subsitution (from Charles Crain).
Diffstat (limited to 'src')
| -rw-r--r-- | src/CHANGES.txt | 2 | ||||
| -rw-r--r-- | src/engine/SCons/Node/FS.py | 2 | ||||
| -rw-r--r-- | src/engine/SCons/Node/FSTests.py | 13 | ||||
| -rw-r--r-- | src/engine/SCons/Util.py | 2 | ||||
| -rw-r--r-- | src/engine/SCons/UtilTests.py | 9 |
5 files changed, 23 insertions, 5 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 76bc37e..cecf717 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -31,6 +31,8 @@ RELEASE 0.02 - - 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. diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index 5cc06ac..ee5deaa 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -50,7 +50,7 @@ except AttributeError: 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., diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index f97627e..b166be1 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -31,6 +31,7 @@ import unittest import SCons.Node.FS from TestCmd import TestCmd from SCons.Errors import UserError +import stat built_it = None @@ -85,6 +86,18 @@ class BuildDirTestCase(unittest.TestCase): 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() diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py index 1cd51d7..0d05498 100644 --- a/src/engine/SCons/Util.py +++ b/src/engine/SCons/Util.py @@ -266,7 +266,7 @@ class VarInterpolator: 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): diff --git a/src/engine/SCons/UtilTests.py b/src/engine/SCons/UtilTests.py index 615e29f..9eebc85 100644 --- a/src/engine/SCons/UtilTests.py +++ b/src/engine/SCons/UtilTests.py @@ -188,17 +188,20 @@ class UtilTestCase(unittest.TestCase): 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__": |
