ó
üRôSc           @   să   d  d l  Z  d  d l Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z i	 d d 6d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6d d 6Z d d  Z d   Z	 d   Z
 d   Z e d k rß e	 d d d  n  d S(   i˙˙˙˙Nt   Aptlogs   apt.logt
   Apttermlogs   apt-term.logs   Aptclonesystemstate.tar.gzs   apt-clone_system_state.tar.gzt
   Historylogs   history.logt   Lspcitxts	   lspci.txtt   Mainlogs   main.logt   Termlogs   term.logt	   Screenlogs   screenlog.0t	   Xorgfixups   xorg_fixup.logs   /var/log/dist-upgrade/c         C   s   d } xu t  D]m } t j j | |  } t j j |  s t j j |  d k rY q n  | t  | } t |  f |  | <q Wd  S(   Nt   VarLogDistupgradei    (   t   APPORT_WHITELISTt   ost   patht   joint   isfilet   getsizet   open(   t   reportt   logdirt   dirnamet   fnamet   ft   ident(    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt   _apport_append_logfiles   s    +c         C   sĎ   t  j d  y$ d d l m } d d l m } Wn% t k
 rX } t  j d |  t SXd t	 j
 d <| |  | |  t j j d  rË |   } | j d	 d
  | d	 c d 7<t |  | j d  n  t S(   Ns   running apport_crash()i˙˙˙˙(   t   apport_excepthook(   t   Reports;   failed to import apport python module, can't report bug: %ss   /usr/bin/update-manageri    s*   /var/crash/_usr_bin_update-manager.0.crasht   Tagss   dist-upgrades    dist-upgrade(   t   loggingt   debugt   apport_python_hookR   t   apport.reportR   t   ImportErrort   errort   Falset   syst   argvR
   R   t   existst
   setdefaultR   t   add_to_existingt   True(   t   typet   valuet   tbR   R   t   eR   (    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt   apport_crash    s     	
c         C   s9  t  j d |  |  d } d } d | k r/ t St j d d  | k rK t St j t j  | k rx t  j d |   t St j	 j
 |  r5| d |  g } x0 t D]( } | j d t j	 j | |  g  q  Wy= t j | d	 t j } | j j d
 |  | j j   Wn% t k
 r0} t  j d |  t SXt St S(   Ns"   running apport_pkgfailure() %s: %ss   /var/log/dist-upgrade/s   /usr/share/apport/package_hooks*   dependency problems - leaving unconfiguredt   dpkgs:   dpkg error because of full disk, not reporting against %s s   -ps   -lt   stdins   ErrorMessage: %s
s   Failed to run apport (%s)(   R   R   R    t   gettextt   dgettextR
   t   strerrort   errnot   ENOSPCR   R#   R	   t   extendR   t
   subprocesst   Popent   PIPER-   t   writet   closet	   Exceptiont   warningR&   (   t   pkgt   errormsgt   LOGDIRt   st   argsR   t   pR*   (    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt   apport_pkgfailure4   s.    &c          C   s  d t  j k r  t j d  t Sd t  j k rŁ xż d d g D]` }  t  j j |   r< d } y t j |   } Wn" t	 k
 r t j
 d |   n X| d k Sq< WnN t  j j d	  rń y t j d	  d k SWqń t	 k
 rí t j
 d
  t SXn  t j d  t S(   s(    run apport, check if we have a display t   RELEASE_UPRADER_NO_APPORTs!   RELEASE_UPRADER_NO_APPORT env sett   DISPLAYs   /usr/share/apport/apport-gtks   /usr/share/apport/apport-qti˙˙˙˙s   Unable to launch '%s' i    s   /usr/bin/apport-clis&   Unable to launch '/usr/bin/apport-cli's   can't find apport(   R
   t   environR   R   R    R   R#   R4   t   callR9   t	   exception(   R@   t   ret(    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt
   run_apportT   s(    t   __main__(   R
   t   os.pathR   R4   R!   R.   R1   R	   R   R+   RA   RH   t   __name__t   None(    (    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt   <module>   s,   
			 	