summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-12-20 23:23:46 (GMT)
committerSteven Knight <knight@baldmt.com>2001-12-20 23:23:46 (GMT)
commit754c465fbd31d4c9518e0bbdc20ee5021934aee9 (patch)
tree22f850e54038df3399403d4653d3650a99660e32 /src
parentbce5d5cd1f391ae5adfb90f3d936cd12516c1d5f (diff)
downloadSCons-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.txt2
-rw-r--r--src/engine/SCons/Node/FS.py2
-rw-r--r--src/engine/SCons/Node/FSTests.py13
-rw-r--r--src/engine/SCons/Util.py2
-rw-r--r--src/engine/SCons/UtilTests.py9
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__":