ó
¹å½\c           @   s  d  d l  Z  d  d l Z d d l m Z d d d d d g Z d d	 „ Z d
 d d „ Z d
 d d „ Z y d  d l	 m
 Z
 Wn e k
 r— d „  Z
 n Xd „  Z y e e f Z d  d l Z Wn# e k
 râ e Z d  d l Z n Xd „  Z d „  Z d „  Z d S(   iÿÿÿÿNi   (   t   VerificationErrort   sourcest   include_dirst   library_dirst   extra_objectst   dependsc         K   s`   t  ƒ  d d l m } |  g } x' | D] } | j t j j | ƒ ƒ q' W| d | d | |  S(   Niÿÿÿÿ(   t	   Extensiont   nameR   (   t   _hack_at_distutilst   distutils.coreR   t   appendt   ost   patht   normpath(   t   srcfilenamet   modnameR   t   kwdsR   t
   allsourcest   src(    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyt   get_extension   s    	i    c         C   sŽ   t  ƒ  t j j ƒ  } z+ t |  | | | ƒ } t j j | ƒ } Wd xB | j ƒ  D]4 \ } } t j j | ƒ | k rQ | t j | <qQ qQ WX| S(   s-   Compile a C extension module using distutils.N(	   R   R   t   environt   copyt   _buildR   t   abspatht   itemst   get(   t   tmpdirt   extt   compiler_verboset   debugt   saved_environt   outputfilenamet   keyt   value(    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyt   compile   s    c         C   si  d d l  m } d d  l } d d  l } | i | g d 6ƒ } | j ƒ  | j d ƒ } | d  k rr t j j	 } n  d | f | d <d t
 f | d <d |  f | d <d |  f | d	 <yo | j j d
 ƒ pÊ d
 } z? | j j | ƒ | j d ƒ | j d ƒ }	 |	 j ƒ  \ }
 Wd  | j j | ƒ XWnA | j j | j j f k
 rd} t d | j j | f ƒ ‚ n X|
 S(   Niÿÿÿÿ(   t   Distributiont   ext_modulest	   build_extt   ffiplatformR   t   forcet	   build_libt
   build_tempi    s   %s: %s(   R	   R#   t   distutils.errorst   distutils.logt   parse_config_filest   get_option_dictt   Nonet   syst   flagsR   t   Truet   logt   set_thresholdt   set_verbosityt   run_commandt   get_command_objt   get_outputst   errorst   CompileErrort	   LinkErrorR    t	   __class__t   __name__(   R   R   R   R   R#   t	   distutilst   distt   optionst	   old_levelt   cmd_objt   sonamet   e(    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyR       s.    

 (   t   samefilec         C   s"   t  j j |  ƒ t  j j | ƒ k S(   N(   R   R   R   (   t   f1t   f2(    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyRD   A   s    c         C   s¹   t  j j |  ƒ s |  S|  } g  } x t r´ | } t  j j | ƒ \ } } | | k s\ | r` |  S| j | ƒ y0 t | t  j ƒ rœ | j ƒ  t  j j	 | Œ  SWq% t
 k
 r° q% Xq% Wd  S(   N(   R   R   t   isabsR1   t   splitR
   RD   t   curdirt   reverset   joint   OSError(   R   t   dirt   namest   prevdirR   (    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyt   maybe_relative_pathD   s     	
c         C   s#  t  |  t ƒ r/ | j d t |  ƒ |  f ƒ nð t  |  t ƒ r™ t |  j ƒ  ƒ } | j d t | ƒ ƒ xµ | D]$ } t | | ƒ t |  | | ƒ qn Wn† t  |  t t	 f ƒ ræ | j d t |  ƒ ƒ xW |  D] } t | | ƒ qÌ Wn9 t  |  t
 ƒ r| j d |  f ƒ n t d |  f ƒ ‚ d  S(   Ns   %ds%ss   %dds   %dls   %dis7   the keywords to verify() contains unsupported object %r(   t
   isinstancet   strt   writet   lent   dictt   sortedt   keyst   _flattent   listt   tuplet   int_or_longt	   TypeError(   t   xt   fRW   R    R!   (    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyRX   _   s      c         C   s#   t  j ƒ  } t |  | ƒ | j ƒ  S(   N(   t	   cStringIOt   StringIORX   t   getvalue(   R]   R^   (    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyt   flattenr   s    c          C   s:   t  j d k r6 y d d  l }  Wq6 t k
 r2 q6 Xn  d  S(   Nt   win32iÿÿÿÿ(   R/   t   platformt
   setuptoolst   ImportError(   Re   (    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyR   w   s
    (    (   R/   R   t   errorR    t   LIST_OF_FILE_NAMESR   R.   R"   R   t   os.pathRD   Rf   RP   t   intt   longR[   R_   t	   NameErrort   ioRX   Rb   R   (    (    (    s/   lib/python2.7/site-packages/cffi/ffiplatform.pyt   <module>   s(   				