ó
È”Mc           @   sÇ   d  d l  m Z d  d l m Z m Z d  d l Td  d l Td  d l Z d  d l Z d  d l	 Z	 d  d l
 m Z d  d l m Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d „  Z e j d e ƒ d S(   iÿÿÿÿ(   t	   splitarch(   t   PackageInfot   Loader(   t   *N(   t   sub(   t   wrapt   YaST2PackageInfoc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s&   t  j |  | ƒ | |  _ | |  _ d  S(   N(   R   t   __init__t   _loadert   _info(   t   selft   packaget   loadert   info(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyR   "   s    	c         C   s¤   t  |  j j ƒ \ } } |  j j j d ƒ } | d d k ry | d d !j ƒ  ry | j d ƒ } | |  j j d ƒ 7} n  t	 j
 | |  j j | |  j j d ƒ ƒ g S(   Nt   /iÿÿÿÿt   1iþÿÿÿt   mediat   filename(   R    t   _packaget   versionR   t   _baseurlt   rstript   isdigitR	   t   gett	   posixpatht   joint   _datadir(   R
   R   t   archt   baseurl(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   getURLs'   s    $c         C   s   t  |  j j d ƒ ƒ S(   Nt   instsize(   t   intR	   R   (   R
   (    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   getInstalledSize3   s    c         C   s   t  |  j j d ƒ ƒ S(   Nt   size(   R   R	   R   (   R
   t   url(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   getSize6   s    c         C   s   |  j  j d d ƒ S(   Nt   summaryt    (   R	   R   (   R
   (    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt
   getSummary9   s    c         C   s   |  j  j d d ƒ S(   Nt   descriptionR%   (   R	   R   (   R
   (    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   getDescription<   s    c         C   s   |  j  j d d ƒ S(   Nt   groupR%   (   R	   R   (   R
   (    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   getGroup?   s    (	   t   __name__t
   __module__R   R   R    R#   R&   R(   R*   (    (    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyR   !   s   						t   YaST2Loaderc           B   s`   e  Z e j d  Z d	 d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z RS(
   i   c         C   s5   t  j |  ƒ | |  _ | |  _ | |  _ | |  _ d  S(   N(   R   R   R   R   t   _pkginfofilet   _pkgdescfile(   R
   R   t   datadirt   pkginfofilet   pkgdescfile(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyR   F   s
    			c         C   s   t  | |  | j |  ƒ S(   N(   R   t   loaders(   R
   t   pkg(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   getInfoM   s    c         C   sP   t  |  j ƒ } d } x* | D]" } | j d ƒ r | d 7} q q W| j ƒ  | S(   Ni    s   =Pkg: i   (   t   openR.   t
   startswitht   close(   R
   t   pkgfilet   totalt   line(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   getLoadStepsP   s    
c         C   s%  g  } t  } x|  j D]} | j d | d ƒ r? t } q q | j d | d ƒ rZ Pq | d  d k rp q q | t k r | j d ƒ } t | ƒ d k r¶ | j | d  d  f ƒ n  t | ƒ d	 k rã d
 |  j | |  j	 f GHn  t | ƒ d k r| j | d | d | d	 f ƒ qq q W| S(   Nt   +t   :t   -i   s   rpmlib(s   config(t    i   i   sL   Error parsing package '%s' (tag '%s'). Possibly corrupted channel file (%s).i   i    (   s   rpmlib(s   config((
   t   Falset	   _pkgentryR7   t   Truet   splitt   lent   appendt   Nonet
   curpkgnamet   _channel(   R
   t   tagt   datat   foundR;   t   parts(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   getInfoEntityY   s&    ,c            sD   t  g ‰  ‡  f d †  } d j g  | D] } | | ƒ r% | ^ q% ƒ S(   Nc            s<   ˆ  d r |  d k ˆ  d <t  S|  d k r8 t ˆ  d <t  St S(   Ni    t   >t   <(   RA   RC   (   t   c(   t   intag(    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   chks   s    

R%   (   RA   R   (   R
   t   sRS   RQ   (    (   RR   s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt	   stripTagsn   s    	c         C   s©  d } } } } |  j  rz|  j j | ƒ rz|  j j |  j | d ƒ |  j j ƒ  d d !} d } x|  j j ƒ  } | j d ƒ r‰ Pn  | j d ƒ r¤ t } qg n  | j d ƒ s¿ | t k rË t } qg n  | j d ƒ ræ t } qg n  | j d	 ƒ s| t k rt } qg n  | j d
 ƒ sg | j d ƒ r1qg n  | sH| d  d k rLPn  x% t	 | d ƒ D] } | d | } q\Wqg n  t
 d d | ƒ } |  j | ƒ } | | d f S(   NR%   i   i   iÿÿÿÿs   ##--s   -Inss   +Ins:s   -Dels   +Del:s   +Des:s   <!--s   -Des:iL   s   
s   <li>s   * (   R/   t   _pkgoffsetst   has_keyt	   _descfilet   seekt   readlineR7   RA   RC   R   R   RU   (   R
   t	   entrynameR$   R'   t   reading_inst   reading_delR;   t   wline(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   readPkgSummDesc}   s<     c   /      C   sª  t  } t } t } t } t } t } t } d$ } d% }	 d& }
 d' } g  } } }
 } d } } } } } } } x”|  j D]‰} | d  } | d k r<| d } | j d ƒ } y | d } Wn$ t	 k
 rå t
 d |  j ƒ ‚ n Xt j | ƒ d k rÿ d  S| d } | |  _ | d	 } | d
 } d | | | f } q| | d k rZ|  j d ƒ } q| | d k rx|  j d ƒ } q| | d k r–|  j d ƒ }	 q| | d k r´|  j d ƒ }
 q| | d k rÒ|  j d ƒ } q| | d k r| d j d ƒ } | d } | d	 } q| | d k r>| d j d ƒ } | d } | d	 } q| | d k rW| d } q| | d k r| | d j ƒ  } x |  j D] }  t |  j ƒ \ }! }" |  j | k r}|! | d	 d | d
 k r}|" | d k r}|  j |  ƒ }# |# j ƒ  } |# j ƒ  } Pq}q}Wq| q| W| d k r9| d k r9|  j | ƒ \ } } n  i | d 6| d 6| d 6| d 6| d 6| d  6| d! 6}$ i  }% xb |	 D]Z \ }& }' }( |& | k r¾|( | d | k r¾| |& | f }) n | |& |( f }) t |% |) <q}Wi  }* xr | D]j \ }& }' }( |' d  k sd" |' k r$| |& |( f |% k p6t j |& |' |( ƒ sèt |* | |& |' |( f <qèqèWxr | D]j \ }& }' }( |' d  k s„d" |' k r™| |& |( f |% k p«t j |& |' |( ƒ s]t |* | |& |' |( f <q]q]Wi  }+ x- |
 D]% \ }& }' }( t |+ | |& |' |( f <qØWi  }, t |, | | d# | f <x= | D]5 \ }& }' }( | |& |' |( f }- t |, |- <t |+ |- <q$W|  j | | | f |% j ƒ  |* j ƒ  |, j ƒ  |+ j ƒ  ƒ }. |$ |. j |  <d  S((   NR%   i   s   =Pkgi   R@   i   s=   Error loading YaST2 channel info. Possibly corrupted file.
%si    i   i   s   %s-%s@%ss   +Reqt   Reqs   +Prqt   Prqs   +Prvt   Prvs   +Cont   Cons   +Obst   Obss   =Locs   =Sizs   =Grps   =ShrR?   R$   R'   R!   R   R)   R   R   t   =RP   (    (    (    (    (   t
   RPMPackaget   RPMRequirest   RPMPreRequirest   RPMProvidest   RPMConflictst   RPMObsoletest   RPMNameProvidesRB   RD   t
   IndexErrort   ErrorR.   t   rpmt	   archscoreRH   RN   t	   _packagesR    R   t   nameR5   R&   R(   R_   RC   RG   t   system_providest   matcht   buildPackaget   keysR3   (/   R
   t   PkgR`   Ra   Rb   Rc   Rd   t   NPrvt   requirest   providest	   conflictst	   obsoletest   prequireR)   R$   R'   R!   R   R   R   R;   t   kwR[   t	   namepartsR   Rr   R   t   releaset   versionarcht   locpartst	   sizepartst   sharest   pkgshrt   shrvert   shrarcht   shrinfoR   t   prvdictt   nt   rt   vt   prvt   reqdictt   cnfdictt   upgdictt   upgR4   (    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt
   parseEntryž   sÄ    


	



,

 --
c         C   sÖ  t  j |  j ƒ } y t |  j ƒ |  _ Wn% t t f k
 rO } t d | ‚ n X|  j	 ræ yn t |  j	 ƒ |  _
 i  |  _ xL |  j
 j ƒ  } | s“ Pn  | d  d k rz |  j
 j ƒ  |  j | d d !<qz qz Wqæ t t f k
 râ } qæ Xn  xÆ |  j j ƒ  } | sPn  | d k rqé n  | d  d k ré g  |  _ |  j j | d  ƒ xD |  j j ƒ  d  } | saPn  | d  d k ruPn  |  j j | ƒ qD|  j ƒ  | j d	 ƒ | j ƒ  qé qé i  |  _ |  j j ƒ  |  j
 j ƒ  d  S(
   Ns*   Error opening package information file. %si   s   =Pkg: iÿÿÿÿs
   =Ver: 2.0
i   s   =Pkgs   ##--i   (   t   ifacet   getProgresst   _cacheR6   R.   t	   _infofilet   IOErrort   OSErrorRn   R/   RX   RV   RZ   t   tellRB   RF   R’   t   addt   showR8   (   R
   t   progt   eR;   t   eline(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   load  sN    		 '  	  
	N(   R+   R,   R   t   __stateversion__RG   R   R5   R<   RN   RU   R_   R’   RŸ   (    (    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyR-   B   s   						!	xc         C   s4   |  j  t j ƒ |  j  t j ƒ |  j  t j ƒ d  S(   N(   t   bindR-   RN   R_   RŸ   (   t   psyco(    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   enablePsycoB  s    s   enable-psyco(   t   smart.backends.rpm.rpmverR    t   smart.cacheR   R   t   smart.backends.rpm.baset   smartR   t   localet   ost   reR   t   textwrapR   R   R-   R£   t   hookst   register(    (    (    s<   /usr/lib/python2.7/dist-packages/smart/backends/rpm/yast2.pyt   <module>   s   

!ÿ 	