U
Ä:âeL ã @ s¾ d Z ddlZddlZddlZddddgZdZdZd Zd&d
d„Zdd
„ Z dd„ Z
dadd„ Zdd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d„ Zd#d„ Zd$d„ Zd%d„ ZdS )'zShared 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Œ |dkrt 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 ú1/usr/local/python38/lib/python3.8/_osx_support.pyÚ_find_executable s
r c
C s– ddl }zddl}| ¡ }W n( tk
rD tdt ¡ f dƒ}Y nX | |¡<}d| |jf }t |¡s||
¡ d¡ ¡ ndW 5 Q R £ S Q R X dS )z0Output from successful command execution or Noner Nz/tmp/_osx_support.%szw+bz%s 2>/dev/null >'%s'zutf-8)
Ú
contextlibÚtempfileÚNamedTemporaryFileÚImportErrorÚopenr
ÚgetpidÚclosingÚnameÚsystemÚreadÚdecodeÚstrip)Z
commandstringr 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_toolJ s
ÿþr0 c C sx t dkrtda ztdƒ} W n tk
r, Y nHX zt d| ¡ ¡}W 5 | ¡ X |dk rtd | 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ÚcloseÚreÚsearchr) r Úgroupr )r Úmr r r Ú_get_system_versionS s
ÿ
r; 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_valuesq s
rA c C s8 | |d¡}||kr,t| | kr,|| t| <