ó
Ä´Zc           @   s|   d  d l  Z d  d l m Z m Z d  d l Z d  d l Z d  d l m Z e j	 j
 j
 Z d „  Z d e f d „  ƒ  YZ
 d S(   iÿÿÿÿN(   t   newert   newer_group(   t   sha1c         C   s   t  j j |  ƒ d | S(   Ni    (   t   ost   patht   splitext(   R   t
   new_suffix(    (    s+   lib/python2.7/site-packages/sipdistutils.pyt   replace_suffix   s    t	   build_extc           B   sÀ   e  Z d  Z e j Z g  e D] Z e d j d ƒ s e ^ q Z e d g 7Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z RS(   sW   Compile SIP descriptions, then build C/C++ extensions (compile/link to build directory)i    t   swigs	   sip-opts=s    list of sip command line optionsc         C   s   t  j |  ƒ d  |  _ d  S(   N(   t   build_ext_baset   initialize_optionst   Nonet   sip_opts(   t   self(    (    s+   lib/python2.7/site-packages/sipdistutils.pyR   *   s    c         C   sA   t  j |  ƒ |  j d  k r( g  |  _ n |  j j d ƒ |  _ d  S(   Nt    (   R
   t   finalize_optionsR   R   t   split(   R   (    (    s+   lib/python2.7/site-packages/sipdistutils.pyR   .   s    c         C   sž   x‡ t  | ƒ j ƒ  D]s } | j d d ƒ \ } } | j ƒ  d k r g  } x6 | j ƒ  D]( } | j t j j |  j ƒ  | ƒ ƒ qV W| Sq Wt	 d | ƒ ‚ d S(   s¨   
        Parse the sbf file specified to extract the name of the generated source
        files. Make them absolute assuming they reside in the temp directory.
        t   =i   t   sourcess   cannot parse SIP-generated '%s'N(
   t   opent	   readlinesR   t   stript   appendR   R   t   joint   _sip_output_dirt   RuntimeError(   R   t   sbft   Lt   keyt   valuet   outt   o(    (    s+   lib/python2.7/site-packages/sipdistutils.pyt   _get_sip_output_list5   s    &c         C   sa   d d  l  } | j ƒ  } t j d k rZ t j j t j j | j ƒ ƒ d sZ | j d Sn  | j S(   Niÿÿÿÿt   nti   s   .exe(   t	   sipconfigt   ConfigurationR   t   nameR   R   t   basenamet   sip_bin(   R   R#   t   cfg(    (    s+   lib/python2.7/site-packages/sipdistutils.pyt	   _find_sipD   s    %c         C   s   d d  l  } | j ƒ  } | j S(   Niÿÿÿÿ(   R#   R$   t   sip_inc_dir(   R   R#   R(   (    (    s+   lib/python2.7/site-packages/sipdistutils.pyt   _sip_inc_dirL   s    c         C   s   d d  l  } | j ƒ  } | j S(   Niÿÿÿÿ(   R#   R$   t   default_sip_dir(   R   R#   R(   (    (    s+   lib/python2.7/site-packages/sipdistutils.pyt   _sip_sipfiles_dirQ   s    c         C   s+   |  j  ƒ  } t t | d ƒ j ƒ  ƒ j ƒ  S(   Nt   rb(   R)   R   R   t   readt	   hexdigest(   R   R'   (    (    s+   lib/python2.7/site-packages/sipdistutils.pyt   _sip_calc_signatureV   s    c         C   s   t  j j |  j ƒ  d ƒ S(   Ns   sip.signature(   R   R   R   R   (   R   (    (    s+   lib/python2.7/site-packages/sipdistutils.pyt   _sip_signature_fileZ   s    c         C   s   |  j  S(   N(   t
   build_temp(   R   (    (    s+   lib/python2.7/site-packages/sipdistutils.pyR   ]   s    c         C   sÆ   |  j  } |  j  s© g  | j D] } | j d ƒ r | ^ q } | r© |  j ƒ  } t j j | ƒ sm t |  _  q¦ t | ƒ j	 ƒ  } |  j
 ƒ  } | | k r¦ t |  _  q¦ q© n  t j |  | ƒ | |  _  d  S(   Ns   .sip(   t   forceR   t   endswithR2   R   R   t   isfilet   TrueR   R/   R1   R
   t   build_extension(   R   t   extt   oldforcet   sourcet   sip_sourcest   sigfilet   old_sigt   new_sig(    (    s+   lib/python2.7/site-packages/sipdistutils.pyR8   `   s    		+c         C   s  |  j  s d  S| d  k	 rf t |  j ƒ d k rD |  j j | j ƒ n  | j j |  j ƒ  ƒ | j	 } n |  j j |  j ƒ  ƒ g  } g  | D]( } t
 j j | ƒ d d k r‰ | ^ q‰ } t
 j j |  j ƒ  ƒ så t
 j |  j ƒ  ƒ n  g  } g  | D] } | j d ƒ rò | ^ qò } g  | D] } | j d ƒ s| ^ q} g  } |  j ƒ  }	 x· | D]¯ }
 t
 j j |
 ƒ } t
 j j |  j ƒ  t | d ƒ ƒ } t |
 g | | ƒ s¯|  j rç|  j |	 |
 | ƒ t |  j ƒ  d ƒ j |  j ƒ  ƒ n  |  j | ƒ } | j | ƒ qTW| | S(   Ni    i   s   .sips   .sbft   w(   t
   extensionsR   t   lenR   t   extendt	   swig_optst   include_dirsR   R+   t   dependsR   R   R   t   isdirR   t   makedirsR5   R)   R&   R   R   R   R4   t   _sip_compileR   R2   t   writeR1   R!   (   R   R   t	   extensionRF   t   fR<   R;   t   other_sourcest   generated_sourcesR'   t   sipt   sipbasenameR   R   (    (    s+   lib/python2.7/site-packages/sipdistutils.pyt   swig_sourcess   s4    	5(($%c      	   C   s@   |  j  | g |  j d |  j ƒ  d | d |  j ƒ  | g ƒ d  S(   Ns   -cs   -bs   -I(   t   spawnR   R   R-   (   R   R'   R;   R   (    (    s+   lib/python2.7/site-packages/sipdistutils.pyRI   ¢   s
    N(   s	   sip-opts=Ns    list of sip command line options(   t   __name__t
   __module__t   descriptionR
   t   user_optionst   optt
   startswithR   R   R   R!   R)   R+   R-   R1   R2   R   R8   RQ   RI   (    (    (    s+   lib/python2.7/site-packages/sipdistutils.pyR      s$   
, 
										/(   t   distutils.command.build_extt	   distutilst   distutils.dep_utilR    R   R   t   syst   hashlibR   t   commandR   R
   R   (    (    (    s+   lib/python2.7/site-packages/sipdistutils.pyt   <module>   s   	