ó
@K7]c           @` s•   d  d l  m Z m Z m Z d  d l Z d  d l m Z m Z d  d l Z d  d l	 m
 Z
 m Z d „  Z d e f d „  ƒ  YZ d „  Z d	 „  Z d S(
   i    (   t   absolute_importt   divisiont   print_functionN(   t   basenamet   normpath(   t   codect   filter_info_filesc         C` sB   |  j  d ƒ r |  d  S|  j  d ƒ r. |  d  St d |  ƒ ‚ d  S(   Ns   .tariüÿÿÿs   .tar.bz2iøÿÿÿs   did not expect filename: %r(   t   endswitht	   Exception(   t   fn(    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt   dist_fn
   s
    t   TarCheckc           B` sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s   t  j | ƒ |  _ t d „  |  j j ƒ  Dƒ ƒ |  _ t t | ƒ ƒ |  _ |  j j	 d d ƒ d j
 d d ƒ \ |  _ |  _ |  _ | |  _ d  S(   Nc         s` s   |  ] } | j  Vq d  S(   N(   t   path(   t   .0t   m(    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pys	   <genexpr>   s    s   ::i   iÿÿÿÿt   -i   (   t   tarfilet   opent   tt   sett
   getmemberst   pathsR
   R   t   distt   splitt   rsplitt   namet   versiont   buildt   config(   t   selfR   R   (    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt   __init__   s
    "7c         C` s   |  S(   N(    (   R   (    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt	   __enter__   s    c         C` s   |  j  j ƒ  d  S(   N(   R   t   close(   R   t   e_typet   e_valuet	   traceback(    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt   __exit__   s    c         C` sU  g  |  j  j d ƒ j ƒ  D]! } t | j ƒ  j d ƒ ƒ ^ q } t | ƒ } t | ƒ t | ƒ k rs t d ƒ ‚ n  g  |  j  j	 ƒ  D] } t | j
 ƒ ^ qƒ } t | d ƒ } t | ƒ } t | ƒ t | ƒ k rà t d ƒ ‚ n  | | k rð d  SxR t | | Bƒ D]@ } | | k r$t d | ƒ n  | | k rt d | ƒ qqWt d ƒ ‚ d  S(   Ns
   info/filess   utf-8s   info/files: duplicatest    s   info_files: duplicate memberss   %r not in info/filess   %r not in tarball(   R   t   extractfilet	   readlinesR   t   stript   decodeR   t   lenR   R   R   R   t   sortedt   print(   R   t   pt   listat   setaR   t   files_in_tart   setb(    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt
   info_files!   s$    =+c         C` sš   t  j |  j j d ƒ j ƒ  j d ƒ ƒ } xP d D]H } | | t |  | ƒ k r1 t d | | | t |  | ƒ f ƒ ‚ q1 q1 Wt | d t	 ƒ s– t
 ‚ d  S(   Ns   info/index.jsons   utf-8R   R   s   %s: %r != %rt   build_number(   R   R   (   t   jsont   loadsR   R&   t   readR)   t   getattrR   t
   isinstancet   intt   AssertionError(   R   t   infot   varname(    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt
   index_json7   s    *c         C` s¸   d  } d |  j j ƒ  k r´ |  j j d ƒ j ƒ  } x~ | D]s } y | j ƒ  \ } } } Wn t k
 ro q: n Xt | d ƒ r‘ | j t	 ƒ } n  | d k r: t
 | ƒ } Pq: q: Wn  | S(   Ns   info/has_prefixR)   t   binary(   t   NoneR   t   getnamesR&   R'   R   t
   ValueErrort   hasattrR)   R   R*   (   R   t   prefix_lengtht   prefix_filest   linet   prefixt	   file_typet   _(    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyRC   ?   s    c         C` su   t  j |  j j d ƒ j ƒ  j d ƒ ƒ } | d |  j j d |  j j g k sq t	 d j
 |  j j | d ƒ ƒ ‚ d  S(   Ns   info/index.jsons   utf-8t   subdirt   noarchsB   Inconsistent subdir in package - index.json expecting {0}, got {1}(   R4   R5   R   R&   R6   R)   R   t   host_subdirt   target_subdirR:   t   format(   R   R;   (    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt   correct_subdirP   s    *((	   t   __name__t
   __module__R   R   R$   R2   R=   RC   RN   (    (    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyR      s   						c         C` s>   t  |  | ƒ } | j ƒ  | j ƒ  | j ƒ  | j j ƒ  d  S(   N(   R   R2   R=   RN   R   R    (   R   R   t   x(    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt	   check_allW   s
    


c         C` sR   i  } xE |  D]= } t  | | ƒ j ƒ  } | r | | j k  r | | | <q q W| S(   N(   R   RC   (   t   filesR   t   lengthst   ft   length(    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt   check_prefix_lengths_   s    (   t
   __future__R    R   R   R4   t   os.pathR   R   R   t   conda_build.utilsR   R   R
   t   objectR   RR   RW   (    (    (    s3   lib/python2.7/site-packages/conda_build/tarcheck.pyt   <module>   s   		D	