U
    B‹ú]È  ã                
   @   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¡ qºz,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*   ÷
!-