;ò
µAc           @   s;  d  k  Z  d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k	 Z	 d  k
 Z
 d  k Z d  k Z d  k Z d  k Z d k l Z l Z l Z l Z e i d ƒ d k l Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z e 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 „  Z0 d „  Z1 d „  Z2 d  „  Z3 d! „  Z4 d" „  Z5 d# „  Z6 d$ „  Z7 d% „  Z8 d& „  Z9 e d' d' d' d( e e d) d* d+ d, d- d. d/ g e d0 „
 Z: d  S(1   N(   s	   close_alls   urlgrabs   URLGrabErrors	   retrygrabs   Yum/2.X(   s   _c   
      C   s²   t  i |  d ƒ } |  | d } t  i |  |  d ƒ }	 |  |	 d | !} t  i |  |	  d ƒ } |  | d |	 !} t  i	 |  d ƒ } |  |  } |  | d | !} | | | | | f Sd  S(   Ns   .i   s   -s   :(   s   strings   rfinds   strs	   archIndexs   archs   relIndexs   rels   verIndexs   vers   finds
   epochIndexs   epochs   name(
   s   strs   verIndexs   vers   names   epochs
   epochIndexs	   archIndexs   rels   archs   relIndex(    (    s   /usr/share/yum/clientStuff.pys
   stripENVRA'   s    
c         C   st   t  i |  d ƒ } |  |  } t  i |  d ƒ } |  | d } t  i |  |  d ƒ } |  | d | !} | | | f Sd  S(   Ns   :s   -i   (
   s   strings   finds   strs
   epochIndexs   epochs   rfinds   relIndexs   rels   verIndexs   ver(   s   strs   verIndexs   vers   epochs
   epochIndexs   rels   relIndex(    (    s   /usr/share/yum/clientStuff.pys   stripEVR3   s    
c         C   s8   t  i |  d ƒ } |  | d } |  |  } | | f Sd  S(   Ns   .i   (   s   strings   rfinds   strs	   archIndexs   archs   name(   s   strs   names   archs	   archIndex(    (    s   /usr/share/yum/clientStuff.pys   stripNA<   s    
c         C   sz   |  t i t j o
 d } n d |  t i } |  t i } |  t i } |  t i	 } |  t i } | | | | | f Sd  S(   Ns   0s   %s(   s   headers   rpms   RPMTAG_EPOCHs   Nones   epochs   RPMTAG_NAMEs   names   RPMTAG_VERSIONs   vers   RPMTAG_RELEASEs   rels   RPMTAG_ARCHs   arch(   s   headers   vers   names   archs   epochs   rel(    (    s   /usr/share/yum/clientStuff.pys   getENVRAB   s    
c         C   sä   t  i |  d ƒ } | d j o t  i |  |  ƒ } n d } t  i |  d ƒ } | d j oE |  | d | !d j o
 t } n |  | d | !} |  | d } n4 |  | d d j o
 t } n |  | d } t } | | | f Sd  S(   Ns   :iÿÿÿÿs   0s   -i   s    (
   s   strings   finds   strs   is   atols   epochs   js   Nones   versions   release(   s   strs   is   js   epochs   versions   release(    (    s   /usr/share/yum/clientStuff.pys   str_to_versionM   s    

c      	   C   sö  t  |  d ƒ } | i ƒ  } | i ƒ  t i ƒ  } x¾| D]¶} y7 t
 i | d ƒ \ } } t | ƒ \ } } } }	 } WnS t j
 oG } t d t d ƒ t i | ƒ t d t d ƒ ƒ t i d ƒ n Xt
 i | d d ƒ } | | j ot | | ƒ oìt i d	 j o| i! | | ƒ oÓ | | i | | ƒ j o‘ | i" | | ƒ \ } } } | | |	 f \ } } } t) i* | | | f | | | f ƒ }
 |
 d j  o) | i, | | | |	 | | | f d
 ƒ qðq| i, | | | |	 | | | f d
 ƒ qæ| i, | | | |	 | | | f d
 ƒ qê| i! | | ƒ o‘ | i" | | ƒ \ } } } | | |	 f \ } } } t) i* | | | f | | | f ƒ }
 |
 d j  o) | i, | | | |	 | | | f d
 ƒ qæqê| i, | | | |	 | | | f d
 ƒ qîq8 q8 Wd  S(   Ns   rs   =i    s"   Damaged or Bad header.info from %ssV   This is probably because of a downed server or an invalid header.info on a repository.i   s   
s    s   lasts   a(-   s   opens   filenames   in_files	   readliness   infos   closes   archworks   compatArchLists   archlists   lines   strings   splits   envraStrs   rpmpaths
   stripENVRAs   epochs   names   vers   rels   archs
   ValueErrors   es   errorlogs   _s   confs
   servernames   serverids   syss   exits   replaces   nameInExcludess	   pkgpolicys   nevrals   existss   evrs   e1s   v1s   r1s   e2s   v2s   r2s   rpmUtilss
   compareEVRs   rcs   add(   s   filenames   nevrals   serverids   archlists   lines   vers   e1s   epochs   in_files   rels   rcs   e2s   envraStrs   v1s   v2s   archs   r1s   infos   es   names   r2s   rpmpath(    (    s   /usr/share/yum/clientStuff.pys   HeaderInfoNevralLoadb   sB    
 $-))$-c         C   s•   x9 t  i D]. } |  | j p t i |  | ƒ o d Sq
 q
 W| t j oD xA t  i | D]. } |  | j p t i |  | ƒ o d SqW qW Wn d Sd  S(   Ni   i    (   s   confs   excludess   excludes   names   fnmatchs   serverids   Nones   serverexclude(   s   names   serverids   exclude(    (    s   /usr/share/yum/clientStuff.pys   nameInExcludesŽ   s    
    c      	   C   s„  h  } d } d } t i ƒ  } x| D]ü } t | ƒ \ } } } } } | i | | f ƒ o | | | f | | | f <q% | | | f \ } }	 } | | | f \ } }
 } t i | |	 | f | |
 | f ƒ } | d j o | | | f | | | f <q% | d j o t d d | | f ƒ q% q% WxX | i ƒ  D]J } | \ } } | | \ } } } |  i | | | | | | | f d ƒ q2Wd  S(   Ns   dbs	   in_rpm_dbiÿÿÿÿi    i   s   dupe entry in rpmdb %s %ss   n(   s	   rpmdbdicts   serverids   rpmlocs   tss   dbMatchs   hdrss   hdrs   getENVRAs   epochs   names   vers   rels   archs   has_keys   e1s   v1s   r1s   e2s   v2s   r2s   rpmUtilss
   compareEVRs   rcs   logs   keyss   values   nevrals   add(   s   nevrals   rpmlocs   vers   archs   epochs   rels   rcs   hdrss   hdrs   v1s   v2s   serverids   e1s   r1s	   rpmdbdicts   names   r2s   values   e2(    (    s   /usr/share/yum/clientStuff.pys   rpmdbNevralLoadœ   s*     $ c         C   sn  t  i |  d ƒ d j oO t i |  t i ƒ } t i | ƒ } t i
 | ƒ | t i o d Sq\| Snô ye t i |  d ƒ } y t i | i ƒ  ƒ } Wn3 t i j
 o$ } t d t d ƒ |  ƒ t Sn XWn‹ t j
 og } t |  d ƒ } y t i | i ƒ  ƒ } Wq\t i j
 o$ } t d t d ƒ |  ƒ t Sq\Xn t j
 o } t Sn X| i
 ƒ  | Sd  S(   Niüÿÿÿs   .rpms   sources   ri    s   Damaged Header %s(   s   strings   lowers   rpmfns   oss   opens   O_RDONLYs   fds   tss   hdrFromFdnos   hs   closes   rpms   RPMTAG_SOURCEPACKAGEs   gzips
   headerLoads   reads   errors   es   errorlogs   _s   Nones   IOErrors
   ValueError(   s   rpmfns   es   hs   fd(    (    s   /usr/share/yum/clientStuff.pys
   readHeader³   s2    	
c         C   s“   g  } |  t j o | Sn t |  ƒ t i j	 o |  d @} | i | ƒ n@ x< |  D]4 } | } | t j	 o | d @} n | i | ƒ qS W| Sd  S(   Ni   (	   s   returnflagss   flagss   Nones   types   typess   ListTypes   newflags   appends   flag(   s   flagss   returnflagss   flags   newflag(    (    s   /usr/share/yum/clientStuff.pys   correctFlagsÑ   s    
 c         C   sÜ   g  } t t t f } |  t j o | i | ƒ | Sn t |  ƒ t i j	 o= |  t j	 o t |  ƒ } n t t t f } | i | ƒ nK xG |  D]? } | t j	 o t | ƒ } n t t t f } | i | ƒ q‘ W| Sd  S(   N(
   s
   returnverss   Nones   vertuples   verss   appends   types   typess   ListTypes   str_to_versions   ver(   s   verss   vertuples   vers
   returnvers(    (    s   /usr/share/yum/clientStuff.pys   correctVersionâ   s"     c      
   C   s«  h  } h  } xŽ| D]†\ } } |  i | | ƒ } g  } | t	 i
 } | t	 i } t | ƒ } t | t	 i ƒ } | t j	 o t | | | ƒ } n ~ | oüxù| D]í\ } }
 \ } } } | i | ƒ oÅ|
 d j o“ | i | | f ƒ o g  | | | f <n | | | f i | ƒ | i | ƒ o g  | | <n | | i | | f ƒ t d d | | f ƒ q‘t d d ƒ t d d | |
 | | | f ƒ | i | | ƒ \ } } } t# i$ | | | f | | | f ƒ }	 |
 d j o¤ |	 d j o“ | i | | f ƒ o g  | | | f <n | | | f i | ƒ | i | ƒ o g  | | <n | | i | | f ƒ t d d | | f ƒ qq‘|
 d j oD|	 d j o“ | i | | f ƒ o g  | | | f <n | | | f i | ƒ | i | ƒ o g  | | <n | | i | | f ƒ t d d | | f ƒ q|	 d j o“ | i | | f ƒ o g  | | | f <n | | | f i | ƒ | i | ƒ o g  | | <n | | i | | f ƒ t d d | | f ƒ qq‘|
 d	 j o¤ |	 d j o“ | i | | f ƒ o g  | | | f <n | | | f i | ƒ | i | ƒ o g  | | <n | | i | | f ƒ t d d | | f ƒ qq‘|
 d
 j oD|	 d j o“ | i | | f ƒ o g  | | | f <n | | | f i | ƒ | i | ƒ o g  | | <n | | i | | f ƒ t d d | | f ƒ q|	 d j o“ | i | | f ƒ o g  | | | f <n | | | f i | ƒ | i | ƒ o g  | | <n | | i | | f ƒ t d d | | f ƒ qq‘|
 d j o¤ |	 d j o“ | i | | f ƒ o g  | | | f <n | | | f i | ƒ | i | ƒ o g  | | <n | | i | | f ƒ t d d | | f ƒ qq‘q¤ q¤ Wq q W| | f Sd  S(   Ni    i   s   %s obsoleting %ss   versioned obsoletei   s   %s, %s, %s, %s, %si   i   i   i
   iÿÿÿÿi   (&   s
   obsoletings	   obsoleteds   uninstNAlists   names   archs   headerNevrals	   getHeaders   headers   obss   rpms   RPMTAG_OBSOLETENAMEs   namess   RPMTAG_OBSOLETEFLAGSs   tmpflagss   correctFlagss   flagss   correctVersions   RPMTAG_OBSOLETEVERSIONs   vers   Nones   zips   obspkgs   obscomps   obes   obvs   obrs	   rpmNevrals   existss   has_keys   appends   logs   evrs   e1s   v1s   r1s   rpmUtilss
   compareEVRs   rc(   s   headerNevrals	   rpmNevrals   uninstNAlists   headers   namess	   obsoleteds   vers   e1s
   obsoletings   rcs   obscomps   tmpflagss   archs   r1s   names   v1s   obes   flagss   obvs   obrs   obss   obspkg(    (    s   /usr/share/yum/clientStuff.pys   returnObsoletesø   s¶       $/c         C   s…  g  } g  }
 g  } g  } |
 i |  i ƒ  ƒ x||  i ƒ  D]n\ } } | t	 i
 ƒ  j o |
 i | | f ƒ q8 n | i | | ƒ om | i | | ƒ \ } } } t i |  i | | ƒ | | | f ƒ }	 |	 d j o |
 i | | f ƒ q8 qñ n | i | ƒ o¥ t	 i |  | ƒ } t	 i | | ƒ } t | ƒ d j p t | ƒ d j o3 | | j o" t d d | ƒ | i | ƒ q¢q¦t d d | ƒ | i | | f ƒ q8 q8 Wx"| D]\ } } t i o‘ | i | | ƒ oz | i | | ƒ \ } } } t i |  i | ƒ | | | f ƒ }	 |	 d j o* | i | | f ƒ |
 i | | f ƒ qTqËq±| i | ƒ \ } } } t i |  i | ƒ | | | f ƒ }	 |	 d j o* | i | | f ƒ |
 i | | f ƒ q±q±Wx˜| D]} t |  | ƒ } t | | ƒ } t	 i | ƒ } t d d | | f ƒ t	 i | ƒ } t d d | | f ƒ t i oµ x| D]¦ } | | j o| t d d	 | | f ƒ t i |  i | | ƒ | i | | ƒ ƒ }	 |	 d j o* | i | | f ƒ |
 i | | f ƒ qýqWt d d
 | | f ƒ qWWqÖt i |  i | | ƒ | i | | ƒ ƒ }	 |	 d j o* | i | | f ƒ |
 i | | f ƒ qÖqÖW| |
 } | |
 | f Sd S(   s;   returns (name, arch) tuples of updated and uninstalled pkgsi    i   i   s!   putting %s in complex update lists    putting %s in simple update listi   s    Best ver+arch avail for %s is %ss$   Best ver+arch installed for %s is %ss"   Exact match in complex for %s - %ss$   Inexact match in complex for %s - %sN("   s   uplists   newlists   simpleupdates   complexupdates   extends   headernevrals   NAkeyss   names   archs   archworks   compatArchLists   removes	   rpmnevrals   existss   evrs   rpm_es   rpm_vs   rpm_rs   rpmUtilss
   compareEVRs   rcs   availablearchss   hdrarchss   rpmarchss   lens   logs   appends   confs	   exactarchs   bestversions   bestarchs   hdr_best_archs   rpm_best_archs   nulist(   s   headernevrals	   rpmnevrals   hdr_best_archs   nulists   rpm_best_archs   complexupdates   rpm_es   rpm_rs   rpm_vs   rcs   newlists   rpmarchss   archs   names   simpleupdates   hdrarchss   uplist(    (    s   /usr/share/yum/clientStuff.pys   getupdatedhdrlist^  s€     + '& 
$$ 
 **
c   
      C   sa  g  } t i |  | ƒ }	 |	 d } xu |	 d D]i } t i	 |  i
 | | ƒ |  i
 | | ƒ ƒ } | d j  o
 | } q- | d j o q- | d j o q- q- W|  i
 | | ƒ \ } } } t d t d ƒ | | | | f ƒ xq |	 D]i } t i	 |  i
 | | ƒ | | | f ƒ } | d j o | i | ƒ qß | d j o t d d ƒ qß qß Wt d | ƒ | Sd S(	   s  this takes a nevral and a pkg name - it iterates through them to return
       the list of archs having the highest version number - so if someone has
       package foo.i386 and foo.i686 then we'll get a list of i386 and i686 returned
       minimum of one thing returnedi    i   i   s   Best version for %s is %s:%s-%si   s8   What the hell, we just determined it was the bestversioni   N(   s   returnarchss   archworks   availablearchss   nevrals   names   archss   currentarchs   archs   rpmUtilss
   compareEVRs   evrs   rcs   best_es   best_vs   best_rs   logs   _s   append(
   s   nevrals   names   best_vs   returnarchss   best_rs   currentarchs   best_es   rcs   archs   archs(    (    s   /usr/share/yum/clientStuff.pys   bestversionä  s0     
 *
# '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 } | d | } q n | Sd  S(   Ns    s   <s   >s   =s    %s(   s   names   strings   flagss   rpms   RPMSENSE_LESSs   RPMSENSE_GREATERs   RPMSENSE_EQUALs   version(   s   names   versions   flagss   string(    (    s   /usr/share/yum/clientStuff.pys   formatRequire  s    
c         C   sH  g  } g  } g  } g  } g  } x|  i ƒ  D]\ } } |  i	 | | ƒ d d f j o | i
 | | f ƒ n |  i	 | | ƒ d j o | i
 | | f ƒ n |  i	 | | ƒ d j o | i
 | | f ƒ n |  i	 | | ƒ d j o | i
 | | f ƒ n |  i	 | | ƒ d j o | i
 | | f ƒ q+ q+ W| | | | | f Sd  S(   Ns   is   ius   us   es   uds   ed(   s   install_lists   update_lists
   erase_lists   updatedeps_lists   erasedeps_lists   nevrals   NAkeyss   names   archs   states   append(   s   nevrals   erasedeps_lists   names   update_lists
   erase_lists   updatedeps_lists   install_lists   arch(    (    s   /usr/share/yum/clientStuff.pys   actionslists  s$     c         C   sf  t  i d j o t i i ƒ  o
 d } n d } t | t d ƒ ƒ xŒ |  D]„ } | \ }	 } | i |	 | ƒ \ } } }
 | d j o d |	 | | |
 | f } n d |	 | |
 | f } t | t d ƒ | ƒ qJ WxŒ | D]„ } | \ }	 } | i |	 | ƒ \ } } }
 | d j o d |	 | | |
 | f } n d |	 | |
 | f } t | t d	 ƒ | ƒ qÙ WxŒ | D]„ } | \ }	 } | i |	 | ƒ \ } } }
 | d j o d |	 | | |
 | f } n d |	 | |
 | f } t | t d
 ƒ | ƒ qhWt | ƒ d j o¦ t | t d ƒ ƒ x | D]„ } | \ }	 } | i |	 | ƒ \ } } }
 | d j o d |	 | | |
 | f } n d |	 | |
 | f } t | t d ƒ | ƒ qWn t | ƒ d j o¦ t | t d ƒ ƒ x | D]„ } | \ }	 } | i |	 | ƒ \ } } }
 | d j o d |	 | | |
 | f } n d |	 | |
 | f } t | t d ƒ | ƒ qÖWn d  S(   Ni    i   i   s   I will do the following:s   0s   %s %s:%s-%s.%ss   %s %s-%s.%ss   [install: %s]s   [update: %s]s   [erase: %s]s9   I will install/upgrade these to satisfy the dependencies:s
   [deps: %s]s/   I will erase these to satisfy the dependencies:(   s   confs	   assumeyess   syss   stdins   isattys	   log_levels   logs   _s   i_lists   pkgs   names   archs   nevrals   evrs   es   vs   rs	   pkgstrings   u_lists   e_lists   lens   ud_lists   ed_list(   s   i_lists   u_lists   e_lists   ud_lists   ed_lists   nevrals	   pkgstrings	   log_levels   archs   names   rs   vs   es   pkg(    (    s   /usr/share/yum/clientStuff.pys   printactions)  s`     
     c         C   sD  t  d ƒ }	 t  d ƒ } t  d ƒ } t  d ƒ }
 x€ |  D]x \ } } | i	 | | ƒ \ } } } | d j o d | | | | | f } n d | | | | f } t d |	 | ƒ q7 Wx€ | D]x \ } } | i	 | | ƒ \ } } } | d j o d | | | | | f } n d | | | | f } t d | | ƒ qº Wx€ | D]x \ } } | i	 | | ƒ \ } } } | d j o d | | | | | f } n d | | | | f } t d | | ƒ q=Wx„ | | D]x \ } } | i	 | | ƒ \ } } } | d j o d | | | | | f } n d | | | | f } t d |
 | ƒ qÄWd  S(	   Ns   Installed: s   Dep Installed: s	   Updated: s   Erased: s   0s   %s %s:%s-%s.%ss   %s %s-%s.%si   (   s   _s   i_logs   ud_logs   u_logs   e_logs   i_lists   names   archs   nevrals   evrs   es   vs   rs	   pkgstrings   filelogs   ud_lists   u_lists   e_lists   ed_list(   s   i_lists   u_lists   e_lists   ud_lists   ed_lists   nevrals	   pkgstrings   u_logs   es   i_logs   e_logs   ud_logs   vs   rs   archs   name(    (    s   /usr/share/yum/clientStuff.pys   filelogactionsf  s@        c         C   sÌ  t  d ƒ }	 t  d ƒ } t  d ƒ } t  d ƒ }
 x} |  D]u \ } } | i	 | | ƒ \ } } } | d j o d | | | | | f } n d | | | | f } |	 d | }	 q7 Wx} | D]u \ } } | i	 | | ƒ \ } } } | d j o d | | | | | f } n d | | | | f } | d | } q· Wx} | D]u \ } } | i	 | | ƒ \ } } } | d j o d | | | | | f } n d | | | | f } | d | } q7Wx | | D]u \ } } | i	 | | ƒ \ } } } | d j o d | | | | | f } n d | | | | f } |
 d | }
 q»Wt |  ƒ d	 j o t d
 |	 ƒ n t | ƒ d	 j o t d
 | ƒ n t | ƒ d	 j o t d
 | ƒ n t | | ƒ d	 j o t d
 |
 ƒ n d  S(   Ns   Installed: s   Dep Installed: s	   Updated: s   Erased: s   0s   %s %s:%s-%s.%ss   %s %s-%s.%ss    i    i   (   s   _s   i_logs   ud_logs   u_logs   e_logs   i_lists   names   archs   nevrals   evrs   es   vs   rs	   pkgstrings   ud_lists   u_lists   e_lists   ed_lists   lens   log(   s   i_lists   u_lists   e_lists   ud_lists   ed_lists   nevrals	   pkgstrings   u_logs   es   i_logs   e_logs   ud_logs   vs   rs   archs   name(    (    s   /usr/share/yum/clientStuff.pys   shortlogactions  sP        c          C   sY   t  d ƒ }  t |  ƒ d j o d Sn/ |  d d j o |  d d j o d Sn d Sd S(   s.   gets a yes or no from the user, defaults to Nos   Is this ok [y/N]: i    i   s   ys   YN(   s	   raw_inputs   choices   len(   s   choice(    (    s   /usr/share/yum/clientStuff.pys   userconfirm¾  s     "c         C   sJ   |  \ } } | \ } } | | j o d Sn | | j o d Sn d Sd  S(   Ni   i    iÿÿÿÿ(   s   n1s   a1s   n2s   a2(   s   .0s   .2s   n1s   a1s   n2s   a2(    (    s   /usr/share/yum/clientStuff.pys   nasortË  s
   c         C   sÊ   t  i |  ƒ } x° | D]¨ } t  i i |  d | ƒ o t |  d | | | ƒ } q t	 i
 | d ƒ d | j oK t  i i |  d | ƒ o+ t  i i |  d | ƒ } | i | ƒ q¾ q q W| Sd  S(   Ns   /iüÿÿÿs   %s(   s   oss   listdirs   paths   dir_lists   ds   isdirs   getfilelists   exts   mylists   strings   lowers   islinks   normpaths   newpaths   append(   s   paths   exts   mylists   newpaths   ds   dir_list(    (    s   /usr/share/yum/clientStuff.pys   getfilelistÓ  s     c          C   s¥   t  i } x• | D] } t  i | } t | d g  ƒ } t i	 i
 t  i | d ƒ } t d d | ƒ t i | ƒ x, | D]$ }  t d d |  ƒ t i |  ƒ qu Wq Wd  S(   Ns   .hdrs   header.infoi   s   Deleting header.info for %ss   Deleting Header %s(   s   confs   serverss
   serverlists   serverids   serverhdrdirs   hdrdirs   getfilelists   hdrlists   oss   paths   joins   cachedirs   headerinfofiles   logs   unlinks   hdr(   s   hdrs   hdrlists   hdrdirs   serverids
   serverlists   headerinfofile(    (    s   /usr/share/yum/clientStuff.pys   clean_up_headersä  s    	  c          C   sl   t  i } x\ | D]T } t  i | } t | d g  ƒ }  x, |  D]$ } t	 d d | ƒ t
 i | ƒ q< Wq Wd  S(   Ns   .rpmi   s   Deleting Package %s(   s   confs   serverss
   serverlists   serverids   serverpkgdirs   rpmdirs   getfilelists   rpmlists   rpms   logs   oss   unlink(   s   rpmlists   rpmdirs   serverids
   serverlists   rpm(    (    s   /usr/share/yum/clientStuff.pys   clean_up_packagesò  s    	  c         C   sœ  t  i } g  } x- | D]% } t  i | } t | d | ƒ } q WxV| D]N} t	 | ƒ } t | ƒ \ } } } } }
 |  i | |
 ƒ o¥ |  i | |
 ƒ \ } } }	 t i | | |	 f | | | f ƒ } | d j oU t d d | ƒ y t i | ƒ Wq't j
 o  } t d t d ƒ | ƒ q'Xq+n | i | |
 ƒ oU t d d | ƒ y t i | ƒ Wq”t j
 o  } t d t d ƒ | ƒ q”XqF qF Wd  S(   Ns   .hdri    i   s   Deleting Header %si   s/   Attempt to delete a missing file %s - ignoring.(!   s   confs   serverss
   serverlists   hdrlists   serverids   serverhdrdirs   hdrdirs   getfilelists   hdrfns
   readHeaders   hdrs   getENVRAs   es   ns   vs   rs   as	   rpmDBInfos   existss   evrs   e1s   v1s   r1s   rpmUtilss
   compareEVRs   rcs   logs   oss   unlinks   OSErrors   errorlogs   _s
   HeaderInfo(   s	   rpmDBInfos
   HeaderInfos   hdrfns
   serverlists   rcs   hdrlists   v1s   serverids   e1s   r1s   as   es   hdrs   ns   rs   hdrdirs   v(    (    s   /usr/share/yum/clientStuff.pys   clean_up_old_headersü  s2    	  $$c           C   s#   t  i d t  i t  i  ƒ  ƒ ƒ Sd  S(   Ns   %m/%d/%y %H:%M:%S (   s   times   strftimes	   localtime(    (    (    s   /usr/share/yum/clientStuff.pys	   printtime  s    c      	   C   sM  t  d d ƒ g  } x/|  D]'} t i | o q n t i | ƒ } t i | ƒ } t i
 o} t  d t d ƒ | ƒ y" t | | | d d d d ƒ} Wq
t j
 o1 } t  d t d ƒ | ƒ t  d d	 | ƒ q
Xn/ t i i | ƒ o t  d t d
 ƒ | ƒ n t i i | ƒ o$ t  d t d ƒ ƒ | i | ƒ q q W| Sd S(   s~   takes a list of serverids - returns a list of servers that either:
       gave us yumcomps.xml or for whom we had a cached onei   s   Getting groups from serversi   s   getting groups from server: %ss   nofaili   s
   copy_locals   Error getting file %ss   %ss#   using cached groups from server: %ss   Got a file - yayN(   s   logs   validserverss   serveridlists   serverids   confs   groupsenables   remoteGroupss   remotegroupfiles   localGroupss   localgroupfiles   caches   _s   grabs   URLGrabErrors   es   oss   paths   existss   append(   s   serveridlists   serverids   es   localgroupfiles   validserverss   remotegroupfile(    (    s   /usr/share/yum/clientStuff.pys   get_groups_from_servers  s,      "c      	   C   sW  t  d t d ƒ ƒ x=|  D]5} t i | }	 t i | ƒ } t i | } t  d t d ƒ |	 ƒ t  d t d ƒ | ƒ t i	 | } t i | }
 t i | ƒ } t i oõ t i i | ƒ o t i | ƒ n t i i | ƒ o t i | ƒ n t i i |
 ƒ o t i |
 ƒ n t  d t d ƒ ƒ y" t | | | d d	 d
 t ƒ} Wq.t j
 o> } t d t d ƒ | ƒ t d d | ƒ t i d	 ƒ q.Xn t i i | ƒ o t  d t d ƒ ƒ | } n_ t d t d ƒ | ƒ t i d j o t d	 t d ƒ ƒ n t d	 t d ƒ ƒ t i d	 ƒ t  d d | ƒ t | | | ƒ q Wd S(   s¹   gets header.info from each server if it can, checks it, if it can, then
       builds the list of available pkgs from there by handing each headerinfofn
       to HeaderInfoNevralLoad()i   s3   Gathering header information file(s) from server(s)s
   Server: %si   s   CacheDir: %si   s   Getting header.info from servers
   copy_locali   s   progress_obji    s   Error getting file %ss   %ss   Using cached header.info files   Error - %s cannot be founds>   Please ask your sysadmin to update the headers on this system.s:   Please run yum in non-caching mode to correct this header.s   headerinfofn: N(   s   logs   _s   serveridlists   serverids   confs
   servernames   remoteHeaders   serverheaders   servercaches   serverpkgdirs	   localpkgss   serverhdrdirs	   localhdrss   localHeaders   localheaderinfos   caches   oss   paths   existss   mkdirs   grabs   Nones   headerinfofns   URLGrabErrors   es   errorlogs   syss   exits   uids   HeaderInfoNevralLoads
   HeaderInfo(   s   serveridlists
   HeaderInfos	   localpkgss   serverheaders   es   localheaderinfos   servercaches   serverids   headerinfofns
   servernames	   localhdrs(    (    s   /usr/share/yum/clientStuff.pys   get_package_info_from_servers6  sJ      
c          C   sw  h  }	 t i o_t } t } g  } t i i	 t i
 ƒ oN t i t i
 t i ƒ } t i i	 t i ƒ o t i t i t i ƒ } q† n | o0 y t i | ƒ } Wq½ t i j
 o q½ Xn | o4 y t i | | d ƒ Wqø t i j
 o qø Xn ~ ~ xg | D]_ } | i ƒ  t i | ƒ } | i ƒ  \ } } } }
 }  | i ƒ  } | |	 | |  | | |
 f <qW~ n |	 Sd S(   so   return dict of headers from the comps hdlist[2] files
       dict is format {(n, a, e, v, r): hdr_work objects}iDB N(   s
   returndicts   confs   usecompss   Nones   fds   fd2s   hdrlists   oss   paths   existss   hdlists   opens   O_RDONLYs   hdlist2s   rpms   readHeaderListFromFDs   errors   mergeHeaderListFromFDs   hdrs   fullFilelists   rpmUtilss   Header_Works   hdrobjs   nevras   ns   es   vs   rs   as
   fixedEpoch(   s   as   es   hdrs   hdrobjs   hdrlists   ns   fd2s   fds   vs
   returndicts   r(    (    s   /usr/share/yum/clientStuff.pys   returnCompsHeadersa  s>     
 		 
c         C   s  h  } t i o t i i t i ƒ oQt i d d ƒ x‚ d d d g D]q }	 t i i t i d |	 ƒ oM y t i
 t i d |	 ƒ Wq· t j
 o } t d d | ƒ | Sq· XqF qF Wt i d t i ƒ } | i d	 ƒ | i ƒ  } xt | D]l } t i | ƒ } | i ƒ  \ }
 } } } } | i ƒ  } |
 | f |  j o | | |
 | | | | f <qð qð W~ ~ t i d ƒ n | Sd  S(
   Ns   _dbpaths   /s   __db.001s   __db.002s   __db.003i   s#   Error deleting cachedb lockfile: %ss   dbPathiÿÿÿÿ(   s
   returndicts   confs
   usecachedbs   oss   paths   existss   cachedbs   rpms   addMacros   locks   unlinks   OSErrors   es   logs   rpmUtilss   Rpm_Ts_Works
   setVSFlagss   dbMatchs   mis   hs   Header_Works   hdrobjs   nevras   ns   vs   rs   as
   fixedEpochs   nulists   delMacro(   s   nulists   as   rs   es   vs   mis   cachedbs   hdrobjs
   returndicts   locks   ns   h(    (    s   /usr/share/yum/clientStuff.pys   returnCacheDBHeaders‡  s2       !c         C   s·  t  | ƒ } d } t ƒ  } t | ƒ }	 x|| D]t\ } } |  i | | ƒ } |  i | | ƒ }
 |  i | | ƒ } t i i | ƒ oÖ t d d | ƒ y t i | | | ƒ Wq. t j
 o˜ } t i ox t d t d ƒ | ƒ t i d j o t d t d ƒ ƒ n t d t d ƒ ƒ t d t d ƒ ƒ |  i | | ƒ qUt i | ƒ qYXq. n t i oút d	 t d
 ƒ | ƒ |  i | | ƒ \ } } } |  i | | ƒ } t i" | } t$ } t i& oz | t$ j oi |	 i' | | | | | f ƒ oF t d t d ƒ | ƒ |	 | | | | | f } | i) | d ƒ } q;q?n | t$ j oi | i' | | | | | f ƒ oF t d t d ƒ | ƒ | | | | | | f } | i) | d ƒ } qµn | t$ j o… y4 t* | |
 | d d d t i | | f h  f ƒ} WqGt j
 o> } t d t d ƒ |
 ƒ t d d | ƒ t+ i, d ƒ qGXn |  i- | | | ƒ n; t d t d ƒ |
 ƒ t d t d ƒ ƒ |  i | | ƒ | d } q. W~ ~	 t. ƒ  d  S(   Ni   i   s   checking cached header: %si    s   The file %s is damaged.s>   Please ask your sysadmin to update the headers on this system.s:   Please run yum in non-caching mode to correct this header.s&   Deleting entry from Available packagesi   s
   getting %si   s   getting %s from cachedbs   getting %s from comps dbs
   copy_locals	   checkfuncs   Error getting file %ss   %ssI   Cannot download %s in caching only mode or when running as non-root user.(/   s   lens   nulists   totals   currents   returnCompsHeaderss	   compsdicts   returnCacheDBHeaderss   cachedbdicts   ns   as
   HeaderInfos   localHdrPaths   LocalHeaderFiles   remoteHdrUrls   RemoteHeaderFiles   serverids   oss   paths   existss   logs   rpmUtilss   checkheaders   URLGrabErrors   es   confs   caches   errorlogs   _s   uids   deletes   unlinks   evrs   vs   rs   serverhdrdirs   basepaths   Nones   hdrfns
   usecachedbs   has_keys   hdrobjs   writeHeaders   grabs   syss   exits   setlocalhdrpaths	   close_all(   s
   HeaderInfos   nulists   basepaths   hdrfns   totals   currents   hdrobjs	   compsdicts   as   cachedbdicts   RemoteHeaderFiles   serverids   LocalHeaderFiles   es   ns   rs   v(    (    s   /usr/share/yum/clientStuff.pys   download_headers¥  sp    	 

"c	      
   C   sŸ	  d k  l } |  i d ƒ } t i d j oM | d d d d d d d	 d
 g j o$ t d t d ƒ ƒ t	 i
 d ƒ qy n | d j o{ t |  ƒ d j o t d t d ƒ ƒ | ƒ  q›	t i o  t i | | |  | | d ƒ q›	t i | | |  | | d ƒ n›| d j o© d d d g } t |  ƒ d j o t d t d ƒ ƒ | ƒ  nY t d t d ƒ ƒ t i |  | | d | ƒ t d t d ƒ ƒ t i |  | | d | ƒ t	 i
 d ƒ nå| d j o¬ d d d d g } t |  ƒ d j o t d t d ƒ ƒ | ƒ  nY t d t d ƒ ƒ t i |  | | d | ƒ t d t d ƒ ƒ t i |  | | d | ƒ t	 i
 d ƒ n,| d j o† t |  ƒ d j o# t i | | | | | d d ƒ q›	t i o# t i | | | | | |  d ƒ q›	t i | | | | | |  d ƒ n™| d j o˜ t |  ƒ d j o) t i | | | | | | | d d ƒ	 q›	t i o) t i | | | | | | | |  d ƒ	 q›	t i | | | | | | | |  d ƒ	 nô| d d f j oo t |  ƒ d j o | ƒ  t d t d ƒ ƒ q›	t i o t i | | |  d ƒ q›	t i | | |  d ƒ nr| d j oK t | ƒ d j o' t i | d | d ƒ t	 i
 d ƒ q›	t	 i
 d ƒ n| d  d! g j oö| d  j o
 d } n d } t |  ƒ d j o' t i | d | | ƒ t	 i
 d ƒ n|  d d" j o t i | d" | | ƒ nd|  d d# j o t i | d | | ƒ n9|  d d$ j o& | i ƒ  } t i | d | | ƒ n|  d d% j o’ g  } xE | i ƒ  D]7 \ } } | i# | | ƒ o | i$ | | f ƒ qqWt | ƒ d j o t i | d | | ƒ qzt d t d& ƒ ƒ n_ t d t d' ƒ ƒ t i | |  | | ƒ t d t d( ƒ ƒ | i ƒ  } t i | |  | | ƒ t	 i
 d ƒ n| d) j o t i% |  ƒ t	 i
 d ƒ næ| d j ot |  ƒ d j o$ t d t d* ƒ ƒ t	 i
 d ƒ n t i& | | | |  ƒ \ } } t | ƒ d j oM g  } x! | D] \ }
 }	 | i$ |	 ƒ q8Wt i | | | | | | d ƒ n t | ƒ d j oJ g  } x! | D] \ }
 }	 | i$ |	 ƒ q˜Wt i | | | | | d ƒ q›	nÃ| d
 j o† t |  ƒ d j o$ t d t d* ƒ ƒ t	 i
 d ƒ n t i+ | | | |  ƒ } t | ƒ d j o  t i | | | | | d ƒ q›	n0| d j ot |  ƒ d j p |  d d j o+ t d t d+ ƒ ƒ t- ƒ  t. | | ƒ n¼ |  d d, j o t d t d- ƒ ƒ t- ƒ  n |  d d. j o t d t d/ ƒ ƒ t/ ƒ  n^ |  d d0 j o$ t d t d1 ƒ ƒ t. | | ƒ n) t d t d2 ƒ |  d ƒ t	 i
 d ƒ t	 i
 d ƒ n | ƒ  d  S(3   N(   s   usagei    s   installs   updates   cleans   upgrades   erases   groupupdates   groupupgrades   groupinstalls-   You need to be root to perform these commandsi   s&   Need to pass a list of pkgs to installs   providess	   filenamess   dirnamess   Need a provides to matchi   s5   Looking in available packages for a providing packages5   Looking in installed packages for a providing packages   searchs   descriptions   summarys   packagers   names   Need an item to searchs   alls   removes$   Need to pass a list of pkgs to erases   check-updateid   s   lists   infos   updatess	   availables	   installeds   extrass2   No Packages installed not included in a repositorys   Looking in Available Packages:s   Looking in Installed Packages:s	   grouplists   Need a list of groups to updates!   Cleaning packages and old headerss   packagess   Cleaning packagess   headerss   Cleaning all headerss
   oldheaderss   Cleaning old headerss   Invalid clean option %s(0   s   yummains   usages   cmdss   pops   basecmds   confs   uids   errorlogs   _s   syss   exits   lens   tolerants	   pkgactions   installpkgss   tsInfos   nulists
   HeaderInfos	   rpmDBInfos   taglists   logs   searchs
   updatepkgss   uplists   upgradepkgss	   obsoleteds
   obsoletings	   erasepkgss   listpkginfos   shorts   newlists   NAkeyss   pkglists   names   archs   existss   appends
   listgroupss   updategroupss   installss   updatess   groups   pkgs   installgroupss   instpkglists   clean_up_packagess   clean_up_old_headerss   clean_up_headers(   s   cmdss   nulists   uplists   newlists
   obsoletings   tsInfos
   HeaderInfos	   rpmDBInfos	   obsoleteds   pkgs   groups   usages   pkglists   taglists   instpkglists   updatess   archs   shorts   names   installss   basecmd(    (    s   /usr/share/yum/clientStuff.pys   take_actionô  s   %
  #
##)
))

  # $$$c         C   s  x|  i ƒ  D]ý\ } }
 |  i | |
 ƒ } | d d d d g j oÆt d d | |
 f ƒ |  i | |
 ƒ } |  i | |
 ƒ } |  i
 | |
 ƒ }	 t i i | ƒ oã t d d t i i | ƒ ƒ t i | ƒ o( t d t d	 ƒ | ƒ t i | ƒ q‡t i | ƒ } | d
 } | d } | d } | i ƒ  \ } } } | | | f | | | f j o( t d t d ƒ | ƒ t i | ƒ q‡n t i i | ƒ o nÍ t d t d ƒ t i i | ƒ ƒ |  i | |
 ƒ } y7 t |	 | | d d d t i f  h  d d <f ƒ} WnJ t! j
 o> } t d t d ƒ | ƒ t d d | ƒ t# i$ d ƒ n X|  i% | |
 | ƒ |  i | |
 ƒ } t& i' |	 o|t i( | ƒ } | d j oR t d t d ƒ | ƒ t d t d ƒ | ƒ t d t d ƒ ƒ t# i$ d ƒ q| d j o? t d t d ƒ | ƒ t d t d ƒ | ƒ t# i$ d ƒ q| d j oR t d t d ƒ | ƒ t d t d ƒ | ƒ t d t d ƒ ƒ t# i$ d ƒ q| d j oR t d t d ƒ | ƒ t d t d ƒ | ƒ t d t d ƒ ƒ t# i$ d ƒ qq
q q Wt* ƒ  d S(   s:   download and check the packages needed for the transactions   us   uds   ius   ii   s   Download start for %s.%ss   Checking cached RPM %si    s   Damaged RPM %s, removing.s   epochs   versions   releasei   s&   NonMatching RPM version, %s, removing.s
   Getting %ss
   copy_locals	   checkfuncs   urlgraberrori   s   Error getting file %ss   %ss>   Error: Could not find the GPG Key necessary to validate pkg %ss=   Error: You may want to run yum clean or remove the file: 
 %ssF   Error: You may also check that you have the correct GPG keys installeds   Error Reading Header on %si   s   Error: Untrusted GPG key on %ss   Error: Unsigned Package %ssD   Error: You may need to disable gpg checking to install this package
N(+   s   tsInfos   NAkeyss   names   archs   states   logs	   getHeaders   pkghdrs   localRpmPaths   rpmlocs   serverids   oss   paths   existss   basenames   rpmUtilss   checkRpmMD5s   errorlogs   _s   unlinks   RPM_Works   rpmobjs   hdres   hdrvs   hdrrs   evrs   rpmes   rpmvs   rpmrs   remoteRpmUrls   remoterpmurls   grabs   localrpmpaths   URLGrabErrors   es   syss   exits   setlocalrpmpaths   confs   servergpgchecks   checkSigs   rcs	   close_all(   s   tsInfos   rpmlocs   states   rcs   pkghdrs   hdrvs   hdrrs   remoterpmurls   hdres   serverids   archs   localrpmpaths   es   names   rpmes   rpmrs   rpmvs   rpmobj(    (    s   /usr/share/yum/clientStuff.pys   download_packages•  sr      


#%c   	      C   sð   |  i t i ƒ t i d j o |  i t i ƒ n t i	 ƒ  } |  i | i d ƒ } g  } | o1 x. | D]" \ } \ } } } | i | ƒ qi Wn t | ƒ d j oF t d t d ƒ ƒ x | D] } t d d | ƒ qÀ Wt i d ƒ n d  S(   Ni    s    s   Errors reported doing trial runs   %si   (   s   checktss   setFlagss   rpms   RPMTRANS_FLAG_TESTs   confs   diskspacechecks   setProbFilters   RPMPROB_FILTER_DISKSPACEs   callbacks   RPMInstallCallbacks   cbs   runs   tserrorss	   reserrorss   descrs   etypes   mounts   needs   appends   lens   errorlogs   _s   errors   syss   exit(	   s   checktss   tserrorss   descrs   cbs   mounts	   reserrorss   needs   errors   etype(    (    s   /usr/share/yum/clientStuff.pys   tsTestÞ  s       c         C   su   |  d j  o d |  SnY |  d j  o |  d }  d |  Sn6 |  d j  o |  d }  d |  Sn |  d	 }  d
 |  Sd S(   sp   The purpose of this function is to accept a file size in bytes,
    and describe it in a human readable fashion.iè  s   %d bytesi@B f1000.0s   %.2f kBi Êš;f	1000000.0s   %.2f MBf1000000000.0s   %.2f GBN(   s   size(   s   size(    (    s   /usr/share/yum/clientStuff.pys	   descfsizeð  s     


i    s   normali   iÿÿÿÿi   i   i   i   i   c         C   s_  t  i o t d d ƒ t i ƒ  n | d j o t  i } n t  i |  ƒ } d } | i
 ƒ  } x9 t  i |  D]* } t i | | ƒ d j o | } Pqo qo W| d j o t d | ‚ n | t | ƒ } t d d | ƒ t d d	 | ƒ | i ƒ  } x_| t j oQyˆ t i | ƒ \ } } } } } } t i i | d
 | ƒ } t i | | | | | | f ƒ } t! | | | | | | | t  i' |
 | ƒ
 SWqü t* j
 o¶ } | i, |
 j oš | o! t. d t/ d ƒ | | f ƒ n | o | d } | i | ƒ } n | i0 ƒ  | i ƒ  } | t j o& | o t. d t/ d ƒ ƒ n ‚  qQqV‚  qü Xqü Wd S(   sÅ  Wrap retry grab and add in failover stuff.  This needs access to
    the conf class as well as the serverID.

    nofail -- Set to true to go through the failover object without
       incrementing the failures counter.  (Actualy this just resets
       the failures counter.)  Usefull in the yumgroups.xml special case.

    We do look at retrycodes here to see if we should return or failover.
    On fail we will raise the last exception that we got.i   s1   Disabling Keepalive support by user configurations   normals    i    s*   %s isn't made from a base URL I know abouti   s   failover: baseURL = s   failover: path = s   /i   s:   retrygrab() failed for:
  %s%s
  Executing failover methods   failover: out of servers to tryN(1   s   confs	   keepalives   logs
   urlgrabbers   disable_keepalives   progress_objs   get_failClasss   serverIDs   fcs   bases	   get_indexs   findexs	   serverurls   roots   strings   finds   urls	   Exceptions   lens   filepaths   get_serverurls   Nones   urlparses   schemes   hosts   paths   parms   querys   frags   oss   normpaths
   urlunparses   finalurls	   retrygrabs   filenames
   copy_locals   close_connections   throttles	   bandwidths   retriess
   retrycodess	   checkfuncs   URLGrabErrors   es   errnos   nofails   errorlogs   _s   server_failed(   s   serverIDs   urls   filenames   nofails
   copy_locals   close_connections   progress_objs   throttles	   bandwidths   numtriess
   retrycodess	   checkfuncs   querys   filepaths   findexs   schemes   frags   parms   finalurls   hosts   fcs   bases   paths   roots   e(    (    s   /usr/share/yum/clientStuff.pys   grabÿ  sV      	 !!	!

(;   s   strings   rpms   oss   os.paths   syss   gzips   archworks   fnmatchs	   pkgactions   callbacks   rpmUtilss   times   urlparses   typess
   urlgrabbers	   close_alls   urlgrabs   URLGrabErrors	   retrygrabs   set_user_agents   i18ns   _s
   stripENVRAs   stripEVRs   stripNAs   getENVRAs   str_to_versions   HeaderInfoNevralLoads   Nones   nameInExcludess   rpmdbNevralLoads
   readHeaders   correctFlagss   correctVersions   returnObsoletess   getupdatedhdrlists   bestversions   formatRequires   actionslistss   printactionss   filelogactionss   shortlogactionss   userconfirms   nasorts   getfilelists   clean_up_headerss   clean_up_packagess   clean_up_old_headerss	   printtimes   get_groups_from_serverss   get_package_info_from_serverss   returnCompsHeaderss   returnCacheDBHeaderss   download_headerss   take_actions   download_packagess   tsTests	   descfsizes   grab(7   s   clean_up_old_headerss   getfilelists
   stripENVRAs	   printtimes   tsTests   rpms	   descfsizes	   close_alls   filelogactionss
   readHeaders   take_actions   returnCompsHeaderss   actionslistss   clean_up_packagess   stripNAs   correctFlagss   getENVRAs   nameInExcludess   typess   formatRequires   correctVersions   nasorts   URLGrabErrors   get_package_info_from_serverss   strings   urlgrabs   download_packagess   download_headerss   stripEVRs   userconfirms   shortlogactionss   syss   gzips   str_to_versions	   pkgactions   get_groups_from_serverss   grabs   _s   returnCacheDBHeaderss   returnObsoletess   getupdatedhdrlists
   urlgrabbers   archworks   urlparses   callbacks   printactionss   HeaderInfoNevralLoads   clean_up_headerss   times   fnmatchs	   retrygrabs   rpmUtilss   oss   bestversions   rpmdbNevralLoad(    (    s   /usr/share/yum/clientStuff.pys   ?   sj   																						,					f	†	!			=	'	1					
				+	&		O	¡	I		