Yf>+@sddlZddlZddlZddlZejdkrcddZddZddZejd kr~d dZejd krejd krdd l m Z ddZnejd krddl Z ddl Z ddZejdkr ddZn ddZejjd%rEddZddZnEejdkrrddZdddZndd Zd!dZd"d#Zed$kredS)&NntcCsd}tjj|}|d kr(dS|t|}tj|djdd\}}t|dd d}|dkr|d7}t|ddd }|dkrd }|dkr||SdS) zReturn 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. zMSC v.N  g$@r)sysversionfindlensplitint)prefixisrestZ majorVersionZ minorVersionr0/opt/alt/python35/lib64/python3.5/ctypes/util.py_get_build_version s %    rcCst}|dkrdS|dkr.d}n!|dkrKd|d}ndSddl}d|jjkrw|d 7}|d S) z%Return the name of the VC runtime dllNrmsvcrtrzmsvcr%d rz_d.pyddz.dll)rimportlib.machinery machineryEXTENSION_SUFFIXES)r Zclibname importlibrrr find_msvcrt"s       rcCs|dkrtSxtjdjtjD]i}tjj||}tjj|r^|S|jj drvq-|d}tjj|r-|Sq-WdS)NcmPATHz.dll)r r!) rosenvironrpathseppathjoinisfilelowerendswith)nameZ directoryZfnamerrr find_library7s   r,ZcecCs|S)Nr)r+rrrr,Msposixdarwin) dyld_findc Cs\d|d|d||fg}x4|D],}yt|SWq(tk rSw(Yq(Xq(WdS)Nz lib%s.dylibz%s.dylibz%s.framework/%s) _dyld_find ValueError)r+Zpossiblerrrr,Rs   c !CsStjdtj|}tjd}|s@tjd}|sJdStj}z|dd|jd|g}t tj }d|d \S*/(lib%s\.\S+)/sbin/ldconfig-rr6r7keyr)r^r_r )r:r;r#r9r@rArBrOrCr6rDfindallrRrNsortr]rH)r+ZenamerJrLrQrMrrrr,s     c Cs;tjjdsdSttj}d|d<|r>d }nd }d}y+tj|dtjdtjd|}Wnt k rdSYnX|MxE|j D]:}|j }|j drtj |jd }qWWdQRX|sdSxF|jd D]5}tjj|d |}tjj|r|SqWdS)N /usr/bin/crler3r4-64r6r7r8sDefault Library Path (ELF)::zlib%s.so)rdre)rd)r#r&existsr?r$r@rArBrOrCr6strip startswithrHrr') r+is64r8rKpathsrLlinedirZlibfilerrr _findLib_crles6         $roFcCstt||pt|S)N)rRrorN)r+rkrrrr,scCsBddl}|jddkr7tjjd}ntjjd}dddd d d d d d d i}|j|d}tjdtj||f}yt j ddgdt j dt j dt j dddddi>}tj ||jj}|r!tj|jdSWdQRXWntk r=YnXdS)Nrlrfz-32z-64z x86_64-64z libc6,x86-64zppc64-64z libc6,64bitz sparc64-64zs390x-64zia64-64z libc6,IA-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%sz/sbin/ldconfigz-pstdinr7r6r8r4r3r5r)structZcalcsizer#unamemachinegetr9r:r;r@rArOrBrGr6rDrHrIrC)r+rrrtZmach_mapZabi_typeZregexprMrrr_findSoname_ldconfigs.     ! rwcCst|ptt|S)N)rwrRrN)r+rrrr, scCs&ddlm}tjdkrOt|jt|jdttdtjdkr"ttdttdttdtj d krt|j d t|j d t|j d t|j d n6t|j dt|j dttddS)Nr)cdllrrr-r!r bz2r.z libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemzlibm.soz libcrypt.soZcrypt) Zctypesrxr#r+printrloadr,r platformZ LoadLibrary)rxrrrtest&s" r}__main__)rUrVrW)r#r<r@r r+rrr,r|Zctypes.macholib.dyldr/r0r:r>rNrRrjr]rorwr}__name__rrrrs:          +   $