
ȔMc           @   s  d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d l	 Td  d l
 m Z d  d l Td  d l Z d  d l Z d  d l Z d  d l m Z d  d l Z y d  d l Z Wn e k
 r d Z n Xd	 Z d
 Z d Z d Z d Z d Z d Z d Z d Z d Z d d g Z d   Z  d e f d     YZ! d e f d     YZ" d e" f d     YZ# d e# f d     YZ$ d e# f d     YZ% d  e" f d!     YZ& d" e" f d#     YZ' d$ e f d%     YZ( d&   Z) e* j+ d' e)  d(   Z, e* j+ d) e,  d S(*   i(   t	   splitarch(   t   globdistance(   t   Loadert   PackageInfo(   t   FileChannel(   t   *(   t   ProgressN(   t   datetimei@B iAB iEB iFB iJB iKB iTB iUB iVB iWB t   utf8s
   iso-8859-1c         C   s   |  t  j } | r |  t  j r |  t  j } t |  t k rL | g } n  |  t  j } t |  t k rw | g } n  |  t  j } t |  t k r | g } n  g  t |  D] \ } } | | | | ^ q } n t |  t k r | g } n  | S(   N(   t   rpmt   RPMTAG_OLDFILENAMESt   RPMTAG_BASENAMESt   RPMTAG_DIRINDEXESt   typet   listt   RPMTAG_DIRNAMESt	   enumerate(   t   headert	   filenamest
   dirindexest   dirnamest	   basenamest   it   basename(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   get_header_filenames9   s     1t   RPMHeaderPackageInfoc           B   s   e  Z d  e f d     YZ e   Z d d  Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   t
   LazyHeaderc           B   s   e  Z d    Z RS(   c         C   s   | j  j | j  | _ | j S(   N(   t   _loadert	   getHeadert   _packaget   _h(   t   selft   objR   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   __get__O   s    (   t   __name__t
   __module__R!   (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR   N   s   i    c         C   s2   t  j |  | |  | |  _ d  |  _ d  |  _ d  S(   N(   R   t   __init__R   t   Nonet   _patht   _change(   R   t   packaget   loadert   order(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR$   U   s    		c         C   s!   |  j  t j } | r | g Sg  S(   N(   R   R	   t
   RPMTAG_URL(   R   t   url(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getReferenceURLs[   s    c         C   s;   |  j  j   } | r7 t j j | |  j  j |    g Sg  S(   N(   R   t   getURLt   ost   patht   joint   getFileName(   R   R,   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getURLsa   s    "c         C   s   |  j  j |   S(   N(   R   t   getSize(   R   R,   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR4   g   s    c         C   s   |  j  j |   S(   N(   R   t   getMD5(   R   R,   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR5   j   s    c         C   s   |  j  t j S(   N(   R   R	   t   RPMTAG_BUILDTIME(   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getBuildTimem   s    c         C   s   |  j  t j S(   N(   R   R	   t   RPMTAG_SIZE(   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getInstalledSizep   s    c         C   s   |  j  r |  j  | p d } | r t |  t k rA | d } n  x< t D]1 } y | j |  } Wn t k
 rw qH n XPqH Wn  | S(   Nu    i    (   R   R   R   t	   ENCODINGSt   decodet   UnicodeDecodeError(   R   t   tagt   resultt   encoding(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   _getHeaderStrings   s    c      	   C   s   |  j  r |  j  | p g  } | r t |  t k r@ | g } n  xz t t |   D]c } t | |  t k rS xD t D]9 } y | | j |  | | <Wn t k
 r qv n XPqv WqS qS Wn  | S(   N(	   R   R   R   t   ranget   lent   strR:   R;   R<   (   R   R=   R>   R   R?   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   _getHeaderArray   s    c         C   s   |  j  t j  S(   N(   R@   R	   t   RPMTAG_DESCRIPTION(   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getDescription   s    c         C   s   |  j  t j  S(   N(   R@   R	   t   RPMTAG_SUMMARY(   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt
   getSummary   s    c         C   sF   |  j  t j  } | j d d  } | j d d  } | j d d  S(   Ns   .srct    s   .nosrcs   .rpm(   R@   R	   t   RPMTAG_SOURCERPMt   replace(   R   t	   sourcerpm(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt	   getSource   s    c         C   s[   |  j  j |  j  } x? t D]1 } y | j |  } Wn t k
 rK q n XPq Wd } | S(   NRI   (   R   t   getGroupR   R:   R;   R<   (   R   t   sR?   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyRN      s    c         C   s   |  j  t j  S(   N(   R@   R	   t   RPMTAG_LICENSE(   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt
   getLicense   s    c         C   s   |  j  d  k r |  j t j  } g  |  _  t |  d k r |  j t j  } |  j t j  } xg t t |   D]P } |  j  j	 t
 j | |  j d  d | |  |  j  j	 d | |  qs Wq n  |  j  S(   Ni    s   %Y-%m-%ds     (   R'   R%   RD   R	   t   RPMTAG_CHANGELOGTIMERB   t   RPMTAG_CHANGELOGNAMEt   RPMTAG_CHANGELOGTEXTRA   t   appendR   t   fromtimestampt   strftime(   R   t   logtimet   lognamet   changeR   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getChangeLog   s    	2"c         C   s   |  j  d  k r t |  j  } |  j t j } | r t |  t k rR | g } n  i  |  _  xG t t	 |   D] } | | |  j  | | <qn Wq t
 j | d  |  _  n  |  j  j   S(   Ni    (   R&   R%   R   R   R	   t   RPMTAG_FILEMODESR   R   RA   RB   t   dictt   fromkeyst   keys(   R   t   pathst   modesR   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getPathList   s    	c         C   s   t  j |  j |  S(   N(   t   statt   S_ISDIRR&   (   R   R0   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt	   pathIsDir   s    c         C   s   t  j |  j |  S(   N(   Rc   t   S_ISLNKR&   (   R   R0   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt
   pathIsLink   s    c         C   s   t  j |  j |  S(   N(   Rc   t   S_ISREGR&   (   R   R0   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt
   pathIsFile   s    c         C   s9   |  j  | } t j |  p7 t j |  p7 t j |  S(   N(   R&   Rc   Rd   Rf   Rh   (   R   R0   t   mode(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   pathIsSpecial   s    (   R"   R#   t   objectR   R   R$   R-   R3   R4   R5   R7   R9   R@   RD   RF   RH   RM   RN   RQ   R[   Rb   Re   Rg   Ri   Rk   (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR   L   s,   																			t   RPMHeaderLoaderc           B   s   e  Z e j d  Z e j e j Be j BZ i d e j 6d e j 6d e j 6d e j e j B6d e j e j B6Z	 d   Z
 d   Z d   Z d	   Z d
   Z d   Z d   Z RS(   i   t   =t   <t   >s   <=s   >=c         C   s,   t  j |   d |  _ i  |  _ i  |  _ d  S(   Ni    (   R   R$   t
   _infoordert   _offsetst   _groups(   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR$      s    		c         C   s   g  S(   N(    (   R   t   prog(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt
   getHeaders   s    c         C   s   t  | |  |  j  S(   N(   R   Rq   (   R   t   pkg(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getInfo   s    c         C   s   |  j  | S(   N(   Rs   (   R   Rv   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyRN      s    c         C   s+   t  j |   |  j j   |  j j   d  S(   N(   R   t   resetRr   t   clearRs   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyRx      s    c   !      C   s  |  j  } |  j } t } t } t } t } t } t } t }	 t	 j
 |  j  }
 x~|  j |
  D]m\ } } | d rz q^ n  | d } t j |  d k r q^ n  | d } | d } | r | d k r d | | d | d	 f } n d
 | d | d	 f } d | | f } | d } | d } i  } x t t |   D] } | | } | j d  s8| | } | r| d  d k r| d } n  | | k r| | k rt | | t |  | f <qt | | t |  | pd  f <q8q8W| j   } | d } | rR| d } | d } | d  k r&d g } n t |  t k rD| g } n  i  } x t t |   D] } | | } | d  d k r]| | pd  } | r| d  d k r| d } n  | j | | | @ } | d  k sd | k r| | | f | k pt j | | |  s?t | | | d @r#| p&| t |  | | f <q?q]q]W| j   } n d  } | d } | r9| d } | d } | d  k rd g } n t |  t k r| g } n  g  } x t t |   D]g } | | pd  } | r| d  d k r| d } n  | j |	 | | | j | | | @ | f  qWn g  } | | d | f } | d } | rj| d } | d } | d  k rd g } n t |  t k r| g } n  g  } x t t |   D] } y | | pd  } Wn t k
 rd  } n X| r| d  d k r| d } n  | j | | | | j | | | @ | f  qW| j |  | j |  n	 | g } |  j | | | f | | | |  }  | |  j |  <|  |  j  | <t | t j!  |  j" |  <q^ Wd  S(    NiR  i  i    i  i  t   0s   %s:%s-%si  i  s   %s-%ss   %s@%si  iY  s   config(i   s   0:i  i  i  i   s   rpmlib(Rn   i@  i  i  i  Ro   iB  iZ  i[  (   s   rpmlib(s   config((#   t   COMPMAPt	   COMPFLAGSt
   RPMPackaget   RPMProvidest   RPMNameProvidest   RPMPreRequirest   RPMRequirest   RPMObsoletest   RPMConflictst   ifacet   getProgresst   _cacheRu   R	   t	   archscoreRA   RB   t
   startswitht   Truet   internR%   R_   R   R   t   gett   system_providest   matchRU   t	   TypeErrort   extendt   buildPackaget   loadersRr   t   RPMTAG_GROUPRs   (!   R   t   CMt   CFt   Pkgt   Prvt   NPrvt   PreReqt   Reqt   Obst   CnfRt   t   ht   offsett   archt   namet   epocht   versiont   versionarcht   nt   vt   prvdictR   t   nit   vit   prvargst   ft   reqdictt   rt   reqargst   cnfargst   obstupt   upgargsRv   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   load   s    		







&



:


5


2	c         C   s  | j  } x|  j t    D]\ } } |  j j |  } | sF q n  d } | j r | t j } | r xZ | j D]L \ } }	 t | | |	 |  \ }
 } | | k rr | } | d k r Pq qr qr Wq n  | d k r | j	 | |  q n  | j
 rzt |  } | rzxo | j
 D]a \ } }	 xQ | D]F } t | | |	 |  \ }
 } | | k r"| } | d k rhPqhq"q"WqPqWqzn  | d k r| j	 | |  q n  | j r|  j | } x- | j D] } | j |  rd } PqqWn  | d k r| j	 | |  q n  | j rJ| t j } x- | j D] } | j |  r$d } Pq$q$Wn  | d k rl| j	 | |  q n  | j r| t j } x- | j D] } | j |  rd } PqqWn  | r | j	 | |  q q Wd  S(   Ni    i   (   t
   ignorecaseRu   R   Rr   R   R,   R	   R+   R   t	   addResultR0   R   t   groupRs   t   searcht   summaryRG   t   descriptionRE   (   R   t   searchert   icR   R   Rv   t   ratiot   refurlR,   t   cutofft   _t   newratioR`   t   spathR0   R   t   patR   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR   m  sv    						(   R"   R#   R   t   __stateversion__R	   t   RPMSENSE_EQUALt   RPMSENSE_GREATERt   RPMSENSE_LESSR|   R{   R$   Ru   Rw   RN   Rx   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyRm      s   

						yt   RPMHeaderListLoaderc           B   s   e  Z d d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z RS(   c         C   s6   t  j |   | |  _ | |  _ | |  _ |  j   d  S(   N(   Rm   R$   t	   _filenamet   _baseurlt   _countt	   _checkRPM(   R   t   filenamet   baseurlt   count(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR$     s
    			c         C   s)   t  j |   } d | k r% | d =n  | S(   Nt   _hdl(   Rm   t   __getstate__(   R   t   state(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    
c         C   s   t  j |  |  |  j   d  S(   N(   Rm   t   __setstate__R   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    c         C   s   t  t d  s t  |  j d  r| t j d d  d k  r| t |  j _ t j d t j d d  d  t j	 t
 d   n  |  j j |  j _ |  j j |  j _ |  j j |  j _ t j |  j  |  _ n  d  S(   Nt   readHeaderFromFDt   WARNEDs   no-rpm-readHeaderFromFDi    i   i   si   Your rpm module has no support for readHeaderFromFD()!
As a consequence, Smart will consume extra memory.(   t   hasattrR	   t	   __class__t   sysconfR   R   R   t   setR   t   warningR   t   getHeadersHDLt   im_funcRu   t   getHeaderHDLR   t   loadFileProvidesHDLt   loadFileProvidest   readHeaderListFromFileR   R   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    	c         C   sU   |  j  d  k rN t t d  r5 t j j |  j  d St t j	 |  j   Sn  |  j  S(   NR   i	  (
   R   R%   R   R	   R/   R0   t   getsizeR   RB   R   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   getLoadSteps  s
    c         c   s  t  |  j  } d } } t j | j    \ } } |  j r x | r | | f Vt j | j    \ } } | r@ | j d  | j   q@ q@ Wnv xs | r| | f Vt j | j    \ } } | r t | | | d  \ } } | } | j |  | j   q q W| j	   d  S(   Ni    i   i	  (
   t   openR   R	   R   t   filenoR   t   addt   showt   divmodt   close(   R   Rt   t   filet
   lastoffsett   modR   R   t   div(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyRu     s&    
			c         c   sF   x? t  |  j  D]. \ } } | | f V| j d  | j   q Wd  S(   Ni   (   R   R   R   R   (   R   Rt   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    c         C   sL   t  |  j  } | j | j |   t j | j    \ } } | j   | S(   N(   R   R   t   seekR   R	   R   R   R   (   R   Rv   R   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s
    
c         C   s   |  j  | j |  S(   N(   R   R   (   R   Rv   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    c         C   s   |  j  S(   N(   R   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR.     s    c         C   s9   | j  } d | t j | t j | t j | t j f S(   Ns   %s-%s-%s.%s.rpm(   R   R	   t   RPMTAG_NAMEt   RPMTAG_VERSIONt   RPMTAG_RELEASEt   RPMTAG_ARCH(   R   t   infoR   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR2     s
    	

c         C   s   d  S(   N(   R%   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR4     s    c         C   s   d  S(   N(   R%   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR5     s    c         C   s   t  |  j  } t j | j    \ } } |  j } x | r xX t |  D]J } | j |  } | rI | |  j k rI | |  j | t	 | d  f  qI qI Wt j | j    \ } } q6 W| j   d  S(   N(   R   R   R	   R   R   t   buildFileProvidesR   R   Rr   R~   R%   R   (   R   t   fndictR   R   R   t   bfpt   fn(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    		$c         C   s   |  j  } xx t |  j  D]g \ } } xX t |  D]J } | j |  } | r2 | |  j k r2 | |  j | t | d  f  q2 q2 Wq Wd  S(   N(   R   R   R   R   R   Rr   R~   R%   (   R   R   R   R   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    	N(   R"   R#   R%   R$   R   R   R   R   Ru   R   R   R   R.   R2   R4   R5   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s   													t   RPMPackageListLoaderc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   sW   | j  } | t } | s+ t t d   n  | t } | rS t j j | |  } n  | S(   Ns)   Package list with no CRPMTAG_FILENAME tag(   R   t   CRPMTAG_FILENAMEt   ErrorR   t   CRPMTAG_DIRECTORYR/   R0   R1   (   R   R   R   R   t	   directory(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR2   (  s    	

c         C   s   | j  t S(   N(   R   t   CRPMTAG_FILESIZE(   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR4   2  s    c         C   s   | j  t S(   N(   R   t   CRPMTAG_MD5(   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR5   5  s    (   R"   R#   R2   R4   R5   (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR   &  s   	
	t   URPMILoaderc           B   s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s)   t  j |  | |  i  |  _ d  |  _ d  S(   N(   R   R$   t   _prefixR%   t	   _flagdict(   R   R   R   t   listfile(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR$   :  s    	c         C   s   | |  _  d  S(   N(   R   (   R   t   flagdict(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   setErrataFlags?  s    c         C   s   t  j |  | | | | |  } | d } t |  d  r |  j r | |  j k r t j   r t j |  j | | d | d  q n  | S(   Ni   R   Rn   i   (   R   R   R   R   R   t   getReadOnlyt   pkgconft   setFlag(   R   t   pkgargsR   R   R   R   Rv   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR   B  s    
''c         C   s]   | j  } | t } | s+ t t d   n  | |  j k rY t j j |  j | |  } n  | S(   Ns)   Package list with no CRPMTAG_FILENAME tag(   R   R   R   R   R   R/   R0   R1   (   R   R   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR2   J  s    	
c         C   s   | j  t S(   N(   R   R   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR4   S  s    c         C   s   d  S(   N(   R%   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR5   V  s    (   R"   R#   R$   R   R   R2   R4   R5   (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR   8  s   						t   RPMDBLoaderc           B   sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C   s'   t  j |   |  j t  d |  _ d  S(   Ni(   Rm   R$   t   setInstalledR   Rq   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR$   [  s    c         C   s   d S(   Ni  (    (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR   `  s    c         c   s   t    j   } |  j   } } xo | D]g } | d d k rP | | j   f Vn  | d k rl | j d  n
 | d 8} | j d  | j   q& W| j |  d  S(   Ni  s
   gpg-pubkeyi    i   (   t   getTSt   dbMatchR   t   instancet   addTotalR   R   (   R   Rt   t   mit   totalt   leftR   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyRu   d  s    
c         C   s   t  r( t  j t   d | j |   } n t   j d | j |   } y | j   SWn+ t k
 r d t f d     Y} |   SXd  S(   Ni    t
   NullHeaderc           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(   R%   (   R   t   key(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   __getitem__{  s    (   R"   R#   R  (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR  z  s   (   t	   rpmhelperR  R  R   t   nextt   StopIterationRl   (   R   Rv   R
  R  (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR   r  s    "c         C   s   d  S(   N(   R%   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR.     s    c         C   s   d  S(   N(   R%   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR2     s    c         C   s   d  S(   N(   R%   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR4     s    c         C   s   d  S(   N(   R%   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR5     s    c         C   s   t    } |  j } x | D] } | j d |  } yd | j   } xQ | r | j   } | |  j k r | |  j | t | d  f  n  | j   } qC WWq t k
 r q Xq Wd  S(   Ni]  (	   R  R   R  R  R  Rr   R~   R%   R  (   R   R   t   tsR   R   R
  R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    			 (   R"   R#   R$   R   Ru   R   R.   R2   R4   R5   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR  Y  s   								t   RPMDirLoaderc           B   s\   e  Z d	 d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z RS(
   c         C   s   t  j |   t j j |  |  _ | r7 | g |  _ nD g  t j |  D]+ } | j d  rG | j d  rG | ^ qG |  _ d  S(   Ns   .rpms   .src.rpm(	   Rm   R$   R/   R0   t   abspatht   _dirt
   _filenamest   listdirt   endswith(   R   t   dirR   t   x(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR$     s    c         C   s   t  |  j  S(   N(   RB   R  (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    c   	      c   s   t    } x t |  j  D] \ } } t j j |  j |  } t |  } y | j | j	    } Wn9 t
 j k
 r } t j d t j j |  | f  n X| | f V| j   | j d  | j   q Wd  S(   Ns   %s: %si   (   R  R   R  R/   R0   R1   R  R   t   hdrFromFdnoR   R	   t   errorR   R   R   R   R   (	   R   Rt   R  R   R   t   filepathR   R   t   e(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyRu     s    	'
c         C   s   |  j  | j |  } t j j |  j |  } t |  } t   } y | j | j	    } Wn? t
 j k
 r } t j d t j j |  | f  d  } n X| j   | S(   Ns   %s: %s(   R  R   R/   R0   R1   R  R   R  R  R   R	   R  R   R   R%   R   (   R   Rv   R   R  R   R  R   R  (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s    	#

c         C   s   d S(   Ns   file:///(    (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR.     s    c         C   sE   | j    } |  j | j |  } t j j |  j |  } | j d  S(   Nt   /(   t
   getPackageR  R   R/   R0   R1   R  t   lstrip(   R   R   Rv   R   R  (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR2     s    c         C   sB   | j    } |  j | j |  } t j j t j j |  j |   S(   N(   R!  R  R   R/   R0   R   R1   R  (   R   R   Rv   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR4     s    c         C   s   d  S(   N(   R%   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR5     s    c         C   s$  t    } |  j } xt |  j  D] \ } } | |  j k rC q" n  t j j |  j |  } t	 |  } y | j
 | j    } WnC t j k
 r }	 | j   t j d t j j |  |	 f  q" X| j   xI t |  D]; }
 | j |
  }
 |
 r | |  j | t |
 d  f  q q Wq" Wd  S(   Ns   %s: %s(   R  R   R   R  Rr   R/   R0   R1   R  R   R  R   R	   R  R   R   R   R   R   R~   R%   (   R   R   R  R   R   R   R  R   R   R  R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR     s"    		
'
N(   R"   R#   R%   R$   R   Ru   R   R.   R2   R4   R5   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR    s   
							t   RPMFileChannelc           B   s   e  Z d    Z RS(   c         C   s   t  j j |  j  } | |  j k r( t S|  j   t  j j |  j  \ } } t | |  } | j	 |   |  j
 j |  | |  _ t S(   N(   R/   R0   t   getmtimeR   t   _digestR   t   removeLoaderst   splitR  t
   setChannelt   _loadersRU   (   R   t   fetchert   progresst   digestt   dirnameR   R)   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   fetch  s    
	(   R"   R#   R.  (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyR#    s   c         C   s-   |  j  d  r) |  j  d  r) t |   Sd  S(   Ns   .rpms   .src.rpm(   R  R#  R%   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   createFileChannel  s    
s   create-file-channelc         C   s   |  j  t j  |  j  t j  |  j  t j  |  j  t j  |  j  t j  |  j  t j  |  j  t	 j  |  j  t	 j  |  j  t
 j  |  j  t
 j  d  S(   N(   t   bindRm   R   R   R   Ru   R   R   R   R  R  (   t   psyco(    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   enablePsyco   s    s   enable-psyco(-   t   smart.backends.rpm.rpmverR    t   smart.util.strtoolsR   t   smart.cacheR   R   t   smart.channelR   t   smart.backends.rpm.baset   smart.progressR   t   smartt   localeRc   R/   R   t   timeR  t   ImportErrorR%   R   R   R   t   CRPMTAG_SHA1R   t   CRPMTAG_BINARYt   CRPMTAG_UPDATE_SUMMARYt   CRPMTAG_UPDATE_IMPORTANCEt   CRPMTAG_UPDATE_DATEt   CRPMTAG_UPDATE_URLR:   R   R   Rm   R   R   R   R  R  R#  R/  t   hookst   registerR2  (    (    (    s=   /usr/lib/python2.7/dist-packages/smart/backends/rpm/header.pyt   <module>   sN   


	z!AQ		