File: //lib64/python3.9/__pycache__/_osx_support.cpython-39.pyc
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=<key>ProductUserVisibleVersion</key>\s*<string>(.*?)</string>�.�   �   )
�_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   �	<genexpr>�   �    z,_get_system_version_tuple.<locals>.<genexpr>r1   r   )�_SYSTEM_VERSION_TUPLEr;   �tupler   �
ValueError�Zosx_versionr   r   r   �_get_system_version_tupleu   s    
rH   c                 C   s"