diff options
author | Steven Knight <knight@baldmt.com> | 2003-04-09 14:54:03 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2003-04-09 14:54:03 (GMT) |
commit | 357e981118ba9f2528a2a5f3f60a3f928046558b (patch) | |
tree | 9729558c032bad479e9e69e9c25daecd85bc357a /src/engine | |
parent | 393e4ca7e9d1308803da49bee667f1a874c612db (diff) | |
download | SCons-357e981118ba9f2528a2a5f3f60a3f928046558b.zip SCons-357e981118ba9f2528a2a5f3f60a3f928046558b.tar.gz SCons-357e981118ba9f2528a2a5f3f60a3f928046558b.tar.bz2 |
Set the SYSTEMROOT environment variable on Windows, use POSIX (forward-slash) paths when checking things out of CVS.
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/SCons/Platform/win32.py | 13 | ||||
-rw-r--r-- | src/engine/SCons/Tool/CVS.py | 8 | ||||
-rw-r--r-- | src/engine/SCons/Util.py | 9 | ||||
-rw-r--r-- | src/engine/SCons/UtilTests.py | 7 |
4 files changed, 33 insertions, 4 deletions
diff --git a/src/engine/SCons/Platform/win32.py b/src/engine/SCons/Platform/win32.py index 870dd99..3591ac6 100644 --- a/src/engine/SCons/Platform/win32.py +++ b/src/engine/SCons/Platform/win32.py @@ -118,6 +118,19 @@ def generate(env): if not env.has_key('ENV'): env['ENV'] = {} + + # Import things from the external environment to the construction + # environment's ENV. This is a potential slippery slope, because we + # *don't* want to make builds dependent on the user's environment by + # default. We're doing this for SYSTEMROOT, though, because it's + # needed for anything that uses sockets, and seldom changes. Weigh + # the impact carefully before adding other variables to this list. + import_env = [ 'SYSTEMROOT' ] + for var in import_env: + v = os.environ.get(var) + if v: + env['ENV'][var] = v + env['ENV']['PATHEXT'] = '.COM;.EXE;.BAT;.CMD' env['OBJPREFIX'] = '' env['OBJSUFFIX'] = '.obj' diff --git a/src/engine/SCons/Tool/CVS.py b/src/engine/SCons/Tool/CVS.py index b8f6968..9c5dc60 100644 --- a/src/engine/SCons/Tool/CVS.py +++ b/src/engine/SCons/Tool/CVS.py @@ -45,8 +45,10 @@ def generate(env, platform): """ """ # fail if repos is not an absolute path name? if module != '': - module = os.path.join(module, '') - env['CVSCOM'] = '$CVS $CVSFLAGS co $CVSCOFLAGS -p $CVSMODULE$TARGET > $TARGET' + # Don't use os.path.join() because the name we fetch might + # be across a network and must use POSIX slashes as separators. + module = module + '/' + env['CVSCOM'] = '$CVS $CVSFLAGS co $CVSCOFLAGS -p $CVSMODULE${TARGET.posix} > $TARGET' return SCons.Builder.Builder(action = '$CVSCOM', env = env, overrides = {'CVSREPOSITORY':repos, @@ -57,7 +59,7 @@ def generate(env, platform): env['CVS'] = 'cvs' env['CVSFLAGS'] = '-d $CVSREPOSITORY' env['CVSCOFLAGS'] = '' - env['CVSCOM'] = '$CVS $CVSFLAGS co $CVSCOFLAGS $TARGET' + env['CVSCOM'] = '$CVS $CVSFLAGS co $CVSCOFLAGS ${TARGET.posix}' def exists(env): return env.Detect('cvs') diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py index 3bfb79a..b1a8679 100644 --- a/src/engine/SCons/Util.py +++ b/src/engine/SCons/Util.py @@ -166,12 +166,19 @@ class PathList(UserList.UserList): # available even if this object is a Lister, not a PathList. return PathList(map(lambda x: updrive(os.path.abspath(x)), self.data)) + def __posix(self): + if os.sep == '/': + return self + else: + return PathList(map(lambda x: string.replace(x, os.sep, '/'), self.data)) + dictSpecialAttrs = { "file" : __getFileName, "base" : __getBasePath, "filebase" : __getBase, "dir" : __getDir, "suffix" : __getSuffix, - "abspath" : __getAbsPath} + "abspath" : __getAbsPath, + "posix" : __posix} def is_literal(self): return 1 diff --git a/src/engine/SCons/UtilTests.py b/src/engine/SCons/UtilTests.py index 890f54d..a176013 100644 --- a/src/engine/SCons/UtilTests.py +++ b/src/engine/SCons/UtilTests.py @@ -156,6 +156,13 @@ class UtilTestCase(unittest.TestCase): target=target, source=source) assert newcom == cvt("test %s/foo/blah.cpp"%SCons.Util.updrive(os.getcwd())), newcom + # Note that we don't use the cvt() helper function here, + # because we're testing that the .posix attribute does its own + # conversion of the path name backslashes to slashes. + newcom = scons_subst("test ${TARGET.posix} ${SOURCE.posix}", env, + target=target, source=source) + assert newcom == "test foo/bar.exe foo/blah.cpp", newcom + newcom = scons_subst("test $xxx", env) assert newcom == cvt("test"), newcom |