B
    0*\                 @   s   d dl Z d dlZd dlmZmZ d dlmZ d dlmZ dddZ	dd	 Z
dd
dZe jdkrrd dlmZ dadadddZdddZdS )    N)DistutilsPlatformErrorDistutilsExecError)DEBUG)log   c             C   sN   t | } tjdkr"t| ||d n(tjdkr<t| ||d ntdtj d S )Nposix)dry_runntz1don't know how to spawn programs on platform '%s')listosname_spawn_posix	_spawn_ntr   )cmdsearch_pathverboser    r   :C:\ALexclude\prg\programme\Python37\Lib\distutils\spawn.pyspawn   s    

r   c             C   s.   x(t | D ]\}}d|kr
d| | |< q
W | S )N z"%s")	enumerate)argsiargr   r   r   _nt_quote_args+   s    r   c          
   C   s   | d }t | } |r t|p|}td|g| dd    |syttj|| }W n@ tk
r } z"t	sp|} t
d| |jd f W d d }~X Y nX |dkrt	s|} t
d| |f d S )Nr   r   r   zcommand %r failed: %sz%command %r failed with exit status %d)r   find_executabler   infojoinr   spawnvP_WAITOSErrorr   r   r   )r   r   r   r   
executableZrcexcr   r   r   r   ;   s$    &r   darwin)	sysconfigc          
   C   st  t d|  |rd S | d }|r*tjp.tj}d }tjdkrtd krlt	
dpRdatrldd tdD atrtjdt}td	d |dD krd
|tf }t|ttj|d}|rtjptj}t }	|	dkrty$|d kr|||  n||| | W nN tk
rL }
 z.ts|} tjd| |
jf  td W d d }
~
X Y nX tsX|} tjd|   td nxyt|	d\}	}W nD tk
r } z$ts|} td| |jd f W d d }~X Y nX t|rts|} td| t|f nlt|r>t |}|dkr"d S ts,|} td| |f n,t!|rPqvntsZ|} td| |f qvW d S )Nr   r   r$   MACOSX_DEPLOYMENT_TARGET c             S   s   g | ]}t |qS r   )int).0xr   r   r   
<listcomp>e   s    z _spawn_posix.<locals>.<listcomp>.c             S   s   g | ]}t |qS r   )r(   )r)   r*   r   r   r   r+   k   s    zF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r&   zunable to execute %r: %s
r   z(unable to execute %r for unknown reasonszcommand %r failed: %sr   z"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %d)"r   r   r   r   execvpexecvsysplatform_cfg_targetr%   Zget_config_varsplit_cfg_target_splitenvirongetr   dictexecvpeexecveZforkr!   r   stderrwritestrerror_exitwaitpidr   r   ZWIFSIGNALEDZWTERMSIGZ	WIFEXITEDZWEXITSTATUSZ
WIFSTOPPED)r   r   r   r   r"   Zexec_fnenvZ
cur_targetZmy_msgZpidestatusr#   exit_statusr   r   r   r   X   s    



&

r   c             C   s   |d krt jdt j}|t j}t j| \}}tj	dkrN|dkrN| d } t j
| sx*|D ]"}t j|| }t j
|r`|S q`W d S | S d S )NPATHwin32z.exe)r   r4   r5   defpathr2   pathseppathsplitextr/   r0   isfiler   )r"   rF   pathsbaseZextpfr   r   r   r      s    
r   )r   r   r   )r   r   r   )r   r   r   )N)r/   r   Zdistutils.errorsr   r   Zdistutils.debugr   Z	distutilsr   r   r   r   r0   r%   r1   r3   r   r   r   r   r   r   <module>	   s   



Q