;ò
=5¡@c           @   s^  d  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 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" d „  Z# d „  Z$ d „  Z% d Z& d „  Z' d S(   s   utility functions for up2dateN(   s   _s   N_c         C   s™   |  d @}  d } |  d j ot |  t i @o | d } n |  t i @o | d } n |  t i @o | d } n |  t i @o | d } q‘ n | Sd  S(   Niÿ   s    i    s   <s   >s   =s   S(   s   flagss   strs   rpms   RPMSENSE_LESSs   RPMSENSE_GREATERs   RPMSENSE_EQUALs   RPMSENSE_SERIAL(   s   flagss   str(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   rpmFlagsToOperator   s    
c          C   sª   g  } t i ƒ  } | i | d ƒ | d } | on t i | d ƒ }  g  } xE |  D]= } t i
 i t i
 i t i
 i | ƒ ƒ ƒ } | i | ƒ qS W| | } n | Sd  S(   Ns
   storageDirs
   packageDirs   :(   s   dir_lists   configs   initUp2dateConfigs   cfgs   appends
   dir_strings   strings   splits   pathss	   fullpathss   paths   oss   normpaths   abspaths
   expandusers   fullpath(   s   pathss
   dir_strings   cfgs	   fullpathss   dir_lists   paths   fullpath(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   getPackageSearchPath'   s    
 *c         C   s!   d |  d |  d |  d f Sd  S(   Ns   %s-%s-%si    i   i   (   s   pkg(   s   pkg(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   pkgToString6   s    c         C   s(   d |  d |  d |  d |  d f Sd  S(   Ns   %s-%s-%s.%si    i   i   i   (   s   pkg(   s   pkg(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   pkgToStringArch9   s    c         C   s=   d } x" |  D] } | t | ƒ d } q W| d } | Sd  S(   Ns   (s   ,s   )(   s   packagess   pkgss   pkgs   pkgToString(   s   pkgss   packagess   pkg(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   pkglistToString<   s     
c          C   s:   t  i }  t d ƒ GHt i t  i d |  ƒ t  i ƒ  d  S(   Ns   Restarting up2datei    (   s   syss   argvs   argss   _s   oss   execvps   exit(   s   args(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   restartUp2dateC   s    
c         C   su   |  d } | d } t i | ƒ } t i | ƒ } | | j o d Sn | | j  o d Sn | | j o d Sn d  S(   Ni   i   iÿÿÿÿi    (   s   pkg1s   arch1s   pkg2s   arch2s   rpms	   archscores   score1s   score2(   s   pkg1s   pkg2s   score1s   score2s   arch1s   arch2(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   comparePackagesArchQ   s    

c         C   sØ   |  d } |  d } |  d } | d } | d } | d } | d j p | d j p
 | d j o
 t } n d | } | d j p | d j p
 | d j o
 t } n d | } t	 i
 | | | f | | | f ƒ Sd  S(   Ni   i   i   s    i    s   0s   %s(   s	   pkgLabel1s   version1s   release1s   epoch1s	   pkgLabel2s   version2s   release2s   epoch2s   Nones   rpms   labelCompare(   s	   pkgLabel1s	   pkgLabel2s   release1s   version1s   version2s   release2s   epoch2s   epoch1(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   comparePackages`   s    





'

'

c         C   s¯   |  } d } t i | d ƒ d j o- t i | d d ƒ } | d } | d } n d } t i | d ƒ d j o- t i | d d ƒ } | d } | d } n | | | f Sd  S(   Ns    s   :i    i   s   0s   -(   s   vers   ss   epochs   strings   finds   splits   arrs   release(   s   vers   arrs   epochs   ss   release(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   parseObsoleteVersionv   s    

c         C   s;   |  d j  o t i Sn |  d j o t i Sn t i Sd  S(   Ni    (   s   values   rpms   RPMSENSE_LESSs   RPMSENSE_GREATERs   RPMSENSE_EQUAL(   s   value(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   cmp2rpmSense…   s
    c         C   s¸   |  \ }
 } } } } } } } | d j o d Sn | d | d | d | d f } t | ƒ \ } } } | | | | f } t | | ƒ }	 t |	 ƒ } | t | ƒ @o d Sn d Sd  S(   Ns   0i   i    i   i   (   s   obss   ns   vs   rs   es   as   obsNames
   obsVersions   obsSenses   pkgs	   candidates   parseObsoleteVersions   vvs   rrs   ees   obsCandidates   comparePackagess   rets   cmp2rpmSenses   ops   int(   s   obss   pkgs   as   obsSenses   es   rrs	   candidates   ees   obsNames   rets   ns   rs   vvs   vs
   obsVersions   ops   obsCandidate(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   isObsoletedŽ   s    "c         C   s¯   t  i ƒ  } y t |  d ƒ } Wn d Sn X| i ƒ  } | i | ƒ ~ | i	 ƒ  t
 i } d } xB | i ƒ  D]4 } t | ƒ } | | | d ?d @| | d @} qo W| Sd  S(   Ns   rs    i   i   (   s   md5s   news   hashs   opens   fileNames   fs   reads   fDatas   updates   closes   strings	   hexdigitss   hexs   md5ress   digests   cs   ords   i(   s   fileNames   cs   hashs   fs   is   hexs   md5ress   fData(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   md5sumŸ   s     
	 &c           C   s\   t  i d t i ƒ  d ƒ o d Sn4 t  i d t i ƒ  d ƒ o d Sn t i ƒ  d Sd  S(   Ns   i.86i   s   i?86s   sparcs   sparc*(   s   res   searchs   oss   uname(    (    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   archGlobµ   s
    c          C   sƒ   t  i ƒ  }  t } |  d } | d j o" y |  d } WqK t } qK Xn | o) | d  d j o | d } q{ | } n | Sd  S(   Ns	   httpProxys    s   pkgProxyi   s   http://(   s   configs   initUp2dateConfigs   cfgs   Nones   proxys	   proxyHost(   s   cfgs   proxys	   proxyHost(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   getProxySetting½   s    

c          C   s   t  i ƒ  }  t i ƒ  } x` | i d d ƒ D]= } |  d o |  d } n | d } | d | f } | Sq+ Wt
 i d ƒ ‚ d  S(   Ns   Providenames   redhat-releases   versionOverrides   versions   names{   Could not determine what version of Red Hat Linux you are running.
If you get this error, try running 

		rpm --rebuilddb

(   s   configs   initUp2dateConfigs   cfgs   transactions   initReadOnlyTransactions   tss   dbMatchs   hs   versions   releaseVersions   up2dateErrorss   RpmError(   s   cfgs   releaseVersions   tss   versions   h(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   getOSVersionAndReleaseÐ   s     
c          C   s   t  ƒ  \ }  } | Sd  S(   N(   s   getOSVersionAndReleases   releases   version(   s   releases   version(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys
   getVersionã   s    c          C   s   t  ƒ  \ }  } |  Sd  S(   N(   s   getOSVersionAndReleases   releases   version(   s   releases   version(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   getOSReleaseè   s    c          C   sU   t  i d t  i ƒ o t  i ƒ  d Sn t d d ƒ }  t i |  i ƒ  ƒ } | Sd  S(   Ns   /etc/rpm/platformi   s   r(
   s   oss   accesss   R_OKs   unames   opens   fds   strings   strips   reads   platform(   s   fds   platform(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   getArchì   s
    c          C   sˆ   t  i ƒ  d }  t |  ƒ d j o" |  d d j o |  d d !d j o
 d }  n |  d j o
 d }  n |  d	 j o
 d
 }  n |  Sd  S(   Ni   i    s   ii   s   86s   i386s   sparc64s   sparcs   s390xs   s390(   s   oss   unames   archs   len(   s   arch(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   getUnameArch÷   s    8


c           C   s   d Sd  S(   Ns   4.3.19(    (    (    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   version  s    c         C   sV   t  |  ƒ t  g  ƒ j o t d „  |  ƒ } n  d |  d |  d |  d f } | Sd  S(   Nc         C   s   d |  d |  d |  d f S(   Ns   %s-%s-%si    i   i   (   s   a(   s   a(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   <lambda>  s    s   %s-%s-%si    i   i   (   s   types   pkglists   maps   foo(   s   pkglists   foo(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   pprint_pkglist  s    c         C   sy  |  d } | t j o
 d } n |  d } |  d } |  d } |  d } |  d } |  d }	 |  d	 }
 t
 | ƒ t
 g  ƒ j o t | ƒ d
 j o\ g  } xK t t | ƒ ƒ D]7 } | i | | |	 | |
 | | | | | | g ƒ q¬ W| Snƒ d } | o | d } n d } | o1 t
 | ƒ t
 g  ƒ j o | d } qH| } n | | |	 | |
 | d | | g } | g St Sd  S(   Ns   epochs    s   obsoletenames   obsoleteversions   obsoleteflagss   names   versions   releases   archi   i    (   s   hdrs   epochs   Nones   obsnames   obsverss   obsflagss   names   versions   releases   archs   types   lens   obss   ranges   indexs   appends   verss   flags(   s   hdrs   indexs   verss   obsverss   obsnames   obsflagss   epochs   versions   flagss   releases   archs   obss   name(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   genObsoleteTupleFromHdr  s6    








, 5
"c          C   sH   t  i ƒ  }  d  k } t i |  d ƒ } t | | i ƒ | | i Sd  S(   Ns
   storageDir(	   s   configs   initUp2dateConfigs   cfgs   statvfss   oss   dfInfos   longs   F_BAVAILs   F_BSIZE(   s   cfgs   statvfss   dfInfo(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   freeDiskSpace5  s    	s   /var/lib/up2date/dbtimestampc          C   sy   y t  t d ƒ } | i ƒ  Wn d d h  f Sn Xt i ƒ  }  y t i t |  |  f ƒ Wn d d t h  f Sn Xd  S(   Ns   w+i    s!   unable to open the timestamp files6   unable to set the time stamp on the time stamp file %s(   s   opens   LAST_UPDATE_FILEs   files   closes   times   ts   oss   utime(   s   ts   file(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   touchTimeStampF  s    ((   s   __doc__s   res   oss   syss   times   rpms   strings   md5s   rpmUtilss   up2dateErrorss   transactions   configs   rhpl.translates   _s   N_s   rpmFlagsToOperators   getPackageSearchPaths   pkgToStrings   pkgToStringArchs   pkglistToStrings   restartUp2dates   comparePackagesArchs   comparePackagess   parseObsoleteVersions   cmp2rpmSenses   isObsoleteds   md5sums   archGlobs   getProxySettings   getOSVersionAndReleases
   getVersions   getOSReleases   getArchs   getUnameArchs   versions   pprint_pkglists   genObsoleteTupleFromHdrs   freeDiskSpaces   LAST_UPDATE_FILEs   touchTimeStamp(&   s   getUnameArchs   LAST_UPDATE_FILEs   pkgToStringArchs   up2dateErrorss   pkgToStrings   rpms   rpmFlagsToOperators   parseObsoleteVersions   getOSReleases   pkglistToStrings   archGlobs   res   versions   N_s   getArchs   configs   getPackageSearchPaths   strings   freeDiskSpaces   cmp2rpmSenses   syss   touchTimeStamps
   getVersions   pprint_pkglists   _s   md5s   transactions   getOSVersionAndReleases   getProxySettings   genObsoleteTupleFromHdrs   md5sums   comparePackagesArchs   restartUp2dates   times   isObsoleteds   comparePackagess   rpmUtilss   os(    (    s-   /usr/share/rhn/up2date_client/up2dateUtils.pys   ?   sJ   																																		#		