� {fc@s�ddlZddlZddlZejdkrQd�Zd�Zd�Znejdkrld�Znejdkr�ejd kr�dd lm Z d �Zn�ejdkr�ddl Z ddl Z ddl Z d �Zejd kr�d�Zn d�Zejjd�s<ejjd�s<ejjd�rQd�Zd�Zq�ejd krxd�Zed�Zq�d�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/lib64/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/lib64/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/lib64/python2.7/ctypes/util.pyt find_library0s   tcecCs|S(N((R!((s#/usr/lib64/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/lib64/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]*s�if 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/lib64/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/lib64/python2.7/ctypes/util.pyt _get_sonameys  cCs�|s dSd}tj|d|fdtdtj�}|j�\}}|jdkrhtjj |�St j d|�}|s�dS|j d�S(Ns[if ! type objdump >/dev/null 2>&1; then exit 10; fi;objdump -p -j .dynamic 2>/dev/null "$1"RNR-R.i s\sSONAME\s+([^\s]+)i( RR3R4R5R6R7t returncodeRRtbasenameR/R<R=(RKR?RAtdumpRCRE((s#/usr/lib64/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/lib64/python2.7/ctypes/util.pyt _num_version�s $ 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,tsortR\(R!tenameR>RLRARMRCRE((s#/usr/lib64/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!tis64RdtargstpathsRLRAtlinetdirtlibfile((s#/usr/lib64/python2.7/ctypes/util.pyt _findLib_crle�s>        cCstt||�pt|��S(N(RNRqR,(R!Rk((s#/usr/lib64/python2.7/ctypes/util.pyR$�sc Cs`ddl}|jd�dkr8tj�dd}ntj�dd}idd6dd 6dd 6dd 6d d 6}|j|d�}dtj|�|f}ttj�}d|dRdRLtpRMRCRE((s#/usr/lib64/python2.7/ctypes/util.pyt_findSoname_ldconfig�s:      cCst|�ptt|��S(N(R}RNR,(R!((s#/usr/lib64/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/lib64/python2.7/ctypes/util.pyttests"   t__main__(RR3RR!RRR$R�tctypes.macholib.dyldR(R)R/R1R:R,RNRiR\RqtFalseR}R�t__name__(((s#/usr/lib64/python2.7/ctypes/util.pyts<        $     ) $