summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-04-09 14:54:03 (GMT)
committerSteven Knight <knight@baldmt.com>2003-04-09 14:54:03 (GMT)
commit357e981118ba9f2528a2a5f3f60a3f928046558b (patch)
tree9729558c032bad479e9e69e9c25daecd85bc357a /src/engine
parent393e4ca7e9d1308803da49bee667f1a874c612db (diff)
downloadSCons-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.py13
-rw-r--r--src/engine/SCons/Tool/CVS.py8
-rw-r--r--src/engine/SCons/Util.py9
-rw-r--r--src/engine/SCons/UtilTests.py7
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