diff --git a/SConstruct b/SConstruct index 97c616713..1581f392b 100644 --- a/SConstruct +++ b/SConstruct @@ -1099,7 +1099,7 @@ if env['python_package'] in ('full','default'): ret = getCommandOutput(env['python_cmd'], threetotwo_cmd, '-l') else: ret = getCommandOutput('3to2' '-l') - except OSError as err: + except (OSError, subprocess.CalledProcessError) as err: if env['VERBOSE']: print 'Error checking for 3to2:' print err diff --git a/site_scons/buildutils.py b/site_scons/buildutils.py index 353609461..98e44de96 100644 --- a/site_scons/buildutils.py +++ b/site_scons/buildutils.py @@ -591,24 +591,16 @@ def getSpawn(env): return ourSpawn + def getCommandOutput(cmd, *args): """ Run a command with arguments and return its output. - Substitute for subprocess.check_output which is only available - in Python >= 2.7 """ environ = dict(os.environ) if 'PYTHONHOME' in environ: # Can cause problems when trying to run a different Python interpreter del environ['PYTHONHOME'] - proc = subprocess.Popen([cmd] + list(args), - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - env=environ) - data, err = proc.communicate() - if proc.returncode: - raise OSError(err) - + data = subprocess.check_output([cmd] + list(args), stderr=subprocess.STDOUT, env=environ) return data.strip() # Monkey patch for SCons Cygwin bug