U
    ٪zc                  
   @   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	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AptlogZ
ApttermlogzAptclonesystemstate.tar.gzZ
HistorylogZLspcitxtZMainlogZTermlogZ	ScreenlogZ	Xorgfixup)	zapt.logzapt-term.logzapt-clone_system_state.tar.gzzhistory.logz	lspci.txtzmain.logzterm.logzscreenlog.0zxorg_fixup.log/var/log/dist-upgrade/c              	   C   s   d}t D ]}tj||}tj|rtj|dkr8q|t |  }t|tjrbt|f| |< qtj	|rz(ddl
m} |dd| gdd| |< W q tk
r   td|  Y qX qd S )	NZVarLogDistupgrader   )root_command_outputcatz%sF)Zdecode_utf8z8failed 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   s   t d dtjkr"t d dS zddlm} ddlm} W n6 tk
rt } zt 	d|  W Y dS d }~X Y nX d	d
l
m} dtjd< || || tjdr| }|dd d|dd  }|d| |dd|  t| |d dS )Nzrunning apport_crash()RELEASE_UPRADER_NO_APPORT!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Tags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)   s8    



r-   c           	   
   C   sF  t d| | dtjkr&t d dS d}d}d|krHt d|   dS td	d}||krnt d|   dS ttj|krt d
|   dS tj	
|rB|d| g}|ddg tD ]}|dtj	||g qz,tj|tjdd}|j| |j  W n8 tk
r< } zt d|  W Y dS d }~X Y nX dS dS )Nz"running apport_pkgfailure() %s: %sr   r   Fr   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--tagsr   z-lT)stdinZuniversal_newlinesz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   sR    

 

r>   c                   C   sr   dt jkrtd dS dt jkr&dS t jdrdztddkW S  tk
rb   t	d Y dS X td	 dS )
z( run apport, check if we have a display r   r   FZDISPLAYTz/usr/bin/apport-clir   z&Unable to launch '/usr/bin/apport-cli'zcan't find apport)
r   r"   r   r!   r   r   r4   callr9   Z	exceptionr   r   r   r   
run_apportw   s    




r@   __main__)r   )r   r   r4   r%   r/   r2   r   r   r-   r>   r@   __name__r   r   r   r   <module>   s*   
!-