ó xFWgc@s°ddlZddlZddlZejdkrQd„Zd„Zd„Znejdkrld„Znejdkr¦ejd kr¦dd lm Z d „Znçejdkrddl Z ddl Z ddl Z d „Zejd krýd„Zn d„Zejjdƒs<ejjdƒs<ejjdƒrQd„Zd„Zqejd krxd„Zed„Zqd„Zd„Znd„Zedkr¬eƒndS(iÿÿÿÿNtntcCs¯d}tjj|ƒ}|dkr(dS|t|ƒ}tj|jddƒ\}}t|d ƒd}t|dd!ƒd }|dkr—d }n|dkr«||Sd S( sÏReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. sMSC v.iÿÿÿÿit iiþÿÿÿiig$@iN(tsystversiontfindtlentsplittinttNone(tprefixtitstrestt majorVersiont minorVersion((s!/usr/lib/python2.7/ctypes/util.pyt_get_build_versions    cCswtƒ}|dkrdS|dkr.d}nd|d}ddl}|jƒdddkro|d 7}n|d S( s%Return the name of the VC runtime dllitmsvcrtsmsvcr%di iÿÿÿÿNis_d.pydtds.dll(RRtimpt get_suffixes(RtclibnameR((s!/usr/lib/python2.7/ctypes/util.pyt find_msvcrts      cCs¡|dkrtƒSx‡tjdjtjƒD]l}tjj||ƒ}tjj|ƒr^|S|jƒj dƒryq-n|d}tjj|ƒr-|Sq-WdS(NtctmtPATHs.dll(RR( RtostenvironRtpathseptpathtjointisfiletlowertendswithR(tnamet directorytfname((s!/usr/lib/python2.7/ctypes/util.pyt find_library0s   tcecCs|S(N((R!((s!/usr/lib/python2.7/ctypes/util.pyR$Fstposixtdarwin(t dyld_findcCs[d|d|d||fg}x3|D]+}yt|ƒSWq(tk rRq(q(Xq(WdS(Ns lib%s.dylibs%s.dylibs%s.framework/%s(t _dyld_findt ValueErrorR(R!tpossible((s!/usr/lib/python2.7/ctypes/util.pyR$Ks   c CsÑdtj|ƒ}d}tjƒ}zCtj|d||jfdtdtjƒ}|j ƒ\}}Wdy|j ƒWn+t k r¦}|j t j kr§‚q§nXXtj||ƒ}|sÄdS|jdƒS(Ns[^\(\)\s]*lib%s\.[^\(\)\s]*sif type gcc >/dev/null 2>&1; then CC=gcc; elif type cc >/dev/null 2>&1; then CC=cc;else exit; fi;LANG=C LC_ALL=C $CC -Wl,-t -o "$2" 2>&1 -l"$1"t _findLib_gcctshelltstdouti(tretescapettempfiletNamedTemporaryFilet subprocesstPopenR!tTruetPIPEt communicatetclosetOSErrorterrnotENOENTtsearchRtgroup( R!texprtcmdttemptprocttracet_tetres((s!/usr/lib/python2.7/ctypes/util.pyR,Zs"   tsunos5c Cs¤|s dSttjdƒ}y8|,tjdd|fdtjd|ƒ}WdQXWntk rhdSX|jƒ\}}t j d|ƒ}|s—dS|j dƒS(Ntwbs/usr/ccs/bin/dumps-LpvR.tstderrs\[.*\]\sSONAME\s+([^\s]+)i( RtopenRtdevnullR3R4R6R9R7R/R<R=(tftnullRAtdataRCRE((s!/usr/lib/python2.7/ctypes/util.pyt _get_sonameys  cCsr|s dSd}tj|d|fdtdtjƒ}|jƒ\}}tjd|ƒ}|sedS|jdƒS(NsXif ! type objdump >/dev/null 2>&1; then exit; fi;objdump -p -j .dynamic 2>/dev/null "$1"RNR-R.s\sSONAME\s+([^\s]+)i( RR3R4R5R6R7R/R<R=(RKR?RAtdumpRCRE((s!/usr/lib/python2.7/ctypes/util.pyRN‹s tfreebsdtopenbsdt dragonflycCsf|jdƒ}g}y-x&|r@|jdt|jƒƒƒqWWntk rUnX|petjgS(Nt.i(RtinsertRtpopR*Rtmaxint(tlibnametpartstnums((s!/usr/lib/python2.7/ctypes/util.pyt _num_versions $ c CsÌtj|ƒ}d||f}ttjdƒ}y/|#tjd dtjd|ƒ}WdQXWntk ryd}nX|j ƒ\}}tj ||ƒ}|s´t t |ƒƒS|j dtƒ|d S( Ns:-l%s\.\S+ => \S*/(lib%s\.\S+)RGs/sbin/ldconfigs-rR.RHttkeyiÿÿÿÿ(s/sbin/ldconfigs-r(R/R0RIRRJR3R4R6R9R7tfindallRNR,tsortRZ(R!tenameR>RLRARMRCRE((s!/usr/lib/python2.7/ctypes/util.pyR$¨s     c Cs^tjjdƒsdSttjƒ}d|d<|r>d }nd}d}ttjdƒ}y5|)tj |dtj d|d|ƒ}WdQXWnt k r¥dSXzFx?|j D]4}|j ƒ}|jd ƒr³|jƒd }q³q³WWd|j jƒ|jƒX|sdSxF|jd ƒD]5}tjj|d |ƒ} tjj| ƒr!| Sq!WdS(Ns /usr/bin/crletCtLC_ALLs-64RGR.RHtenvsDefault Library Path (ELF):it:slib%s.so(s /usr/bin/crles-64(s /usr/bin/crle(RRtexistsRtdictRRIRJR3R4R6R9R.tstript startswithRR8twaitR( R!tis64RbtargstpathsRLRAtlinetdirtlibfile((s!/usr/lib/python2.7/ctypes/util.pyt _findLib_crle¿s>        cCstt||ƒpt|ƒƒS(N(RNRoR,(R!Ri((s!/usr/lib/python2.7/ctypes/util.pyR$èsc Cs{ddl}tjƒd}|jdƒr4d}n|jdƒdkrV|d}n |d}idd6d d 6d d 6d d 6d d6dd6}|j|dƒ}dtj|ƒ|f}ttj ƒ}d|dRbRLtpRMRCRE((s!/usr/lib/python2.7/ctypes/util.pyt_findSoname_ldconfigísB         cCst|ƒptt|ƒƒS(N(R|RNR,(R!((s!/usr/lib/python2.7/ctypes/util.pyR$scCsëddlm}tjdkrC|jGH|jdƒGHtdƒGHntjdkrçtdƒGHtdƒGHtdƒGHtjd kr½|j d ƒGH|j d ƒGH|j d ƒGH|j d ƒGHqç|j dƒGH|j dƒGHtdƒGHndS(Niÿÿÿÿ(tcdllRRR&RRtbz2R's libm.dylibslibcrypto.dylibslibSystem.dylibsSystem.framework/Systemslibm.sos libcrypt.sotcrypt( tctypesR}RR!RtloadR$Rtplatformt LoadLibrary(R}((s!/usr/lib/python2.7/ctypes/util.pyttest"s"   t__main__(RR3RR!RRR$R‚tctypes.macholib.dyldR(R)R/R1R:R,RNRgRZRotFalseR|R„t__name__(((s!/usr/lib/python2.7/ctypes/util.pyts<        $     ) /