
Y]                 @   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 d d d d d d	 d
 d d d d d d d d d i	 Z d d d  Z d d   Z d d   Z	 d d   Z
 e d k r e d d d  d S)    Nzapt.logZAptlogzapt-term.logZ
Apttermlogzapt-clone_system_state.tar.gzzAptclonesystemstate.tar.gzzhistory.logZ
Historylogz	lspci.txtZLspcitxtzmain.logZMainlogzterm.logZTermlogzscreenlog.0Z	Screenlogzxorg_fixup.logZ	Xorgfixupz/var/log/dist-upgrade/c             C   s  d } x t  D] } t j j | |  } t j j |  s t j j |  d k rV q | t  | } t j | t j  r t |  f |  | <q t j j	 |  r y4 d d l
 m } | d d | g d d |  | <Wq t k
 r t j d |  Yq Xq Wd  S)	NZVarLogDistupgrader   )root_command_outputcatz%sZdecode_utf8Fz8failed to import apport python module, can't include: %s)APPORT_WHITELISTospathjoinisfilegetsizeaccessR_OKopenexistsZapport.hookutilsr   ImportErrorloggingerror)reportZlogdirdirnamefnamefZidentr    r   ?/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeApport.py_apport_append_logfiles   s     +!	r   c       	      C   s9  t  j d  d t j k r- t  j d  d Sy$ d d l m } d d l m } Wn: t k
 r } z t  j	 d |  d SWYd  d  } ~ Xn Xd	 d
 l
 m } d t j d <| |  | |  t j j d  r5|   } | j d d  d | d d  } | j d |  | j d d |  t |  | j d  d S)Nzrunning apport_crash()RELEASE_UPRADER_NO_APPORTz!RELEASE_UPRADER_NO_APPORT env setFr   )apport_excepthook)Reportz?failed to import apport python module, can't generate crash: %s   )VERSIONz/usr/bin/do-release-upgradez./var/crash/_usr_bin_do-release-upgrade.0.crashZTagszdist-upgradez	Ubuntu %s   ZDistroReleaseZPackagez!ubuntu-release-upgrader-core 1:%sT)r   debugr   environapport_python_hookr   apport.reportr   r   r   ZDistUpgradeVersionr   sysargvr   r   
setdefaultr   Zadd_to_existing)	typevaluetbr   r   er   r   releaser   r   r   apport_crash)   s2    		
r*   c       	      C   s  t  j d |  |  d t j k r3 t  j d  d Sd } d } d | k r` t  j d |   d St j d	 d  } | | k r t  j d |   d St j t j  | k r t  j d
 |   d St j	 j
 |  r| d |  g } | j d d g  x0 t D]( } | j d t j	 j | |  g  q Wy? t j | d t j d d } | j j |  | j j   Wn: t k
 r} z t  j d |  d SWYd  d  } ~ Xn Xd Sd S)Nz"running apport_pkgfailure() %s: %sr   z!RELEASE_UPRADER_NO_APPORT env setFz/var/log/dist-upgrade/z/usr/share/apport/package_hookz*dependency problems - leaving unconfiguredzDdpkg error because of dependency problems, not reporting against %s Zdpkgz:dpkg error because of full disk, not reporting against %s z-pz--tagszdist-upgradez-lstdinZuniversal_newlinesTzFailed to run apport (%s))r   r   r   r   gettextdgettextstrerrorerrnoZENOSPCr   r   extendr   r   
subprocessPopenPIPEr+   writeclose	ExceptionZwarning)	pkgZerrormsgZLOGDIRsZneedleargsr   pr(   r   r   r   apport_pkgfailureJ   sF    			&	r;   c               C   s   d t  j k r  t j d  d Sd t  j k r3 d St  j j d  r y t j d  d k SWn# t k
 r t j	 d  d SYn Xt j d	  d S)
z( run apport, check if we have a display r   z!RELEASE_UPRADER_NO_APPORT env setFZDISPLAYTz/usr/bin/apport-clir   z&Unable to launch '/usr/bin/apport-cli'zcan't find apport)
r   r   r   r   r   r   r1   callr6   Z	exceptionr   r   r   r   
run_apportw   s    	r=   __main__)r   r   r1   r"   r,   r/   r   r   r*   r;   r=   __name__r   r   r   r   <module>   s(   !-