ó o®¸Qc@s¤ddlZddlZejdkrEd„Zd„Zd„Znejdkr`d„Znejdkršejd kršdd lmZ d „Znçejdkrddl Z ddl Z ddl Z d „Z ejd krñd„Zn d„Zejjdƒs0ejjdƒs0ejjdƒrEd„Zd„Zqejd krld„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!/sys/lib/python2.7/ctypes/util.pyt_get_build_version s    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!/sys/lib/python2.7/ctypes/util.pyt find_msvcrt s      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!/sys/lib/python2.7/ctypes/util.pyt find_library1s   tcecCs|S(N((R!((s!/sys/lib/python2.7/ctypes/util.pyR$Gstposixtdarwin(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!/sys/lib/python2.7/ctypes/util.pyR$Ls   c Csûdtj|ƒ}tjƒ\}}tj|ƒd|d|}z3tj|ƒ}z|jƒ}Wd|jƒ}XWdytj|ƒWn+t k r¸}|j t j kr¹‚q¹nXX|dkrÒt d‚ntj ||ƒ} | sîdS| jdƒS(Ns[^\(\)\s]*lib%s\.[^\(\)\s]*srif type gcc >/dev/null 2>&1; then CC=gcc; elif type cc >/dev/null 2>&1; then CC=cc;else exit 10; fi;$CC -Wl,-t -o s 2>&1 -li sgcc or cc command not foundi(tretescapettempfiletmkstempRtclosetpopentreadtunlinktOSErrorterrnotENOENTtsearchRtgroup( R!texprtfdouttccouttcmdtfttracetrvtetres((s!/sys/lib/python2.7/ctypes/util.pyt _findLib_gcc[s(    tsunos5cCsj|s dSd|}tj|ƒ}z|jƒ}Wd|jƒXtjd|ƒ}|s]dS|jdƒS(Ns#/usr/ccs/bin/dump -Lpv 2>/dev/null s\[.*\]\sSONAME\s+([^\s]+)i(RRR1R2R0R,R7R8(R=R<tdataRA((s!/sys/lib/python2.7/ctypes/util.pyt _get_sonamews  cCs©|s dSd|}tj|ƒ}|jƒ}|jƒ}|dkrStd‚ntj|ƒ}z|jƒ}Wd|jƒXtjd|ƒ}|sœdS|jdƒS(NsWif ! type objdump >/dev/null 2>&1; then exit 10; fi;objdump -p -j .dynamic 2>/dev/null i sobjdump command not founds\sSONAME\s+([^\s]+)i( RRR1R2R0R4R,R7R8(R=R<tdumpR?RDRA((s!/sys/lib/python2.7/ctypes/util.pyRE…s"     tfreebsdtopenbsdt dragonflycCsf|jdƒ}g}y-x&|r@|jdt|jƒƒƒqWWntk rUnX|petjgS(Nt.i(RtinsertRtpopR*Rtmaxint(tlibnametpartstnums((s!/sys/lib/python2.7/ctypes/util.pyt _num_versionžs $ cCstj|ƒ}d||f}tjdƒ}z|jƒ}Wd|jƒXtj||ƒ}|sttt|ƒƒS|j dd„ƒ|dS(Ns:-l%s\.\S+ => \S*/(lib%s\.\S+)s/sbin/ldconfig -r 2>/dev/nulltcmpcSstt|ƒt|ƒƒS(N(RRRQ(txty((s!/sys/lib/python2.7/ctypes/util.pyt´siÿÿÿÿ( R,R-RR1R2R0tfindallRERBtsort(R!tenameR9R=RDRA((s!/sys/lib/python2.7/ctypes/util.pyR$©s cCsÐtjjdƒsdS|r%d}nd}xKtj|ƒjƒD]4}|jƒ}|jdƒrA|jƒd}qAqAW|sƒdSxF|jdƒD]5}tjj |d|ƒ}tjj|ƒr“|Sq“WdS(Ns /usr/bin/crles*env LC_ALL=C /usr/bin/crle -64 2>/dev/nulls&env LC_ALL=C /usr/bin/crle 2>/dev/nullsDefault Library Path (ELF):it:slib%s.so( RRtexistsRR1t readlineststript startswithRR(R!tis64R<tlinetpathstdirtlibfile((s!/sys/lib/python2.7/ctypes/util.pyt _findLib_crle¹s   cCstt||ƒpt|ƒƒS(N(RERcRB(R!R^((s!/sys/lib/python2.7/ctypes/util.pyR$Ñsc Csöddl}|jdƒdkr8tjƒdd}ntjƒdd}idd6dd 6dd 6dd 6d d 6}|j|dƒ}dtj|ƒ|f}tjdƒ}z|jƒ}Wd|j ƒXtj ||ƒ}|sédS|j dƒS(Niÿÿÿÿtlis-32s-64s libc6,x86-64s x86_64-64s libc6,64bitsppc64-64s sparc64-64ss390x-64s libc6,IA-64sia64-64tlibc6s\s+(lib%s\.[^\s]+)\s+\(%ss/sbin/ldconfig -p 2>/dev/nulli( tstructtcalcsizeRtunametgetR,R-R1R2R0R7RR8( R!Rftmachinetmach_maptabi_typeR9R=RDRA((s!/sys/lib/python2.7/ctypes/util.pyt_findSoname_ldconfigÖs(   cCst|ƒptt|ƒƒS(N(RmRERB(R!((s!/sys/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( tctypesRnRR!RtloadR$Rtplatformt LoadLibrary(Rn((s!/sys/lib/python2.7/ctypes/util.pyttest÷s"   t__main__(RRR!RRR$Rstctypes.macholib.dyldR(R)R,R.R5RBRER]RQRctFalseRmRut__name__(((s!/sys/lib/python2.7/ctypes/util.pyts8     $