ó őůPc@s†ddlZddlZejdkrEd„Zd„Zd„Znejdkr`d„Znejdkršejd kršdd lmZ d „ZnÉejdkrcddl Z ddl Z ddl Z d „Z ejd krńd„Zn d„Zejjdƒs0ejjdƒs0ejjdƒrEd„Zd„Zqcd„Zd„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..\python\lib\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..\python\lib\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..\python\lib\ctypes\util.pyt find_library1s   tcecCs|S(N((R!((s..\python\lib\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..\python\lib\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..\python\lib\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..\python\lib\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..\python\lib\ctypes\util.pyRE…s"     tfreebsdtopenbsdt dragonflycCsf|jdƒ}g}y-x&|r@|jdt|jƒƒƒqWWntk rUnX|petjgS(Nt.i(RtinsertRtpopR*Rtmaxint(tlibnametpartstnums((s..\python\lib\ctypes\util.pyt _num_versionžs $ cCstj|ƒ}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..\python\lib\ctypes\util.pyt´si˙˙˙˙( R,R-RR1R2R0tfindallRERBtsort(R!tenameR9R=RDRA((s..\python\lib\ctypes\util.pyR$Šs cCsždtj|ƒ}tjdƒ}z|jƒ}Wd|jƒXtj||ƒ}|sądtj}tj|ƒ}z|jƒ}Wd|jƒXtj||ƒ}|sądSn|j dƒS(Ns/[^\(\)\s]*lib%s\.[^\(\)\s]*s-LC_ALL=C LANG=C /sbin/ldconfig -p 2>/dev/nullsldd %s 2>/dev/nulli( R,R-RR1R2R0R7Rt executableRR8(R!R9R=RDRAR<((s..\python\lib\ctypes\util.pyt_findLib_ldconfigšs    c Csöddl}|jdƒdkr8tjƒdd}ntjƒdd}idd6dd 6dd 6dd 6d d 6}|j|dƒ}d|tj|ƒ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-64tlibc6sG(\S+)\s+\((%s(?:, OS ABI:[^\)]*)?)\)[^/]*(/[^\(\)\s]*lib%s\.[^\(\)\s]*)s/sbin/ldconfig -p 2>/dev/nulli( tstructtcalcsizeRtunametgetR,R-R1R2R0R7RR8( R!R]tmachinetmach_maptabi_typeR9R=RDRA((s..\python\lib\ctypes\util.pyt_findSoname_ldconfigĎs*   cCst|ƒptt|ƒƒS(N(RdRERB(R!((s..\python\lib\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( tctypesReRR!RtloadR$Rtplatformt LoadLibrary(Re((s..\python\lib\ctypes\util.pyttestńs"   t__main__(RRR!RRR$Rjtctypes.macholib.dyldR(R)R,R.R5RBREt startswithRQRZRdRlt__name__(((s..\python\lib\ctypes\util.pyts4     $