zfc @sdZddlZddlZddlZddddgZd$Zd%ZdZddZ dZ dZ da dZ dZdZdZdZdZdZdZdZd Zd!Zd"Zd#ZdS(&sShared OS X support functions.iNtcompiler_fixuptcustomize_config_varstcustomize_compilertget_platform_osxtCFLAGStLDFLAGStCPPFLAGSt BASECFLAGSt BLDSHAREDtLDSHAREDtCCtCXXt PY_CFLAGSt PY_LDFLAGSt PY_CPPFLAGStPY_CORE_CFLAGSt_OSX_SUPPORT_INITIAL_cCs|dkrtjd}n|jtj}tjj|\}}tjdksdtj dkr}|dkr}|d}ntjj |sx9|D]1}tjj ||}tjj |r|SqWdS|SdS(sTries 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. tPATHtwin32tos2s.exeN( tNonetostenvirontsplittpathseptpathtsplitexttsystplatformtnametisfiletjoin(t executableRtpathstbasetexttptf((s$/usr/lib64/python2.7/_osx_support.pyt_find_executables *  cCsddl}yddl}|j}Wn-tk rWtdtjfd}nX|j|=}d||jf}tj |s|j j SdSWdQXdS(s0Output from successful command execution or NoneiNs/tmp/_osx_support.%ssw+bs%s 2>/dev/null >'%s'( t contextlibttempfiletNamedTemporaryFilet ImportErrortopenRtgetpidtclosingRtsystemtreadtstripR(t commandstringR'R(tfptcmd((s$/usr/lib64/python2.7/_osx_support.pyt _read_output7s   cCs#t|p"td|fp"dS(s0Find a build tool on current path or using xcruns/usr/bin/xcrun -find %st(R&R4(ttoolname((s$/usr/lib64/python2.7/_osx_support.pyt_find_build_toolJs cCstdkrdaytd}Wntk r5qXztjd|j}Wd|jX|dk rdj|j dj dd aqntS(s*Return the OS X system version as a stringR5s0/System/Library/CoreServices/SystemVersion.plists=ProductUserVisibleVersion\s*(.*?)Nt.ii( t_SYSTEM_VERSIONRR+tIOErrortretsearchR/tcloseRtgroupR(R%tm((s$/usr/lib64/python2.7/_osx_support.pyt_get_system_versionSs     +cCs4x-t|D]}|jtr ||=q q WdS(s-Remove original unmodified values for testingN(tlistt startswitht_INITPRE(t _config_varstk((s$/usr/lib64/python2.7/_osx_support.pyt_remove_original_valuesqscCsM|j|d}||kr?t||kr?||t|sR8R5i i(i i(R@ttupleRt ValueErrortbooltFalse(t osx_version((s$/usr/lib64/python2.7/_osx_support.pyt_supports_universal_buildss #  cCsDdtjkr|S|djd}}t|sFtd}n^tjj|jdrtd|j ddf}|rd|krtd}qn|st d n||kr@xxt D]m}||kr|tjkr||j}|d kr|n|d |d/dev/nullRWs'"'"'s-arch\s+ppc\w*\sRXN( RRR;R<RR.RZRbRcRK(RDtstatusRHRd((s$/usr/lib64/python2.7/_osx_support.pyt_remove_unsupported_archss   cCsdtjkrtjd}xmtD]b}||kr#d||kr#||}tjdd|}|d|}t|||q#q#Wn|S(s2Allow override of all archs with ARCHFLAGS env vart ARCHFLAGSs-archs -arch\s+\w+\sRX(RRRbR;RcRK(RDtarchRHRd((s$/usr/lib64/python2.7/_osx_support.pyt_override_all_archss   cCs|jdd}tjd|}|dk r|jd}tjj|sx^tD]S}||krX|tj krX||}tj dd|}t |||qXqXWqn|S(s+Remove references to any SDKs not availableRR5s-isysroot\s+(\S+)is-isysroot\s+\S+(?:\s|$)RXN( RGR;R<RR>RRtexistsRbRRcRK(RDtcflagsR?tsdkRHRd((s$/usr/lib64/python2.7/_osx_support.pyt_check_for_unavailable_sdks    cCst}}t|}ts,t}}nd|k}d|k}|sYdtjkrxCtry!|jd}|||d5Wq\tk rPq\Xq\Wndtjkr| r|tjdj}n|rxCtry!|jd}|||d5Wqtk rPqXqWnd }d|krM|jd}||d}n,d|kry|jd}||d}n|rtj j | rddl m }|jd||jd n|S( se This function will strip '-isysroot PATH' and '-arch ARCH' from the compile flags if the user has specified one them in extra_compile_flags. This is needed because '-arch ARCH' adds another architecture to the build, without a way to remove an architecture. Furthermore GCC will barf if multiple '-isysroot' arguments are present. s-archs -isysrootRhiii(tlogs4Compiling with an SDK that doesn't seem to exist: %ss$Please check your Xcode installationN(RRRARTtTrueRRtindexRPRRRtisdirt distutilsRotwarn(t compiler_sotcc_argst stripArcht stripSysrootRqtsysroottidxRo((s$/usr/lib64/python2.7/_osx_support.pyR0sF               cCs.tst|nt|t||S(sCustomize Python build configuration variables. Called internally from sysconfig with a mutable mapping containing name/value pairs parsed from the configured makefile used to build this interpreter. Returns the mapping updated as needed to reflect the environment in which the interpreter is running; in the case of a Python from a binary installer, the installed environment may be very different from the build environment, i.e. different OS levels, different built tools, different available CPU architectures. This customization is performed whenever distutils.sysconfig.get_config_vars() is first called. It may be used in environments where no compilers are present, i.e. when installing pure Python dists. Customization of compiler paths and detection of unavailable archs is deferred until the first extension module build is requested (in distutils.sysconfig.customize_compiler). Currently called from distutils.sysconfig (RTReRjRn(RD((s$/usr/lib64/python2.7/_osx_support.pyRps     cCs"t|t|t||S(sCustomize compiler path and configuration variables. This customization is performed when the first extension module build is requested in distutils.sysconfig.customize_compiler). (RaRgRj(RD((s$/usr/lib64/python2.7/_osx_support.pyRs   cCs|jdd}tp|}|p*|}|r|}d}|jtd|jdd}|ry*td|jddd!D}Wqtk rd}qXnd}|dkrd |jkrd }tjd |}tt t |}t |dkr!|d}q|dkr6d }q|dkrKd}q|d kr`d}q|d!krud}q|d"krd}qtd|fq|dkrt j d#krd}qq|d$krt j d%krd}qd}qn|||fS(&s Filter values for get_platform()tMACOSX_DEPLOYMENT_TARGETR5tmacosxRcss|]}t|VqdS(N(RL(RMRN((s$/usr/lib64/python2.7/_osx_support.pys sR8iii is-archtfats -arch\s+(\S+)iti386tppctx86_64tinteltfat3tppc64tfat64t universals%Don't know machine value for archs=%ri tPowerPCtPower_Macintosh(i i(i i(i i(R~R(R~R(R~RR(RR(R~RRRI(RRI(RGR@RCRORRPR0R;tfindalltsortedtsettlenRtmaxint(RDtosnametreleasetmachinetmacvert macreleaseRltarchs((s$/usr/lib64/python2.7/_osx_support.pyRsP   *                  ( RRRRRR R R R R RR(RR R R (t__doc__RR;Rt__all__RbR\RCRR&R4R7R9R@RFRKRTRaReRgRjRnRRRR(((s$/usr/lib64/python2.7/_osx_support.pyts<            >  (   @ )