ó
ã·sWc           @   s¤  d  d l  Z  d  d l Z e j d k rE d „  Z d „  Z d „  Z n  e j d k r` d „  Z n  e j d k rš e  j d	 k rš d  d
 l m Z	 d „  Z nç e j d k rd  d l
 Z
 d  d l Z d  d l Z d „  Z e  j d k rñ d „  Z n	 d „  Z e  j j d ƒ s0e  j j d ƒ s0e  j j d ƒ rEd „  Z d „  Z qe  j d k rld „  Z e d „ Z qd „  Z d „  Z n  d „  Z e d k r e ƒ  n  d S(   iÿÿÿÿNt   ntc          C   s¯   d }  t  j j |  ƒ } | d k r( d S| t |  ƒ } t  j | j d d ƒ \ } } t | d  ƒ d } t | d d !ƒ d	 } | d k r— d
 } n  | d k r« | | 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.
        s   MSC v.iÿÿÿÿi   t    i   iþÿÿÿi   i   g      $@i    N(   t   syst   versiont   findt   lent   splitt   intt   None(   t   prefixt   it   st   restt   majorVersiont   minorVersion(    (    s!   /usr/lib/python2.7/ctypes/util.pyt   _get_build_version	   s    	c          C   sw   t  ƒ  }  |  d k r d S|  d k r. d } n d |  d } d d l } | j ƒ  d d d k ro | d	 7} n  | d
 S(   s%   Return the name of the VC runtime dlli   t   msvcrts   msvcr%di
   iÿÿÿÿNi    s   _d.pydt   ds   .dll(   R   R   t   impt   get_suffixes(   R   t   clibnameR   (    (    s!   /usr/lib/python2.7/ctypes/util.pyt   find_msvcrt    s    		c         C   s¡   |  d k r t  ƒ  Sx‡ t j d j t j ƒ D]l } t j j | |  ƒ } t j j | ƒ r^ | S| j ƒ  j	 d ƒ ry q- n  | d } t j j | ƒ r- | Sq- Wd  S(   Nt   ct   mt   PATHs   .dll(   R   R   (   R   t   ost   environR   t   pathsept   patht   joint   isfilet   lowert   endswithR   (   t   namet	   directoryt   fname(    (    s!   /usr/lib/python2.7/ctypes/util.pyt   find_library1   s     
t   cec         C   s   |  S(   N(    (   R!   (    (    s!   /usr/lib/python2.7/ctypes/util.pyR$   G   s    t   posixt   darwin(   t	   dyld_findc         C   s[   d |  d |  d |  |  f g } x3 | D]+ }  y t  |  ƒ SWq( t k
 rR q( q( Xq( Wd  S(   Ns   lib%s.dylibs   %s.dylibs   %s.framework/%s(   t
   _dyld_findt
   ValueErrorR   (   R!   t   possible(    (    s!   /usr/lib/python2.7/ctypes/util.pyR$   L   s    c   
      C   sû   d t  j |  ƒ } t j ƒ  \ } } t j | ƒ d | d |  } z3 t j | ƒ } z | j ƒ  } Wd  | j ƒ  } XWd  y t j | ƒ Wn+ t	 k
 r¸ } | j
 t
 j k r¹ ‚  q¹ n XX| d k rÒ t	 d ‚ n  t  j | | ƒ }	 |	 sî d  S|	 j d ƒ 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 10; fi;LANG=C LC_ALL=C $CC -Wl,-t -o s    2>&1 -li
   s   gcc or cc command not foundi    (   t   ret   escapet   tempfilet   mkstempR   t   closet   popent   readt   unlinkt   OSErrort   errnot   ENOENTt   searchR   t   group(
   R!   t   exprt   fdoutt   ccoutt   cmdt   ft   tracet   rvt   et   res(    (    s!   /usr/lib/python2.7/ctypes/util.pyt   _findLib_gcc[   s(    t   sunos5c         C   sj   |  s
 d  Sd |  } t j | ƒ }  z |  j ƒ  } Wd  |  j ƒ  Xt j d | ƒ } | s] d  S| j d ƒ S(   Ns#   /usr/ccs/bin/dump -Lpv 2>/dev/null s   \[.*\]\sSONAME\s+([^\s]+)i   (   R   R   R1   R2   R0   R,   R7   R8   (   R=   R<   t   dataRA   (    (    s!   /usr/lib/python2.7/ctypes/util.pyt   _get_sonamew   s    
c         C   s©   |  s
 d  Sd |  } t j | ƒ }  |  j ƒ  } |  j ƒ  } | d k rS t d ‚ n  t j | ƒ }  z |  j ƒ  } Wd  |  j ƒ  Xt j d | ƒ } | sœ d  S| j d ƒ S(   NsW   if ! type objdump >/dev/null 2>&1; then exit 10; fi;objdump -p -j .dynamic 2>/dev/null i
   s   objdump command not founds   \sSONAME\s+([^\s]+)i   (	   R   R   R1   R2   R0   R4   R,   R7   R8   (   R=   R<   t   dumpR?   RD   RA   (    (    s!   /usr/lib/python2.7/ctypes/util.pyRE   …   s"    t   freebsdt   openbsdt	   dragonflyc         C   sf   |  j  d ƒ } g  } y- x& | r@ | j d t | j ƒ  ƒ ƒ q WWn t k
 rU n X| pe t j g S(   Nt   .i    (   R   t   insertR   t   popR*   R   t   maxint(   t   libnamet   partst   nums(    (    s!   /usr/lib/python2.7/ctypes/util.pyt   _num_versionž   s    	$c         C   s   t  j |  ƒ } d | | f } t j d ƒ } z | j ƒ  } Wd  | j ƒ  Xt  j | | ƒ } | st t t |  ƒ ƒ S| j	 d d „  ƒ | d S(   Ns   :-l%s\.\S+ => \S*/(lib%s\.\S+)s   /sbin/ldconfig -r 2>/dev/nullt   cmpc         S   s   t  t |  ƒ t | ƒ ƒ S(   N(   RR   RQ   (   t   xt   y(    (    s!   /usr/lib/python2.7/ctypes/util.pyt   <lambda>´   s    iÿÿÿÿ(
   R,   R-   R   R1   R2   R0   t   findallRE   RB   t   sort(   R!   t   enameR9   R=   RD   RA   (    (    s!   /usr/lib/python2.7/ctypes/util.pyR$   ©   s    c         C   sÐ   t  j j d ƒ s d  S| r% d } n d } xK t  j | ƒ j ƒ  D]4 } | j ƒ  } | j d ƒ rA | j ƒ  d } qA qA W| sƒ d  SxF | j d ƒ D]5 } t  j j	 | d |  ƒ } t  j j | ƒ r“ | Sq“ Wd  S(   Ns   /usr/bin/crles*   env LC_ALL=C /usr/bin/crle -64 2>/dev/nulls&   env LC_ALL=C /usr/bin/crle 2>/dev/nulls   Default Library Path (ELF):i   t   :s   lib%s.so(
   R   R   t   existsR   R1   t	   readlinest   stript
   startswithR   R   (   R!   t   is64R<   t   linet   pathst   dirt   libfile(    (    s!   /usr/lib/python2.7/ctypes/util.pyt   _findLib_crle¹   s     	c         C   s   t  t |  | ƒ p t |  ƒ ƒ S(   N(   RE   Rc   RB   (   R!   R^   (    (    s!   /usr/lib/python2.7/ctypes/util.pyR$   Ñ   s    c   
      C   s  d d  l  } t j ƒ  d } | j d ƒ r4 d } n  | j d ƒ d k rV | d } n
 | d } i d d 6d	 d
 6d	 d 6d	 d 6d d 6d d 6} | j | d ƒ } d t j |  ƒ | f } t j d ƒ } z | j	 ƒ  } Wd  | j
 ƒ  Xt j | | ƒ }	 |	 sd  S|	 j d ƒ S(   Niÿÿÿÿi   t   armt   ls   -32s   -64s   libc6,x86-64s	   x86_64-64s   libc6,64bits   ppc64-64s
   sparc64-64s   s390x-64s   libc6,IA-64s   ia64-64s   libc6(,hard-float)?s   arm-32t   libc6s   \s+(lib%s\.[^\s]+)\s+\(%ss   /sbin/ldconfig -p 2>/dev/nulli   (   t   structR   t   unameR]   t   calcsizet   getR,   R-   R1   R2   R0   R7   R   R8   (
   R!   Rg   Rh   t   machinet   mach_mapt   abi_typeR9   R=   RD   RA   (    (    s!   /usr/lib/python2.7/ctypes/util.pyt   _findSoname_ldconfigÖ   s0    	

c         C   s   t  |  ƒ p t t |  ƒ ƒ S(   N(   Rn   RE   RB   (   R!   (    (    s!   /usr/lib/python2.7/ctypes/util.pyR$   ü   s    c          C   së   d d l  m }  t j d k rC |  j GH|  j d ƒ GHt d ƒ GHn  t j d k rç t d ƒ GHt d ƒ GHt d ƒ GHt j d	 k r½ |  j	 d
 ƒ GH|  j	 d ƒ GH|  j	 d ƒ GH|  j	 d ƒ GHqç |  j	 d ƒ GH|  j	 d ƒ GHt d ƒ GHn  d  S(   Niÿÿÿÿ(   t   cdllR    R   R&   R   R   t   bz2R'   s
   libm.dylibs   libcrypto.dylibs   libSystem.dylibs   System.framework/Systems   libm.sos   libcrypt.sot   crypt(
   t   ctypesRo   R   R!   R   t   loadR$   R   t   platformt   LoadLibrary(   Ro   (    (    s!   /usr/lib/python2.7/ctypes/util.pyt   test  s"    t   __main__(   R   R   R!   R   R   R$   Rt   t   ctypes.macholib.dyldR(   R)   R,   R.   R5   RB   RE   R]   RQ   Rc   t   FalseRn   Rv   t   __name__(    (    (    s!   /usr/lib/python2.7/ctypes/util.pyt   <module>   s8   		$					&	