ó
@K7]c           @` s,  d  d l  m Z m Z m Z d  d l m Z d  d l Z d  d l m Z d  d l	 m
 Z
 m Z m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z m Z d  d l m Z d  d l m Z m Z d  d	 l m Z m Z m Z m  Z  m! Z! m" Z" m# Z# d  d
 l$ m% Z% m& Z& m' Z' m( Z( m) Z) m* Z* d  d l$ m+ Z+ m, Z, d  d l$ m- Z- e- d „  ƒ Z. d „  Z/ d „  Z0 d d d „  ƒ  YZ1 e1 ƒ  Z2 d d e4 e5 d „ Z6 e5 d „ Z7 d „  Z8 d d „ Z9 d „  Z: d „  Z; e j< e5 e5 e5 d d d „ Z= e j< d d „ Z> d „  Z? d S(    i    (   t   absolute_importt   divisiont   print_function(   t   defaultdictN(   t
   itemgetter(   t   abspatht   joint   dirnamet   existst   basename(   t   get_linkagest   get_package_obj_filest   get_untracked_obj_files(   t   codefile_type(   t
   get_rpathst   human_filetype(   t   groupbyt   gettert
   comma_joint   rm_rft   package_has_filet
   get_loggert   ensure_list(   t	   iteritemst   specs_from_argst	   is_linkedt   linked_datat   linkedt	   get_index(   t   display_actionst   install_actions(   t   memoizedc         C` s*   t  |  | ƒ } | r# t | d ƒ St ƒ  S(   Nt   files(   R   t   set(   t   prefixt   distt   meta(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt
   dist_files   s    c         c` sG   x@ t  | ƒ D]2 } |  j t j d ƒ t | | ƒ k r | Vq q Wd S(   sž   
    given the path of a conda installed file iterate over
    the conda packages the file came from.  Usually the iteration yields
    only one package.
    t   /N(   R   t   replacet   ost   sepR%   (   t   in_prefix_pathR"   R#   (    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   which_package$   s    $c         C` s  d } t  | |  ƒ } xþ t | d t ƒD]ê } | | d 7} xÉ t | | d t d ƒ ƒD]« } xT t | ƒ D]F } | | k r„ ql n  | | d  k rš ql n  | d | | | f 7} ql Wt g  | D]( } | | d  k	 rÀ | | k rÀ | ^ qÀ ƒ d k rY | d 7} qY qY W| d 7} q( W| S(   Nt    t   keys   
t   filenames	     %s: %s
i   (   R   t   sortedt   strR   t   Nonet   len(   t   infoR-   t   output_stringt   gbt   headert   f_infot   datat   i(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   print_object_info/   s    #At   _untracked_packagec           B` s   e  Z d  „  Z RS(   c         C` s   d S(   Ns   <untracked>(    (   t   self(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   __str__B   s    (   t   __name__t
   __module__R=   (    (    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyR;   A   s   c   	   	   C` s   t  j d ƒ } z` t |  ƒ } t d | d | d | d | ƒ } t | | | d t d | ƒ} t | | ƒ | SWd  t | ƒ Xd  S(   Nt   condat   channel_urlst   prependt   platformR"   t   pinnedt   minimal_hint(	   t   tempfilet   mkdtempR   R   R   t   FalseR   R   R1   (	   t   packagesRC   RA   RB   RE   R"   t   specst   indext   actions(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   check_installI   s    	c         C` s\  i  } x? |  j  ƒ  D]1 \ } } t | d ƒ r: | j } n  | | | <q W| }  t t |  j ƒ  ƒ d d h ƒ } d |  j ƒ  k rˆ | n | d d g } d } x· | D]¯ } | d | 7} | rý xˆ t |  | ƒ D]& \ } }	 }
 | d | |	 |
 f 7} qÐ WnM xJ t t t t d d ƒ |  | ƒ ƒ ƒ D]  \ } }	 | d	 | |	 f 7} q&W| d
 7} q¥ W| S(   Nt	   dist_namet   systems	   not foundR,   s   %s:
s       %s (%s) from %s
i    i   s       %s (%s)
s   
(   t   itemst   hasattrRN   R/   R!   t   keyst   mapR   (   t   depmapt
   show_filest   dist_depmapt   kt   vt   all_depsR4   t   dept   libt   patht   binary(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   print_linkagesY   s$    "( 5c         C` s0  t  j j d ƒ r t | ƒ St  j j d ƒ r,| t |  ƒ k rS t t | |  ƒ ƒ Sd | k rî t t | |  ƒ ƒ } | s~ d Sxm | D]^ } | j d | ƒ } | j d t | t |  ƒ ƒ ƒ } t	 t t | | ƒ ƒ ƒ r… | } Pq… q… Wd Sn  | j d t | t |  ƒ ƒ ƒ } | j d ƒ r(t | ƒ Sd Sd  S(   Nt   linuxt   darwins   @rpaths   NO LC_RPATH FOUNDs   @loader_paths	   not foundR&   (
   t   sysRC   t
   startswithR   R	   R   R   R'   R   R   (   R]   R\   R"   t   rpathst   rpatht   path1(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   replace_pathq   s(    
!!
t   defaultsc      
   C` s  t  } t t ƒ } t j d ƒ } xéd d d d d g D]Ò} | j d | ƒ |  g } t d | d	 t d
 | ƒ } x•t | ƒ D]‡\ } } |  d k r´ | j	 d d ƒ d k r´ q~ n  | d }	 |	 d d h k rÖ q~ n  |	 j
 d ƒ rë q~ n  | d }
 | j |
 ƒ } d |
 k r| n t  s(t |
 ƒ ‚ | rVd | j d ƒ | j d ƒ f g } n g  } | d } | j d |	 | ƒ yA t |	 d | g | d | d	 t d
 | ƒ} | t | ƒ M} Wq~ t k
 rÐ‚  q~ t k
 r} t } | j d |	 | | | | ƒ q~ Xq~ Wq7 W| S(   Ns
   py(\d)(\d)s   osx-64s   linux-32s   linux-64s   win-32s   win-64s%   ######## Testing platform %s ########RA   RB   RC   Rg   t   schannelt   nameR@   s   conda-buildt   @t   buildt   pys   python=%s.%si   i   t   versions   Testing %s=%st   =s   FAIL: %s %s on %s with %s (%s)(   t   TrueR   R>   t   ret   compileR3   R   RH   R   t   gett   endswitht   searcht   AssertionErrort   groupRM   t   boolt   KeyboardInterruptt   BaseExceptiont   error(   t   channelt   successt   logt   has_pyRC   t   channelsRK   t   _t   recRi   Rk   t   matcht   additional_packagesRm   t   install_stepst   e(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   test_installableŠ   sF    	$

$(
	c         C` s&   t  |  ƒ } d „  t | ƒ Dƒ } | S(   Nc         S` s#   i  |  ] \ } } | | d  “ q S(   Ri   (    (   t   .0R#   R   (    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pys
   <dictcomp>¾   s   	 (   R   R   (   R"   t	   installed(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt
   _installed¼   s    c         C` s&   t  |  ƒ d d t t  |  ƒ ƒ d S(   Ns   
t   -s   

(   R0   R2   (   t   text(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   _underlined_textÂ   s    t   packageR,   c      	   C` s…  i  } t  | ƒ } |  r6 | r6 | r6 t d ƒ ‚ n  | rQ t | j ƒ  ƒ }  n  | rg |  j t ƒ n  xÄt |  ƒ D]¶}	 |	 t k r t }
 n0 |	 | k rµ t j d |	 | f ƒ n
 | |	 }
 t j	 j
 d ƒ sá t j d ƒ n  |
 t k rü t | ƒ } n t |
 | ƒ } t | | | ƒ } t t ƒ } | | |	 <g  | d <g  | d <xà| D]Ø} xÏ| | D]Ã\ } } | d d h k rt | | | ƒ n | } | j
 | ƒ rßt j d	 | d
 d | ƒ } t t | | ƒ ƒ } t | ƒ d k r)g  | D] } t | ƒ ^ qï} t t ƒ j d | t | ƒ ƒ n  | st | ƒ rl| d j | | j | d
 d ƒ d | f ƒ q| d j | | j | d
 d ƒ d | f ƒ n  x‚ | D]4 } | | j | | j | d
 d ƒ d | f ƒ q¤Wq_| d k r| d j | | | f ƒ q_| d j | | | f ƒ q_WqNWqt Wd } | d k r~x|  D]0 }	 | t |	 ƒ 7} | t | |	 d | ƒ7} qGWnâ | d k rPt d „  ƒ } xJ | D]B }	 x9 | |	 D]- } | |	 | r±| |	 | | | |	 <q±q±Wq Wt t | j ƒ  ƒ d d h ƒ } xU | d d g D]0 } | t | ƒ 7} | t | | d | ƒ7} qWn t d | ƒ ‚ t | d ƒ r| j  d ƒ } n  | S(   Ns=   At least one package or --untracked or --all must be provideds!   Package %s is not installed in %sR_   R`   sC   Error: conda inspect linkages is only implemented in Linux and OS Xs	   not foundRO   R,   t   ^R&   i   s,   Warning: %s comes from multiple packages: %st	   untrackediÿÿÿÿR   RU   t
   dependencyc           S` s
   t  t ƒ S(   N(   R   t   list(    (    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   <lambda>  R,   s   Unrecognized groupby: %st   decodes   utf-8(   R_   R`   (!   R‰   t
   ValueErrorR/   RR   t   appendt   untracked_packageR   Ra   t   exitRC   Rb   R   R   R
   R   R‘   Rf   Rp   t   subR+   R2   R0   R   R>   t   warnR   R   t   splitRŒ   R^   R!   RQ   R“   (   RI   R"   R   t   all_packagesRU   R   t   sysroott   pkgmapRˆ   t   pkgR#   t	   obj_filest   linkagesRT   R]   R[   R\   R*   t   depsRZ   t   deps_strt   dR4   t   inverted_mapRW   (    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   inspect_linkagesÆ   s„    	



$&!!"!c         C` sˆ  t  | ƒ } d } xNt |  ƒ D]@} | t k r: t } n/ | | k r_ t d | | f ƒ ‚ n
 | | } | t | ƒ 7} t j j d ƒ s› t j d ƒ n  | t k r¶ t	 | ƒ } n t
 | | ƒ } g  } x~ | D]v }	 i  }
 t | |	 ƒ } t | ƒ } | d k rÒ t | ƒ |
 d <d j t | ƒ ƒ |
 d <|	 |
 d	 <| j |
 ƒ qÒ qÒ W| t | | ƒ 7} q Wt | d
 ƒ r„| j d ƒ } n  | S(   NR,   s!   Package %s is not installed in %sR`   s8   Error: conda inspect objects is only implemented in OS Xt	   machofilet   filetypet   :Rd   R.   R“   s   utf-8(   R‰   R   R–   R”   RŒ   Ra   RC   Rb   R—   R   R   R   R   R   R   R•   R:   RQ   R“   (   RI   R"   R   Rˆ   R4   Rž   R#   RŸ   R3   t   fR7   R\   R§   (    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   inspect_objects  s8    	

c         C` sz   i  } xm t  |  ƒ D]_ } t j j | ƒ d  } i  | | <t | d ƒ } | rh t j | ƒ | | d <q d | | <q W| S(   Niøÿÿÿs   info/hash_input.jsont   recipes   <no hash_input.json in file>(   R   R(   R\   R	   R   t   jsont   loads(   RI   t   hash_inputsRž   t   pkgnamet
   hash_input(    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   get_hash_inputE  s    
(    (    (@   t
   __future__R    R   R   t   collectionsR   R¬   t   operatorR   t   os.pathR   R   R   R   R	   R(   Rp   Ra   RF   t   conda_build.os_utils.lddR
   R   R   t   conda_build.os_utils.lieflddR   t   conda_build.os_utils.machoR   R   t   conda_build.utilsR   R   R   R   R   R   R   t   conda_build.conda_interfaceR   R   R   R   R   R   R   R   R   R%   R+   R:   R;   R–   R1   Ro   RH   RM   R^   Rf   R†   R‰   RŒ   R"   R¥   Rª   R±   (    (    (    s6   lib/python2.7/site-packages/conda_build/inspect_pkg.pyt   <module>   s>   (4.					2			W'