;ò
µAc           @   s<  d  k  Z  d  k Z d  k Z d  k Z d  k Z d k l Z d k l Z d k	 l
 Z d k l Z l Z d   Z d d  Z d   Z d	   Z d
   Z d   Z d   Z d   Z d d g Z d e i f d     YZ d d d  Z d f  d     YZ d e f d     YZ d e f d     YZ d f  d     YZ d  S(   N(   s   _(   s   URLGrabError(   s   error(   s   write32us   FNAMEc         C   s   t  |   } d } | i t j o
 d } n1 | | i   j p | | i   j o
 d } n | o# t d t	 d  | | f   n d Sd S(   s   check a header by opening it and comparing the results to the name and arch
       we believe it to be for. if it fails raise URLGrabError(-1)i    i   i˙˙˙˙s1   Header cannot be opened or does not match %s, %s.N(
   s   Header_Works
   headerfiles   hs   fails   hdrs   Nones   names   archs   URLGrabErrors   _(   s
   headerfiles   names   archs   hs   fail(    (    s   /usr/share/yum/rpmUtils.pys   checkheader   s     
&
#i    c         C   s°   t  i d  t i |  t i  } y t  i |  Wn t i	 j
 o } d } n Xd } t i |  t  i d  | o- | o t d t d  |    qĴ d Sn | Sd S(   sc   take a package, check it out by trying to open it, return 1 if its good
       return 0 if it's nots   md5i    i   s   defaulti˙˙˙˙s   RPM %s fails md5 checkN(   s   tss   sigCheckings   oss   opens   packages   O_RDONLYs   fdnos   hdrFromFdnos   rpms   errors   es   goods   closes   urlgraberrors   URLGrabErrors   _(   s   packages   urlgraberrors   goods   es   fdno(    (    s   /usr/share/yum/rpmUtils.pys   checkRpmMD5   s     c         C   s  t  i d  t i |  t i  } y t  i |  } Wn t	 i
 j
 ou } t |  d j o d Sn t |  d j o d Sn t |  d j o d Sn t |  d j o d Sqö n< Xt |  \ } } | d	 j o t i |  ~ d
 Sn ~ t i |  d Sd S(   sÜ    take a package, check it's sigs, return 0 if they are all fine, return 
    1 if the gpg key can't be found,  2 if the header is in someway damaged,
    3 if the key is not trusted, 4 if the pkg is not gpg or pgp signeds   defaults   public key not availaiablei   s   public key not availables   public key not trustedi   s   error reading package headeri   ie   i   i    N(   s   tss   sigCheckings   oss   opens   packages   O_RDONLYs   fdnos   hdrFromFdnos   hdrs   rpms   errors   es   strs
   getSigInfos   siginfos   close(   s   packages   siginfos   es   hdrs   fdnos   error(    (    s   /usr/share/yum/rpmUtils.pys   checkSig4   s,     c         C   sy   d } |  i |  } | d j o" d } | i d  \ } } } n d } d } d } d } | | | f } | | f Sd S(	   sE   checks if a computerhand back signature information and an error codes   %|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|s   (none)i    s   ,ie   s   MD5s   NoneN(
   s   strings   hdrs   sprintfs   siginfos   errors   splits   sigtypes   sigdates   sigids	   infotuple(   s   hdrs   siginfos   sigids	   infotuples   sigtypes   sigdates   errors   string(    (    s   /usr/share/yum/rpmUtils.pys
   getSigInfoP   s     c         C   s`   g  } |  t i } | t j o n5 t |  t i j o | i	 |  n | i
 |  | Sd  S(   N(   s	   provnamess   headers   rpms   RPMTAG_PROVIDENAMEs   providess   Nones   types   typess   ListTypes   extends   append(   s   headers   providess	   provnames(    (    s   /usr/share/yum/rpmUtils.pys   getProvides`   s    c   
   
   C   sÁ   |  \ } } } | \ } } } d   } | |  } | |  } | |  } | |  } | |  } | |  } t i | | | f | | | f  }	 t
 d d | | | | | | |	 f  |	 Sd  S(   Nc         C   s;   t  |   t i j o
 |  t j o t |   }  n |  Sd  S(   N(   s   types   args   typess
   StringTypes   Nones   str(   s   arg(    (    s   /usr/share/yum/rpmUtils.pys   rpmOutToStro   s    #i   s   %s, %s, %s vs %s, %s, %s = %s(   s   e1s   v1s   r1s   e2s   v2s   r2s   rpmOutToStrs   rpms   labelCompares   rcs   log(
   s   .0s   .2s   e1s   v1s   r1s   e2s   v2s   r2s   rpmOutToStrs   rc(    (    s   /usr/share/yum/rpmUtils.pys
   compareEVRk   s   	$&c         C   s   | o | t i t i Bt i B@o |  d }  n | t i @o |  d }  n | t i @o |  d }  n | t i @o |  d }  n |  d | }  n |  Sd  S(   Ns    s   <s   >s   =s    %s(   s   flagss   rpms   RPMSENSE_LESSs   RPMSENSE_GREATERs   RPMSENSE_EQUALs   names   version(   s   names   versions   flags(    (    s   /usr/share/yum/rpmUtils.pys   formatRequire~   s    c          C   sL   y t  i t i  } Wn+ t  i j
 o }  t d t d   n X| Sd  S(   Ni    sF   Could not open RPM database for reading. Perhaps it is already in use?(	   s   rpms   TransactionSets   confs   installroots   dbs   errors   es   errorlogs   _(   s   es   db(    (    s   /usr/share/yum/rpmUtils.pys	   openrpmdb   s
    s   GzipFiles   openc           B   s   t  Z d   Z RS(   Nc         C   s³   |  i i d  |  i i d  |  i d  } d } | o
 t } n |  i i t |   t |  i t	 d   |  i i d  |  i i d  | o |  i i | d  n d  S(   Ns   s   iŭ˙˙˙i    s   s   ˙s    (
   s   selfs   fileobjs   writes   filenames   fnames   flagss   FNAMEs   chrs   write32us   long(   s   selfs   fnames   flags(    (    s   /usr/share/yum/rpmUtils.pys   _write_gzip_header   s    
(   s   __name__s
   __module__s   _write_gzip_header(    (    (    s   /usr/share/yum/rpmUtils.pys   GzipFile   s   s   rbi	   c         C   s   t  |  | |  Sd  S(   N(   s   GzipFiles   filenames   modes   compresslevel(   s   filenames   modes   compresslevel(    (    s   /usr/share/yum/rpmUtils.pys	   _gzipOpen§   s    s   RPM_Base_Workc           B   sk   t  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 d
   Z d   Z RS(   Nc         C   sC   |  i t j o$ t d t d   t i d  n |  i | Sd  S(   Ni    s-   Got an empty Header, something has gone wrongi   (   s   selfs   hdrs   Nones   errorlogs   _s   syss   exits   tag(   s   selfs   tag(    (    s   /usr/share/yum/rpmUtils.pys   _getTagĴ   s    c         C   s&   |  i d  d j o d Sn d Sd  S(   Ns   sourcepackagei   i    (   s   selfs   _getTag(   s   self(    (    s   /usr/share/yum/rpmUtils.pys   isSource³   s    c         C   s   |  i d  Sd  S(   Ns   name(   s   selfs   _getTag(   s   self(    (    s   /usr/share/yum/rpmUtils.pys   nameı   s    c         C   s   |  i d  Sd  S(   Ns   arch(   s   selfs   _getTag(   s   self(    (    s   /usr/share/yum/rpmUtils.pys   archĵ   s    c         C   s   |  i d  Sd  S(   Ns   epoch(   s   selfs   _getTag(   s   self(    (    s   /usr/share/yum/rpmUtils.pys   epochż   s    c         C   s   |  i d  Sd  S(   Ns   version(   s   selfs   _getTag(   s   self(    (    s   /usr/share/yum/rpmUtils.pys   versionÂ   s    c         C   s   |  i d  Sd  S(   Ns   release(   s   selfs   _getTag(   s   self(    (    s   /usr/share/yum/rpmUtils.pys   releaseĊ   s    c         C   s>   |  i d  } |  i d  } |  i d  } | | | f Sd  S(   Ns   epochs   versions   release(   s   selfs   _getTags   es   vs   r(   s   selfs   rs   es   v(    (    s   /usr/share/yum/rpmUtils.pys   evrÈ   s    c         C   sb   |  i d  } |  i d  } |  i d  } |  i d  } |  i d  } | | | | | f Sd  S(   Ns   names   epochs   versions   releases   arch(   s   selfs   _getTags   ns   es   vs   rs   a(   s   selfs   as   es   ns   rs   v(    (    s   /usr/share/yum/rpmUtils.pys   nevraÎ   s    c         C   s.   |  i d  } | t j o
 d } n | Sd  S(   Ns   epochs   0(   s   selfs   _getTags   epochs   None(   s   selfs   epoch(    (    s   /usr/share/yum/rpmUtils.pys
   fixedEpochÖ   s    
c   
      C   sÁ   |  i   \ }	 } } } } |  i   } |  i   o d | |	 | | | f } n d | |	 | | | | f } | o t | d  } n t | d  } | i |  i i d   | i   | Sd  S(   Ns   %s/%s-%s-%s-%s.src.hdrs   %s/%s-%s-%s-%s.%s.hdrs   wi   (   s   selfs   nevras   names   epochs   vers   rels   archs
   fixedEpochs   isSources	   headerdirs   headerfns   compresss	   _gzipOpens	   headerouts   opens   writes   hdrs   unloads   close(
   s   selfs	   headerdirs   compresss   vers	   headerouts   headerfns   epochs   rels   archs   name(    (    s   /usr/share/yum/rpmUtils.pys   writeHeaderŬ   s    
(   s   __name__s
   __module__s   _getTags   isSources   names   archs   epochs   versions   releases   evrs   nevras
   fixedEpochs   writeHeader(    (    (    s   /usr/share/yum/rpmUtils.pys   RPM_Base_WorkŞ   s   										s   Header_Workc           B   s   t  Z d  Z d   Z RS(   s   for operating on hdrs in and out of the rpmdb
       if the first arg is a string then it's a filename
       otherwise it's an rpm hdrc         C   sx  t  |  t i j oOyg t i | d  } y t i | i	    } Wn5 t i j
 o& } t d t d  |  t } n XWn× t j
 oi } t | d  } y t i | i	    } WqWt i j
 o& } t d t d  |  t } qWXnd t j
 o& } t d t d  |  t } n3 t j
 o& } t d t d  |  t } n X| i   n | } | |  _ d  S(   Ns   ri    s   Damaged Header %s(   s   types   headers   typess
   StringTypes   gzips   opens   fds   rpms
   headerLoads   reads   hs   errors   es   errorlogs   _s   Nones   IOErrors
   ValueErrors	   zlibErrors   closes   selfs   hdr(   s   selfs   headers   es   hs   fd(    (    s   /usr/share/yum/rpmUtils.pys   __init__ó   s0    
(   s   __name__s
   __module__s   __doc__s   __init__(    (    (    s   /usr/share/yum/rpmUtils.pys   Header_Workï   s    s   RPM_Workc           B   s   t  Z d   Z RS(   Nc         C   s   t  i t i  t i | t i  } y t  i	 |  |  _ Wn> t i j
 o/ } t d t d  | | f  t |  _ n Xt i |  d  S(   Ni    s   Error opening rpm %s - error %s(   s   tss
   setVSFlagss   rpms   _RPMVSF_NOSIGNATURESs   oss   opens   rpmfns   O_RDONLYs   fds   hdrFromFdnos   selfs   hdrs   errors   es   errorlogs   _s   Nones   close(   s   selfs   rpmfns   es   fd(    (    s   /usr/share/yum/rpmUtils.pys   __init__  s    (   s   __name__s
   __module__s   __init__(    (    (    s   /usr/share/yum/rpmUtils.pys   RPM_Work  s   s   Rpm_Ts_Workc           B   sG   t  Z d  Z d d  Z d   Z e e e d  Z d   Z d   Z RS(   sï   This should operate on groups of headers/matches/etc in the rpmdb - ideally it will 
    operate with a list of the Base objects above, so I can refer to any one object there
    not sure the best way to do this yet, more thinking involveds   /c         C   s   y/ t  i o! t  i d j o t  i } q. n Wn t j
 o	 } n Xt i |  |  _ d d d d d d d d	 d
 d d g |  _	 d  S(   Ns   /s
   addInstalls   addErases   runs   checks   orders   hdrFromFdnos   closeDBs   dbMatchs   setFlagss
   setVSFlagss   setProbFilter(
   s   confs   installroots   dbPaths	   NameErrors   es   rpms   TransactionSets   selfs   tss   methods(   s   selfs   dbPaths   e(    (    s   /usr/share/yum/rpmUtils.pys   __init__  s    
c         C   s1   | |  i j o t |  i |  Sn
 t |  d  S(   N(   s	   attributes   selfs   methodss   getattrs   tss   AttributeError(   s   selfs	   attribute(    (    s   /usr/share/yum/rpmUtils.pys   __getattr__+  s    c         C   s_  g  } | t j o | t j o
 | t j o |  i i   } nî | t j o |  i i | |  } nÈ | d j o) |  i i   } | i	 | t
 i |  n | d j o) |  i i   } | i	 | t
 i |  n\ | d j o) |  i i   } | i	 | t
 i |  n& |  i i   } | i	 | t
 i |  x' | D] } t |  } | i |  q4W| Sd S(   s(   hands back a list of Header_Work objectss   globs   regexs   strcmpN(   s   hwlists   mires   Nones   tags   searchs   selfs   tss   dbMatchs   hdrlists   patterns   rpms   RPMMIRE_GLOBs   RPMMIRE_REGEXs   RPMMIRE_STRCMPs   RPMMIRE_DEFAULTs   hdrs   Header_Works   hdrobjs   append(   s   selfs   tags   searchs   mires   hdrs   hdrlists   hwlists   hdrobj(    (    s   /usr/share/yum/rpmUtils.pys   match1  s,     ' c   	      K   s   g  } g  } |  i   } x. | i   D]  } | i | t	 i
 | |  q% Wx | D] } | i |  qP Wx' | D] } t |  } | i |  qn W| Sd S(   s   return list of headers from the rpmdb matching a keyword
            ex: getHeadersByKeyword(name='foo', version='1', release='1')
        N(   s   lsts   hwlists   selfs   dbMatchs   mis   kwargss   keyss   keywords   patterns   rpms   RPMMIRE_GLOBs   hs   appends   hdrs   Header_Works   hdrobj(	   s   selfs   kwargss   hdrs   keywords   hs   mis   lsts   hdrobjs   hwlist(    (    s   /usr/share/yum/rpmUtils.pys   getHeadersByKeywordP  s        c         C   s   | d j o |  i i t i t i B nS | d j o |  i i t i  n. | d j o |  i i t i  n
 t	 |  d S(   sA   pass type of check you want to occur, default is to have them offs   md5s   nones   defaultN(
   s   sigs   selfs   tss
   setVSFlagss   rpms   RPMVSF_NOMD5s   RPMVSF_NEEDPAYLOADs   _RPMVSF_NOSIGNATURESs   RPMVSF_DEFAULTs   AttributeError(   s   selfs   sig(    (    s   /usr/share/yum/rpmUtils.pys   sigCheckingg  s     (	   s   __name__s
   __module__s   __doc__s   __init__s   __getattr__s   Nones   matchs   getHeadersByKeywords   sigChecking(    (    (    s   /usr/share/yum/rpmUtils.pys   Rpm_Ts_Work  s    		(   s   rpms   typess   oss   gzips   syss   i18ns   _s
   urlgrabbers   URLGrabErrors   zlibs   errors	   zlibErrors   write32us   FNAMEs   checkheaders   checkRpmMD5s   checkSigs
   getSigInfos   getProvidess
   compareEVRs   formatRequires	   openrpmdbs   __all__s   GzipFiles	   _gzipOpens   RPM_Base_Works   Header_Works   RPM_Works   Rpm_Ts_Work(   s
   compareEVRs   checkSigs   getProvidess   Header_Works   rpms   write32us   __all__s   checkRpmMD5s   RPM_Works   checkheaders   _s   formatRequires   URLGrabErrors   RPM_Base_Works   syss	   _gzipOpens   FNAMEs	   zlibErrors   typess	   openrpmdbs   Rpm_Ts_Works   gzips
   getSigInfos   oss   GzipFile(    (    s   /usr/share/yum/rpmUtils.pys   ?   s.   													E 