ó
Qº’Nc           @   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 d „  Z d „  Z d „  Z	 e
 d k rŽ e d d d ƒ n  d S(   iÿÿÿÿNc   	      C   sP  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 ƒ rL| ƒ  } | j d	 d
 ƒ | d	 c d 7<xˆ t j d ƒ D]w } t j j d | ƒ } t j j | ƒ sÁ t j j | ƒ d k rqÁ n  t | ƒ f | | j d d ƒ j d d ƒ <qÁ W| 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-upgrades   /var/log/dist-upgrade/s   /var/log/dist-upgradet   .t    t   -(   t   loggingt   debugt   apport_python_hookR    t   apport.reportR   t   ImportErrort   errort   Falset   syst   argvt   ost   patht   existst
   setdefaultt   listdirt   joint   isfilet   getsizet   opent   replacet   add_to_existingt   True(	   t   typet   valuet   tbR    R   t   et   reportt   fnamet   f(    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt   apport_crash
   s(    	+/c         C   sö   t  j d |  | ƒ d } d } t j d d ƒ | k r; t St j t j ƒ | k rh t  j d |  ƒ t St j	 j
 | ƒ rò yL t j | d |  d | g d	 t j ƒ} | j j d
 | ƒ | j j ƒ  Wn% t k
 rí } t  j d | ƒ t SXt St S(   Ns"   running apport_pkgfailure() %s: %ss   /var/log/dist-upgrade/s   /usr/share/apport/package_hookt   dpkgs*   dependency problems - leaving unconfigureds:   dpkg error because of full disk, not reporting against %s s   -ps   -lt   stdins   ErrorMessage: %s
s   Failed to run apport (%s)(   R   R   t   gettextt   dgettextR   R   t   strerrort   errnot   ENOSPCR   R   t
   subprocesst   Popent   PIPER$   t   writet   closet	   Exceptiont   warningR   (   t   pkgt   errormsgt   LOGDIRt   st   pR   (    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt   apport_pkgfailure"   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   R*   t   callR/   t	   exception(   R5   t   ret(    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt
   run_apport;   s(    t   __main__(   R   t   os.pathR   R*   R   R%   R(   R"   R6   R=   t   __name__t   None(    (    (    sA   /usr/lib/python2.7/dist-packages/DistUpgrade/DistUpgradeApport.pyt   <module>   s   			