B
j÷,:]{ã @ 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„x*|D ]"}t j || ¡}t j |¡rZ|S qZW dS | 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ÚPATHZwin32z.exe)
ÚosÚenvironÚsplitÚpathsepÚpathÚsplitextÚsysÚplatformÚisfileÚjoin)Ú
executabler ÚpathsÚbaseZextÚpÚf© r ú//opt/alt/python37/lib/python3.7/_osx_support.pyÚ_find_executable s
r c C sŠ ddl }yddl}| ¡ }W n( tk
rD tdt ¡ f dƒ}Y nX | |¡0}d| |jf }t |¡s||
¡ d¡ ¡ S dS 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ÚtempfileZNamedTemporaryFileÚ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 r- c C sx t dkrtda ytdƒ} W n tk
r, Y nHX zt d| ¡ ¡}W d| ¡ 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ÚreÚsearchr&