a �DOg4�@sndZddlZddlZddlZddlmZmZddlmZddl m Z ej dkrVda da d dd �Zd d d �ZdS)z�distutils.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. �N)�DistutilsPlatformError�DistutilsExecError)�DEBUG)�log�darwin�c Cs�t|�}t�d�|��|r dS|r@t|d�}|dur@||d<d}tjdkr�tdur�ddlm }|� d�pndatr�dd �t� d �D�a tr�t j�dt�}d d �|� d �D�}t dd �d dgkr�|dd �d dgkr�d|tf} t| ��tt j|d�}z tj||d�} | ��| j} WnLt�yd} z2t�s8|d}td|| jdf�| �WYd} ~ n d} ~ 00| �r�t�sz|d}td|| f��dS)a�Run 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. � Nrr)� sysconfig�MACOSX_DEPLOYMENT_TARGET�cSsg|] }t|��qS���int��.0�xr r �'/usr/lib64/python3.9/distutils/spawn.py� <�zspawn..�.cSsg|] }t|��qSr r rr r rrDr�� �z]$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure;must use 10.3 or later)r )�envzcommand %r failed: %s�����z#command %r failed with exit code %s)�listr�info�join�find_executable�sys�platform� _cfg_target� distutilsr Zget_config_var�split�_cfg_target_split�os�environ�getr�dict� subprocess�Popen�wait� returncode�OSErrorrr�args) �cmd� search_path�verbose�dry_run� executablerr Z cur_targetZcur_target_splitZmy_msg�proc�exitcode�excr r r�spawns`   ��(�� �� �r7c Cs�tj�|�\}}tjdkr*|dkr*|d}tj�|�r:|S|dur�tj�dd�}|dur�zt�d�}Wnt t fy�tj }Yn0|s�dS|� tj �}|D]&}tj�||�}tj�|�r�|Sq�dS)z�Tries 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. �win32z.exeN�PATH�CS_PATH)r%�path�splitextrr �isfiler&r'�confstr�AttributeError� ValueError�defpathr#�pathsepr)r3r;�_�ext�paths�p�fr r rr_s(     r)rrr)N)�__doc__rr%r)Zdistutils.errorsrrZdistutils.debugrr"rr r!r$r7rr r r r�s    H