a
�DOg
U � @ s� d Z ddlZddlZddlZg d�ZdZdZdZd.dd�Zd/d
d�Z dd
� Z
dadd� Zda
dd� Zdd� Zdd� Zdadd� Zdd� Zdd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� ZdS )0zShared OS X support functions.� N)�compiler_fixup�customize_config_vars�customize_compiler�get_platform_osx)
�CFLAGSZLDFLAGSZCPPFLAGSZ
BASECFLAGS� BLDSHARED�LDSHARED�CC�CXXZ PY_CFLAGSZ
PY_LDFLAGSZPY_CPPFLAGSZPY_CORE_CFLAGSZPY_CORE_LDFLAGS)r r r r
Z_OSX_SUPPORT_INITIAL_c C s� |du rt jd }|�t j�}t j�| �\}}tjdkrH|dkrH| d } t j�| �s�|D ]&}t j� || �}t j�|�rX| S qXdS | S 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.
N�PATH�win32z.exe)
�os�environ�split�pathsep�path�splitext�sys�platform�isfile�join)�
executabler �paths�base�ext�p�f� r �$/usr/lib64/python3.9/_osx_support.py�_find_executable s
r Fc C s� ddl }zddl}|�� }W n& tyB tdt�� f d�}Y n0 |�|��R}|rdd| |jf }nd| |jf }t� |�s�|�
� �d��� ndW d � S 1 s�0 Y dS )z0Output from successful command execution or Noner Nz/tmp/_osx_support.%szw+bz
%s >'%s' 2>&1z%s 2>/dev/null >'%s'zutf-8)
�
contextlib�tempfile�NamedTemporaryFile�ImportError�openr
�getpid�closing�name�system�read�decode�strip)Z
commandstringZcapture_stderrr r! �fp�cmdr r r �_read_output7 s ��
r. c C s t | �ptd| f �pdS )z0Find a build tool on current path or using xcrunz/usr/bin/xcrun -find %s� )r r. )Ztoolnamer r r �_find_build_toolM s
��r0 c C s~ t du rzda ztd�} W n ty* Y nP0 zt�d| �� �}W | �� n
| �� 0 |durzd�|�d�� d�dd� �a t S )z*Return the OS X system version as a stringNr/ z0/System/Library/CoreServices/SystemVersion.plistz=ProductUserVisibleVersion\s*(.*?)�.� � )
�_SYSTEM_VERSIONr$ �OSError�re�searchr) �closer �groupr )r �mr r r �_get_system_versionV s
�r; c C sJ t du rFt� } | rFztdd� | �d�D ��a W n tyD da Y n0 t S )z}
Return the macOS system version as a tuple
The return value is safe to use to compare
two version numbers.
Nc s s | ]}t |�V qd S �N��int��.0�ir r r � � � z,_get_system_version_tuple..r1 r )�_SYSTEM_VERSION_TUPLEr; �tupler �
ValueError�Zosx_versionr r r �_get_system_version_tupleu s
rH c C s" t | �D ]}|�t�r| |= qdS )z-Remove original unmodified values for testingN)�list�
startswith�_INITPRE)�_config_vars�kr r r �_remove_original_values� s
rN c C s8 | � |d�}||kr,t| | vr,|| t| <