qfc@sdZdZddlZddlZddlmZmZddlmZddddZ d Z dddd Z dddd Z ej d krdd lmZdadanddddZddZdS(sdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. s$Id$iN(tDistutilsPlatformErrortDistutilsExecError(tlogiicCstjdkr%t||d|nZtjdkrJt||d|n5tjdkrot||d|ntdtjdS(sRun another program, specified as a command list 'cmd', in a new process. 'cmd' is just the argument list for the new process, ie. cmd[0] is the program to run and cmd[1:] are the rest of its arguments. There is no way to run a program with a name different from that of its executable. If 'search_path' is true (the default), the system's executable search path will be used to find the program; otherwise, cmd[0] must be the exact path to the executable. If 'dry_run' is true, the command will not actually be run. Raise DistutilsExecError if running the program fails in any way; just return on success. tposixtdry_runtnttos2s1don't know how to spawn programs on platform '%s'N(tostnamet _spawn_posixt _spawn_ntt _spawn_os2R(tcmdt search_pathtverboseR((s'/usr/lib64/python2.7/distutils/spawn.pytspawnscCs>x7t|D])\}}d|kr d|||tj}|j| qTntj} | dkry||WnAtk r} tjjd|d| jftjd nXtjjd |dtjd nxytj| d\} } WnRtk rY} d dl}| j|jkr;qntd |d| d fnXtj | rtd |dtj!| fqtj"| rtj#| }|dkrdStd|d|fqtj$| rqqtd|d| fqdS(NRiR tMACOSX_DEPLOYMENT_TARGETtt.sF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configuresunable to execute %s: %s is(unable to execute %s for unknown reasonsiscommand '%s' failed: %ss$command '%s' terminated by signal %ds'command '%s' failed with exit status %ds3unknown error executing '%s': termination status %d(%RRRRtexecvptexecvtsystplatformt _cfg_targettNoneR!tget_config_vartsplittintt_cfg_target_splittenvirontgetRtdicttexecvpetexecvetappendtforkRtstderrtwritetstrerrort_exittwaitpidterrnotEINTRRt WIFSIGNALEDtWTERMSIGt WIFEXITEDt WEXITSTATUSt WIFSTOPPED(R R RRtexec_fnt exec_argstxt cur_targettmy_msgtenvtpidtetstatusRR;t exit_status((s'/usr/lib64/python2.7/distutils/spawn.pyR hsp ..        cCs|dkrtjd}n|jtj}tjj|\}}tjdksdtj dkr}|dkr}|d}ntjj |sx9|D]1}tjj ||}tjj |r|SqWdS|SdS(sTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. tPATHtwin32Rs.exeN( R*RR/R,tpathseptpathtsplitextR'R(RtisfileR(RROtpathstbasetexttptf((s'/usr/lib64/python2.7/distutils/spawn.pyRs *  (t__doc__t __revision__R'Rtdistutils.errorsRRt distutilsRRRR R R(R!R*R)R.R R(((s'/usr/lib64/python2.7/distutils/spawn.pyts    I