ó
È”Mc           @   s{  d  d l  Z  d  d l m Z m Z m Z m Z d  d l m Z d  d l Td  d l	 Td  d l
 Z
 d  d l Z d  d l Z d  d l Z y d  d l Z Wn^ e k
 rò d  d l m Z e j d ƒ e k rà d  d l Z e j ƒ  n  e e d ƒ ‚ n Xe j Z d d	 d
 d d d d d d d d g Z e d „ Z d  d l m Z d e f d „  ƒ  YZ d	 e  f d „  ƒ  YZ! d
 e! f d „  ƒ  YZ" d e# f d „  ƒ  YZ$ d e$ e% f d „  ƒ  YZ& d e$ e' f d „  ƒ  YZ( d e$ e) f d „  ƒ  YZ* d e$ e+ f d „  ƒ  YZ, d e# f d „  ƒ  YZ- i d d  6d d! 6d d" 6d d# 6Z. e. d$ „ Z/ d% e0 f d& „  ƒ  YZ1 e1 ƒ  Z2 d' „  Z3 e4 j5 d( e3 ƒ d S()   iÿÿÿÿN(   t   checkdept   vercmpt	   splitarcht   splitrelease(   t   isGlob(   t   *(   t   DEBUGs	   log-levels$   'rpm' python module is not availablet
   RPMPackaget   RPMProvidest   RPMNameProvidest   RPMPreRequirest   RPMRequirest   RPMUpgradest   RPMConflictst   RPMObsoletest   rpmt   getTSt   system_providesc         C   s‰  t  j j t j d d ƒ ƒ } t t d ƒ s= t j | k r| t _ t j d ƒ ru t j	 d d t j d ƒ ƒ n  t j
 t j ƒ t _
 t j d t ƒ s² t j
 j t j ƒ n  t j d d ƒ } t  j j t j | ƒ } t  j j | ƒ s7y t  j | ƒ Wq7t k
 r3} t t d ƒ | t | ƒ f ‚ q7Xn  t  j j t  j j | d	 ƒ ƒ s¹y t j
 j ƒ  Wn0 t j t f k
 r›t t d
 ƒ t j ‚ q¹Xt j t d ƒ t j ƒ n  t  j j t j d ƒ } t  j j | ƒ sy t  j | ƒ Wqt k
 rqXqn  |  r~t j d ƒ rCt j	 d d t j d ƒ ƒ n  t j
 t j ƒ } t j d t ƒ sz| j t j ƒ n  | St j
 Sd  S(   Ns   rpm-roott   /t   tss
   rpm-dbpatht   _dbpaths   rpm-check-signaturess   var/lib/rpms#   Could not create rpm-root at %s: %st   Packagess'   Couldn't initizalize rpm database at %ss"   Initialized new rpm database at %ss   var/tmp(   t   ost   patht   abspatht   sysconft   gett   hasattrR   t   rootR   t   addMacroR   t   Falset
   setVSFlagst   _RPMVSF_NOSIGNATURESt   joint   isdirt   makedirst   OSErrort   Errort   _t   unicodet   isfilet   initDBt   errort   ifacet   warning(   t   newt   rpm_roott
   rpm_dbpatht   dbdirt   et   tmpdirR   (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR   2   sL    	 !
 (   t   RPMPackageManagerc           B   sM   e  Z d Z e Z d  „  Z d „  Z d „  Z e j	 d ƒ d „ Z
 d „  Z RS(   c         C   sz  |  j  | j  k s$ |  j | j k r( t St j |  | ƒ r> t St j } t |  j	 ƒ t | j	 ƒ k s;t |  j
 ƒ t | j
 ƒ k s;| |  j	 ƒ | | j	 ƒ k s;| |  j
 ƒ | | j
 ƒ k s;| g  |  j D]( } | j  rÌ | j  d d k rÌ | ^ qÌ ƒ | g  | j D]( } | j  r| j  d d k r| ^ qƒ k r?t S| |  j ƒ } | | j ƒ } | | k rvx‚ | D]z } | j  d d k sp| | k r›qpn  xL | D]@ } | j  | j  k r¢| j | j k r¢| j | j k r¢Pq¢q¢Wt SqpWx… | D]z } | j  d d k sõ| | k r qõn  xL | D]@ } | j  | j  k r'| j | j k r'| j | j k r'Pq'q'Wt SqõWn  t S(   Ni    R   (   t   namet   versionR   t   Packaget   equalst   Truet   dictt   fromkeyst   lent   upgradest	   conflictst   providest   requirest   relation(   t   selft   othert   fkt   xt   sreqst   oreqst   sreqt   oreq(    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR7   e   sD    $	;Ac         C   sŸ   t  | t ƒ s t S|  j | j k r) t St |  j ƒ \ } } t | j ƒ \ } } t | ƒ t | ƒ k r t j d ƒ r t St	 j
 d |  ƒ s• t S| | k S(   Ns   rpm-strict-multilibs   multi-version(   t
   isinstanceR   R8   R5   R   R   t   getArchColorR   R   t   pkgconft   testFlag(   RA   RB   t   selfvert   selfarcht   othervert	   otherarch(    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyt   coexists‹   s    c         C   sA   | s
 t  St |  j ƒ \ } } t | ƒ \ } } t | | | ƒ S(   N(   R8   R   R5   R    (   RA   R@   R5   RM   RN   t   vert   arch(    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyt   matches™   s
    s   [0-9]+:c         C   s¦  |  j  } t |  j ƒ \ } } | j d | ƒ } d } | j } xG| j D]<\ }	 }
 | j |	 ƒ rm | } n | } d |	 k rt |	 d | | | f |
 | ƒ \ } } t |	 d | | f |
 | ƒ \ } } t |	 d | t | ƒ d | f |
 | ƒ \ } } no t |	 | |
 | ƒ \ } } t |	 d | | f |
 | ƒ \ } } t |	 d | t | ƒ d f |
 | ƒ \ } } t	 | | | | ƒ } qI W| r¢| j
 |  | ƒ n  d  S(   Nt    i    t   @s   %s-%s@%ss   %s@%ss   %s-%s(   R4   R   R5   t   subt
   ignorecaset   nameversiont   searcht   globdistanceR   t   maxt	   addResult(   RA   t   searchert   _epochret   mynamet   myversionwithepocht   myarcht   myversionwithoutepocht   ratiot   icRY   t   cutofft	   myversionR&   t   ratio1t   ratio2t   ratio3(    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyRZ       s8    							c         C   s  t  |  j | j ƒ } t | ƒ t k rý | d k rý |  j | j k rý t |  j ƒ \ } } t | j ƒ \ } } | | k r™ t  t | ƒ t | ƒ ƒ } n  | d k rú | | k rÉ t |  j | j ƒ } n  | d k r÷ t  t | ƒ t | ƒ ƒ } q÷ qú qý n  | d k S(   Ni    iÿÿÿÿ(	   t   cmpR4   t   typeR   R5   R   RJ   R   t	   archscore(   RA   RB   t   rcRM   RN   RO   RP   (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyt   __lt__À   s    ((    (   t   __name__t
   __module__t	   __slots__R3   t   packagemanagerR7   RQ   RT   t   ret   compileRZ   Ro   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR   _   s   	&		 c           B   s   e  Z d  Z RS(   (    (   Rp   Rq   Rr   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR   Ï   s    c           B   s   e  Z d  Z RS(   (    (   Rp   Rq   Rr   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR	   Ð   s    t
   RPMDependsc           B   s   e  Z d Z d  „  Z RS(   c         C   s{   t  | t ƒ r& t | ƒ t k	 r& t S|  j s: | j r> t St |  j ƒ \ } } t | j ƒ \ } } t | |  j	 | ƒ S(   N(
   RI   R   Rl   t   ProvidesR   R5   R8   R   R    R@   (   RA   t   prvRM   RN   t   prvvert   prvarch(    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyRT   Ö   s    "(    (   Rp   Rq   Rr   RT   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyRv   Ò   s   c           B   s   e  Z d  Z RS(   (    (   Rp   Rq   Rr   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR
   ß   s    c           B   s   e  Z d  Z RS(   (    (   Rp   Rq   Rr   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR   à   s    c           B   s   e  Z d  Z RS(   (    (   Rp   Rq   Rr   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR   á   s    c           B   s   e  Z d  Z RS(   (    (   Rp   Rq   Rr   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR   â   s    c           B   s   e  Z d Z d  „  Z RS(   c      	   C   s¹   t  | t ƒ r& t | ƒ t k	 r& t S|  j r= | j r= t S|  j rT | j rT t St |  j ƒ \ } } t | j ƒ \ } } | r¦ | r¦ t | ƒ t | ƒ k r¦ t St	 | |  j
 | ƒ S(   N(   RI   R	   Rl   Rw   R   R5   R8   R   RJ   R    R@   (   RA   Rx   RM   RN   Ry   Rz   (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyRT   ç   s    "(    (   Rp   Rq   Rr   RT   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR   ä   s   i   t   x86_64t   ppc64t   s390xt   sparc64c         C   s   | j  |  d ƒ S(   Ni   (   R   (   RS   t   _cm(    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyRJ   ÷   s    t   SystemProvidesc           B   s    e  Z d  „  Z d d d „ Z RS(   c         C   s™   i  |  _  x‰ d d d d g D]u } y t t j | ƒ ƒ  } Wn t t t f k
 rW q Xx6 | D]. } |  j  j | j ƒ  g  ƒ j	 | j
 ƒ  ƒ q_ Wq Wd  S(   Nt   Sysinfot   Rpmlibt   Getconft   Cpuinfo(   t	   _providest   getattrR   t   dst	   TypeErrort   SystemErrort   AttributeErrort
   setdefaultt   Nt   appendt   EVR(   RA   t   attrR‡   t   item(    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyt   __init__ý   s    	c         C   sh   |  j  j | ƒ } | d  k	 rd | d  k s6 | d  k r: t Sx' | D] } t | | | ƒ rA t SqA Wn  t S(   N(   R…   R   t   NoneR8   R    R   (   RA   R4   R@   R5   t   prvversRy   (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyt   match  s    N(   Rp   Rq   R‘   R’   R”   (    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyR€   û   s   	c         C   st   |  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   bindR   R7   RQ   RT   RZ   Ro   Rv   R   (   t   psyco(    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyt   enablePsyco  s    s   enable-psyco(6   t   zlibt   rpmverR    R   R   R   t   smart.util.strtoolsR   t   smart.cachet   smartt   fnmatcht   stringR   Rt   R   t   ImportErrort   smart.constR   R   R   t	   tracebackt	   print_excR%   R&   Rm   t   __all__R   R   t   smart.backends.rpm.pmR3   R6   R   Rw   R   R	   t   DependsRv   t   PreRequiresR
   t   RequiresR   t   UpgradesR   t	   ConflictsR   R   t	   _COLORMAPRJ   t   objectR€   R   R—   t   hookst   register(    (    (    s;   /usr/lib/python2.7/dist-packages/smart/backends/rpm/base.pyt   <module>   sH   "

	+p"			