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.   ÷
!-ÿ