ó
b-äQc           @   s  d  d l  m Z y d  d l m Z Wn e k
 r= e Z n Xd  d l Z d  d l Z d  d l m	 Z	 d  d l
 m Z d  d l m Z d  d l m Z y d  d l m Z Wn> e k
 rê d  d l m Z e d	 ƒ [ d  d
 l m Z n Xd  d l m Z d  d l Te Z e Z d Z e j d k r/e Z nF e j d k ruy  d  d l m Z e Z e Z Wque k
 rqquXn  d „  Z  d e f d „  ƒ  YZ e s©e j d k rÓd d d d d d d d d d d „
 Z" n- d Z d d d d d d d d d d d „
 Z" d S(   iÿÿÿÿ(   t	   build_extN(   t	   copy_file(   t   Library(   t   new_compiler(   t   customize_compiler(   t   _CONFIG_VARS(   t   get_config_vart   LDSHARED(   t   _config_vars(   t   log(   t   *t   sharedt   darwint   nt(   t   RTLD_NOWc         C   s   t  r
 |  Sd S(   Nt    (   t	   have_rtld(   t   s(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyt   if_dl&   s    R    c           B   s–   e  Z d  „  Z d „  Z e e k	 r@ e e d ƒ r@ d „  Z n  d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z e d „ Z RS(   c         C   s@   |  j  d } |  _  t j |  ƒ | |  _  | r< |  j ƒ  n  d S(   s;   Build extensions in build directory, then copy if --inplacei    N(   t   inplacet
   _build_extt   runt   copy_extensions_to_source(   t   selft   old_inplace(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyR   1   s
    	c   
      C   sù   |  j  d ƒ } xã |  j D]Ø } |  j | j ƒ } |  j | ƒ } | j d ƒ } d j | d  ƒ } | j | ƒ } t j	 j | t j	 j
 | ƒ ƒ } t j	 j |  j | ƒ }	 t |	 | d |  j d |  j ƒ| j r |  j | pä t j | t ƒ q q Wd  S(   Nt   build_pyt   .iÿÿÿÿt   verboset   dry_run(   t   get_finalized_commandt
   extensionst   get_ext_fullnamet   namet   get_ext_filenamet   splitt   joint   get_package_dirt   ost   patht   basenamet	   build_libR   R   R   t   _needs_stubt
   write_stubt   curdirt   True(
   R   R   t   extt   fullnamet   filenamet   modpatht   packaget   package_dirt   dest_filenamet   src_filename(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyR   9   s    !
	t   pyrex_sourcesc         G   s+   t  j |  | ƒ p | } t j |  | | Œ S(   N(   R   t   swig_sourcest   _du_build_ext(   R   t   sourcest	   otherargs(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyR6   Q   s    c         C   s­   t  j |  | ƒ } | |  j k r© |  j | } t | t ƒ rh t j j | ƒ \ } } |  j j	 | t
 ƒ St r© | j r© t j j | ƒ \ } } t j j | d | ƒ Sn  | S(   Ns   dl-(   R   R!   t   ext_mapt
   isinstanceR   R%   R&   t   splitextt   shlib_compilert   library_filenamet   libtypet	   use_stubst   _links_to_dynamicR"   R#   (   R   R.   R/   R-   t   fnt   d(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyR!   Y   s    c         C   s,   t  j |  ƒ d  |  _ g  |  _ i  |  _ d  S(   N(   R   t   initialize_optionst   NoneR=   t   shlibsR:   (   R   (    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRD   e   s    		c         C   s¾  t  j |  ƒ |  j p g  |  _ |  j |  j ƒ g  |  j D] } t | t ƒ r9 | ^ q9 |  _ |  j rs |  j ƒ  n  x& |  j D] } |  j | j	 ƒ | _
 q} Wx|  j D]} | j
 } | |  j | <| |  j | j d ƒ d <|  j rô |  j | ƒ p÷ t } | _ | ot ot | t ƒ | _ |  j | ƒ } | _ t j j t j j |  j | ƒ ƒ } | r‚| | j k r‚| j j | ƒ n  | r¦ t r¦ t j | j k r¦ | j j t j ƒ q¦ q¦ Wd  S(   NR   iÿÿÿÿ(   R   t   finalize_optionsR   t   check_extensions_listR;   R   RF   t   setup_shlib_compilerR   R    t
   _full_nameR:   R"   t   links_to_dynamict   FalseRA   R@   R)   R!   t
   _file_nameR%   R&   t   dirnameR#   R(   t   library_dirst   appendR+   t   runtime_library_dirs(   R   R-   R.   t   ltdR/   t   libdir(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRG   k   s*    		%$c         C   sÉ  t  d |  j d |  j d |  j ƒ } |  _ t j d k r t j ƒ  } z, d t d <d t d <d	 t d
 <t	 | ƒ Wd  t j
 ƒ  t j | ƒ Xn
 t	 | ƒ |  j d  k	 r¼ | j |  j ƒ n  |  j d  k	 rø x* |  j D] \ } } | j | | ƒ qÕ Wn  |  j d  k	 r+x! |  j D] } | j | ƒ qWn  |  j d  k	 rM| j |  j ƒ n  |  j d  k	 ro| j |  j ƒ n  |  j d  k	 r‘| j |  j ƒ n  |  j d  k	 r³| j |  j ƒ n  t j | ƒ | _ d  S(   Nt   compilerR   t   forceR   s0   gcc -Wl,-x -dynamiclib -undefined dynamic_lookupR   s    -dynamiclibt   CCSHAREDs   .dylibt   SO(   R   RT   R   RU   R=   t   syst   platformR   t   copyR   t   cleart   updatet   include_dirsRE   t   set_include_dirst   definet   define_macrot   undeft   undefine_macrot	   librariest   set_librariesRO   t   set_library_dirst   rpatht   set_runtime_library_dirst   link_objectst   set_link_objectst   link_shared_objectt   __get__(   R   RT   t   tmpR    t   valuet   macro(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRI   ‡   s:    %




c         C   s&   t  | t ƒ r | j St j |  | ƒ S(   N(   R;   R   t   export_symbolsR   t   get_export_symbols(   R   R-   (    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRp   °   s    c         C   st   |  j  } zZ t | t ƒ r* |  j |  _  n  t j |  | ƒ | j rb |  j |  j d ƒ j	 | ƒ n  Wd  | |  _  Xd  S(   NR   (
   RT   R;   R   R=   R   t   build_extensionR)   R*   R   R(   (   R   R-   t	   _compiler(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRq   µ   s    		c         C   sz   t  j g  |  j D] } | j ^ q ƒ } d j | j j d ƒ d  d g ƒ } x% | j D] } | | | k rX t SqX Wt S(   s?   Return true if 'ext' links to a dynamic lib in the same packageR   iÿÿÿÿR   (	   t   dictt   fromkeysRF   RJ   R#   R"   Rc   R,   RL   (   R   R-   t   libt   libnamest   pkgt   libname(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRK   Â   s    (& c         C   s¥   t  j |  ƒ } |  j d ƒ j } x} |  j D]r } | j r+ t j j |  j	 | j
 j d ƒ Œ } | j | d ƒ | j | d ƒ | r | j | d ƒ q q+ q+ W| S(   NR   R   s   .pys   .pycs   .pyo(   R   t   get_outputsR   t   optimizeR   R)   R%   R&   R#   R(   RJ   R"   RP   (   R   t   outputsRz   R-   t   base(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRy   Í   s    	$c         C   s´  t  j d | j | ƒ t j j | | j j d ƒ Œ d } | rf t j j | ƒ rf t | d ƒ ‚ n  |  j	 st
 | d ƒ } | j d j d d d	 t d
 ƒ d t j j | j ƒ d d d t d ƒ d d d t d ƒ d d t d ƒ d d d g ƒ ƒ | j ƒ  n  | r°d d l m } | | g d d d t d |  j	 ƒ|  j d  ƒ j } | d k r| | g d | d t d |  j	 ƒn  t j j | ƒ r°|  j	 r°t j | ƒ q°n  d  S(!   Ns    writing stub loader for %s to %sR   s   .pys    already exists! Please delete.t   ws   
s   def __bootstrap__():s-      global __bootstrap__, __file__, __loader__s%      import sys, os, pkg_resources, imps   , dls:      __file__ = pkg_resources.resource_filename(__name__,%r)s      del __bootstrap__s       if '__loader__' in globals():s          del __loader__s#      old_flags = sys.getdlopenflags()s      old_dir = os.getcwd()s      try:s(        os.chdir(os.path.dirname(__file__))s$        sys.setdlopenflags(dl.RTLD_NOW)s(        imp.load_dynamic(__name__,__file__)s      finally:s"        sys.setdlopenflags(old_flags)s        os.chdir(old_dir)s   __bootstrap__()R   iÿÿÿÿ(   t   byte_compileRz   i    RU   R   t   install_lib(   R	   t   infoRJ   R%   R&   R#   R"   t   existst   DistutilsErrorR   t   opent   writeR   R'   RM   t   closet   distutils.utilR~   R,   R   Rz   t   unlink(   R   t
   output_dirR-   t   compilet	   stub_filet   fR~   Rz   (    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyR*   Ù   sJ    %				(   t   __name__t
   __module__R   R   R   R7   t   hasattrR6   R!   RD   RG   RI   Rp   Rq   RK   Ry   RL   R*   (    (    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyR    0   s   						)				i    c         C   s8   |  j  |  j | | | | | | | | |	 |
 | | ƒ d  S(   N(   t   linkt   SHARED_LIBRARY(   R   t   objectst   output_libnameRˆ   Rc   RO   RQ   Ro   t   debugt   extra_preargst   extra_postargst
   build_tempt   target_lang(    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRj     s
    t   staticc         C   sr   t  j j | ƒ \ } } t  j j | ƒ \ } } |  j d ƒ j d ƒ rU | d } n  |  j | | | | | ƒ d  S(   Nt   xRu   i   (   R%   R&   R"   R<   R>   t
   startswitht   create_static_lib(   R   R‘   R’   Rˆ   Rc   RO   RQ   Ro   R“   R”   R•   R–   R—   R/   R'   R-   (    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyRj     s    (#   t   distutils.command.build_extR    R7   t   Pyrex.Distutils.build_extR   t   ImportErrorR%   RX   t   distutils.file_utilR   t   setuptools.extensionR   t   distutils.ccompilerR   t   distutils.sysconfigR   t	   sysconfigR   R   R   t	   distutilsR	   t   distutils.errorsRL   R   R@   R?   RY   R,   R    t   dlR   R   RE   Rj   (    (    (    s@   /usr/lib/python2.7/site-packages/setuptools/command/build_ext.pyt   <module>   sT   


	
	
Ò					