Call str() on the string values of environment variables used by the
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sat, 20 Sep 2008 01:21:36 +0000 (01:21 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sat, 20 Sep 2008 01:21:36 +0000 (01:21 +0000)
_subproc(), so the underlying subprocess.Popen() call won't throw
an exception if the value is actually a Unicode string.

git-svn-id: http://scons.tigris.org/svn/scons/trunk@3441 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/Action.py

index f1de15c958657ba6be3e5ff257b43ca0ef1e045d..da02f120b4a8114f9e7f17a314eb888a67429914 100644 (file)
@@ -518,7 +518,9 @@ def _subproc(env, cmd, error = 'ignore', **kw):
     is_String = SCons.Util.is_String
     for key, value in ENV.items():
         if is_String(value):
-            new_env[key] = value
+            # Call str() even though it's a "string" because it might be
+            # a *Unicode* string, which makes subprocess.Popen() gag.
+            new_env[key] = str(value)
         elif SCons.Util.is_List(value):
             # If the value is a list, then we assume it is a
             # path list, because that's a pretty common list-like