mirror of https://github.com/python/cpython
Patch from Perry Stoll: support for Windows.
This commit is contained in:
parent
1ea8af2fe0
commit
69628b0ad1
|
@ -33,22 +33,41 @@ def spawn (cmd,
|
||||||
|
|
||||||
if os.name == 'posix':
|
if os.name == 'posix':
|
||||||
_spawn_posix (cmd, search_path, verbose, dry_run)
|
_spawn_posix (cmd, search_path, verbose, dry_run)
|
||||||
elif os.name == 'windows': # ???
|
elif os.name in ( 'nt', 'windows' ): # ???
|
||||||
# XXX should 'args' be cmd[1:] or cmd?
|
_spawn_nt (cmd, search_path, verbose, dry_run)
|
||||||
# XXX how do we detect failure?
|
|
||||||
# XXX how to do this in pre-1.5.2?
|
|
||||||
# XXX is P_WAIT the correct mode?
|
|
||||||
# XXX how to make Windows search the path?
|
|
||||||
if verbose:
|
|
||||||
print string.join (cmd, ' ')
|
|
||||||
if not dry_run:
|
|
||||||
os.spawnv (os.P_WAIT, cmd[0], cmd[1:])
|
|
||||||
else:
|
else:
|
||||||
raise DistutilsPlatformError, \
|
raise DistutilsPlatformError, \
|
||||||
"don't know how to spawn programs on platform '%s'" % os.name
|
"don't know how to spawn programs on platform '%s'" % os.name
|
||||||
|
|
||||||
# spawn ()
|
# spawn ()
|
||||||
|
|
||||||
|
def _spawn_nt ( cmd,
|
||||||
|
search_path=1,
|
||||||
|
verbose=0,
|
||||||
|
dry_run=0):
|
||||||
|
import string
|
||||||
|
executable = cmd[0]
|
||||||
|
if search_path:
|
||||||
|
paths = string.split( os.environ['PATH'], os.pathsep)
|
||||||
|
base,ext = os.path.splitext(executable)
|
||||||
|
if (ext != '.exe'):
|
||||||
|
executable = executable + '.exe'
|
||||||
|
if not os.path.isfile(executable):
|
||||||
|
paths.reverse() # go over the paths and keep the last one
|
||||||
|
for p in paths:
|
||||||
|
f = os.path.join( p, executable )
|
||||||
|
if os.path.isfile ( f ):
|
||||||
|
# the file exists, we have a shot at spawn working
|
||||||
|
executable = f
|
||||||
|
if verbose:
|
||||||
|
print string.join ( [executable] + cmd[1:], ' ')
|
||||||
|
if not dry_run:
|
||||||
|
# spawn for NT requires a full path to the .exe
|
||||||
|
rc = os.spawnv (os.P_WAIT, executable, cmd)
|
||||||
|
if rc != 0:
|
||||||
|
raise DistutilsExecError("command failed: %d" % rc)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _spawn_posix (cmd,
|
def _spawn_posix (cmd,
|
||||||
search_path=1,
|
search_path=1,
|
||||||
|
|
Loading…
Reference in New Issue