;ò
øÐ3@c           @   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 l Z l	 Z	 l
 Z
 d k l Z d  k Z d  k Z d „  Z d e f d „  ƒ  YZ d  S(   N(   s   rhnAppletExceptions   rhnAppletRPCFaults   rhnAppletNetworkException(   s   rhnAppletSourcec         C   s  |  d j p |  d d j o t Sn yÁ t i |  d d ƒ \ } } t i | d d ƒ \ } } t i | d ƒ } | d | !}
 | | d } t i |
 d ƒ } |
 | d } |
 d | !}	 t i |	 d ƒ } |	 | d } |	 d | !} Wn t i d	 |  ƒ t Sn X| | | | | f Sd
 S(   so   Parse one line of a apt header.info file, and extract the
       (name, version, release, arch, epoch) from it.s    i    s   #s   :i   s   =s   .s   -s   failed to parse apt line: %sN(   s   lines   Nones   strings   splits   es   lins   packages   rfinds   idxs   nvrs   as   rs   nvs   vs   ns	   rhn_utilss	   log_debug(   s   lines   as   es   idxs   packages   lins   ns   rs   vs   nvs   nvr(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   split_nvrae   s&     s   rhnAppletAptc           B   st   t  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 RS(   sÆ   Class for handling updates from a Apt repository. Tries to reuse
       most of the HTTP/HTTPS/Proxy code from rhnlib. Handles 304 HTTP
       code to not reload or recompute for non-modified lists.c
   
      C   s£   t  i |  d | d | d | ƒ| |  _ | |  _ | |  _ | |  _
 | |  _ | |  _ t i | | |	 ƒ g  |  _ d |  _ t |  _ t |  _ d |  _ |  i ƒ  d  S(   Ns   urls   releases   archi    (   s   rhnAppletSources   __init__s   selfs   urls   releases   archs   __arch__s   __release__s   __server_url__s   labels	   __label__s   dists   __dist__s   refresh_callbacks   __refresh_callback__s   rhn_applet_protocolss   init_connectionss	   proxy_urls   proxy_usernames   proxy_passwords   __latest_packages__s   __latest_packages_mtime__s   Nones   __last_modified__s   __data__s   _rhnAppletApt__nb_errorss   _rhnAppletApt__get_data_store(
   s   selfs   urls   refresh_callbacks   labels   dists   releases   archs	   proxy_urls   proxy_usernames   proxy_password(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   __init__:   s    											c         C   s   d |  i |  i f Sd  S(   Ns   %s @ %s(   s   selfs	   __label__s   __server_url__(   s   self(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   nameO   s    c         C   s   |  i d j Sd  S(   Ni    (   s   selfs   _rhnAppletApt__nb_errors(   s   self(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   in_errorR   s    c         C   s   t  i | | | ƒ d  S(   N(   s   rhn_applet_protocolss   init_connectionss	   proxy_urls   proxy_usernames   proxy_password(   s   selfs	   proxy_urls   proxy_usernames   proxy_password(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys	   set_proxyU   s    c         C   sK   | d d j o | d |  i } n | d |  i } t i | | ƒ Sd S(   s¨   load the headers. Does not change self so that it can be 
	   extracted easilly. returns the data and the new lastmodified
	   string or NULL if no update has been madeiÿÿÿÿs   /s   /base/pkglist.%s.bz2s   base/pkglist.%s.bz2N(   s   urls   selfs   __dist__s   rhn_applet_protocolss   requests   lastmodified(   s   selfs   urls   lastmodified(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   _load_header_infoY   s
     c         C   sk  yz t  i  ƒ  } t  i  ƒ  d d d } |  i t j o t |  _ n |  i |  i |  i ƒ } | t j o | \ } } n Wnk |  i d |  _ |  i d j o@ | |  _ |  i | ƒ d  k } t i d | i | i f ƒ n d  Sn Xd |  _ | |  _ |  i | ƒ | t j o t i d ƒ d  Sn |  i | ƒ } | |  _ | |  _ | |  _ |  i ƒ  |  i ƒ  d  S(   Ni   i<   i   i   s   failed to load url: %s : %si    s   not updated, use cached copy(   s   times   last_checkins   next_checkins   selfs   __data__s   Nones   __last_modified__s   _load_header_infos   __server_url__s   fetchs   datas   last_modifieds   _rhnAppletApt__nb_errorss   __last_checkin__s   set_next_checkings   syss	   rhn_utilss	   log_debugs   exc_types	   exc_values!   _rhnAppletApt__build_package_lists   pkglists   __latest_packages__s   inc_change_numbers   _rhnAppletApt__save_data_store(   s   selfs   syss   pkglists   last_checkins   last_modifieds   next_checkins   datas   fetch(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   _do_refreshf   s:    		!					
c         C   s)   |  i t j o |  i ƒ  n |  i Sd  S(   N(   s   selfs   __data__s   Nones   _do_refreshs   __latest_packages__(   s   self(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   latest_packages‘   s    c         C   s†   t  i | ƒ } | d j o d Sn | d j p1 | d j p$ | d j p | d j p
 | d j o | d j o d Sq~ n d Sd  S(   Ni    s   kernels
   kernel-smps
   kernel-umls   kernel-unsupporteds   glibci   (   s   rpms	   archscores   as   scores   n(   s   selfs   ns   as   score(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   __check_architecture–   s    Ac         C   sÓ  g  } d } yt i t i ƒ  ƒ d } | d } | d |  i } t	 d | d ƒ } | i | ƒ | i ƒ  t i d | ƒ } | i ƒ  } t i | ƒ }	 t i | ƒ xï |	 D]ç } | t i } | t i } | t i } | t i }
 d | | | f } |
 t  j p
 |
 d	 j o | d
 } d }
 n | d |
 } | i" h  d | <d | <d | <d |
 <d | <d | <d d <d d <d d <ƒ q¯ WWn- d  k# } t$ i% d | i& | i' f ƒ n X| Sd  S(   Ni    i   s   /.rhn-applets   /tmp-%ss   %s.bz2s   ws   /usr/bin/bunzip2 %s.bz2s   %s-%s-%ss   0s   :s    s   :%ss   names   versions   releases   epochs   nvrs   nevrs	   errata_ids   errata_synopsiss   errata_advisorys)   Failed to build APT package list: %s : %s((   s   pkglists   nb_packagess   pwds   getpwuids   oss   getuids   tmpfilenames   selfs	   __label__s   opens   fs   writes   datas   closes   popens   pipes   reads   tmps   rpms   readHeaderListFromFiles   hdlists   unlinks   hs   RPMTAG_NAMEs   ns   RPMTAG_VERSIONs   vs   RPMTAG_RELEASEs   rs   RPMTAG_EPOCHs   es   nvrs   Nones   nevrs   appends   syss	   rhn_utilss	   log_debugs   exc_types	   exc_value(   s   selfs   datas   nevrs   tmps   tmpfilenames   nb_packagess   pkglists   nvrs   syss   hdlists   es   fs   hs   ns   pipes   rs   v(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   __build_package_list    s:    

	 

f	!c   
      C   sÇ  t  i t i ƒ  ƒ d } | d } y t i | ƒ } WnI y# t i | d ƒ t i | ƒ } Wq‚ t i	 d | ƒ d  Sq‚ Xn Xt i
 | t i ƒ oU t i	 d | ƒ y! t i | ƒ t i | d ƒ Wqï t i	 d | ƒ d  Sqï Xn | d |  i d } y t i | ƒ } Wn t i	 d | ƒ d  Sn Xy=t | d	 ƒ } | i ƒ  i ƒ  }	 | i ƒ  i ƒ  } |	 d
 |  i j p | |  i j oE t i	 d | ƒ y t i | ƒ Wn t i	 d | ƒ n Xd  Sn | i ƒ  i ƒ  } | i ƒ  } | i ƒ  |  i | ƒ } | d j o t |  _ n
 | |  _ | |  _ | |  _ t i	 d t  | ƒ |  i f ƒ t i	 d | ƒ WnM t! j
 oA } t i	 d | t# | ƒ f ƒ y t i | ƒ WqÃqÃXn Xd  S(   Ni   s   /.rhn-appletiÀ  s   Failed to create dir %ss   File %s not a directorys   /s   .apts   Cache %s not availables   rs   Apt channel cache for %ss"   File %s corrupted or wrong channels   Failed to remove %ss    s   found %d packages for %ss   last_modified : %ss5   can't open for reading %s: %s, trying to remove it...($   s   pwds   getpwuids   oss   getuids   files   stats   statinfos   mkdirs	   rhn_utilss	   log_debugs   S_ISDIRs   ST_MODEs   unlinks   selfs	   __label__s   opens   fds   readlines   strips   stores   urls   __server_url__s   last_modifieds   reads   datas   closes!   _rhnAppletApt__build_package_lists   pkglists   Nones   __last_modified__s   __data__s   __latest_packages__s   lens	   Exceptions   es   str(
   s   selfs   es   files   urls   datas   last_modifieds   fds   statinfos   pkglists   store(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   __get_data_storeË   sj    
$
			 c         C   só  |  i t j o d  Sn t i t i ƒ  ƒ d } | d } y t i | ƒ } WnI y# t i
 | d ƒ t i | ƒ } Wqš t i d | ƒ d  Sqš Xn Xt i | t i ƒ oU t i d | ƒ y! t i | ƒ t i
 | d ƒ Wqt i d | ƒ d  SqXn | d |  i d } y t | d ƒ } | i d	 |  i |  i f ƒ |  i t j o | i d
 ƒ n | i d |  i ƒ | i |  i ƒ | i ƒ  WnM t j
 oA } t i d | t | ƒ f ƒ y t i | ƒ WqëqëXn Xd  Sd  S(   Ni   s   /.rhn-appletiÀ  s   Failed to create dir %ss   File %s not a directorys   /s   .apts   ws   Apt channel cache for %s
%s
s   
s   %s
s.   Cannot write to %s: %s, trying to remove it...(   s   selfs   __data__s   Nones   pwds   getpwuids   oss   getuids   files   stats   statinfos   mkdirs	   rhn_utilss	   log_debugs   S_ISDIRs   ST_MODEs   unlinks	   __label__s   opens   fds   writes   __server_url__s   __last_modified__s   closes	   Exceptions   es   str(   s   selfs   es   files   fds   statinfo(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   __save_data_store  sJ    
	(   s   __name__s
   __module__s   __doc__s   __init__s   names   in_errors	   set_proxys   Nones   _load_header_infos   _do_refreshs   latest_packagess!   _rhnAppletApt__check_architectures!   _rhnAppletApt__build_package_lists   _rhnAppletApt__get_data_stores   _rhnAppletApt__save_data_store(    (    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   rhnAppletApt5   s    					+		
	+	C(   s   strings   oss   times   pwds   stats   rpms   popen2s	   rhn_utilss   rhnAppletExceptions   rhnAppletRPCFaults   rhnAppletNetworkExceptions   rhn_applet_sources   rhnAppletSources   rhn_applet_protocolss   rhn_applet_versions   split_nvraes   rhnAppletApt(   s   stats   strings   rhnAppletExceptions   rhnAppletSources   oss   split_nvraes   popen2s   rhn_applet_versions   rhnAppletNetworkExceptions   rhnAppletApts   pwds   rhnAppletRPCFaults   times   rhn_applet_protocolss   rpms	   rhn_utils(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_apt.pys   ?   s   												