o
    *d                  
   @   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rAeddd dS dS )    NAptlog
ApttermlogzAptclonesystemstate.tar.gz
HistorylogLspcitxtMainlogTermlog	Screenlog	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 ]V}tj||}tj|rtj|dkrq|t |  }t|tjr/|f| |< qtj|rZzddl	m
} |dd| gdd| |< W q tyY   td|  Y qw qd S )	NVarLogDistupgrader   )root_command_outputcatz%sF)decode_utf8z8failed to import apport python module, can't include: %s)APPORT_ALLOWLISTospathjoinisfilegetsizeaccessR_OKexistsapport.hookutilsr   ImportErrorloggingerror)reportlogdirdirnamefnamefidentr    r"   ?/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeApport.py_apport_append_logfiles   s*   
r$   c           	   
   C   s   t d dtjv rt d dS zddlm} ddlm} W n ty9 } zt 	d|  W Y d }~dS d }~ww d	d
l
m} dtjd< || || tjdry| }|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.crashTagsdist-upgradez	Ubuntu %s   DistroReleasePackagez!ubuntu-release-upgrader-core 1:%sT)r   debugr   environapport_python_hookr'   apport.reportr(   r   r   DistUpgradeVersionr*   sysargvr   r   
setdefaultr$   add_to_existing)	typevaluetbr'   r(   er*   r   releaser"   r"   r#   apport_crash)   s<   



r>   c           	   
   C   s>  t d| | dtjv rt d dS d}d}d|v r$t d|   dS td	d}||v r7t d|   dS ttj|v rHt d
|   dS tj	
|r|d| g}|ddg tD ]}|dtj	||g q\ztj|tjdd}|j| |j  W dS  ty } zt d|  W Y d }~dS d }~ww 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 dpkgz:dpkg error because of full disk, not reporting against %s z-pz--tagsr,   z-lT)stdinuniversal_newlineszFailed to run apport (%s))r   r0   r   r1   gettextdgettextstrerrorerrnoENOSPCr   r   extendr   r   
subprocessPopenPIPEr@   writeclose	Exceptionwarning)	pkgerrormsgLOGDIRsneedleargsr   pr<   r"   r"   r#   apport_pkgfailureJ   sT   



rV   c                   C   sp   dt jv rtd dS dt jv rdS t jdr1ztddkW S  ty0   t	d Y dS w td	 dS )
z( run apport, check if we have a display r%   r&   FDISPLAYTz/usr/bin/apport-clir   z&Unable to launch '/usr/bin/apport-cli'zcan't find apport)
r   r1   r   r0   r   r   rH   callrM   	exceptionr"   r"   r"   r#   
run_apportw   s   




rZ   __main__)r
   )r   r   rH   r5   rB   rE   r   r$   r>   rV   rZ   __name__r"   r"   r"   r#   <module>   s.   
!-