HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/DistUpgrade/__pycache__/DistUpgradeAptCdrom.cpython-38.pyc
U

٪zc�1�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
m
ZGdd�de�Z
Gdd�de�ZdS)�N)�gettextc@seZdZdZdS)�
AptCdromErrorz% base exception for apt cdrom errors N)�__name__�
__module__�__qualname__�__doc__�rr�A/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeAptCdrom.pyr#src@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zd"dd�Zd#dd�Z
dd�Zd$dd�Zdd�Zd%dd�Zdd �Zejd!kr�eZdS)&�AptCdromz represents a apt cdrom object cCs0||_||_t�|_t�|_t�|_t��dS)N)�view�	cdrompath�set�packages�
signatures�i18n�apt_pkgZinit_config)�selfr�pathrrr	�__init__+szAptCdrom.__init__cCsBtj�tj�d�tj�d��}tj�||�r>t�	|||�dS)z\ restore the backup copy of the cdroms.list file 
           (*not* sources.list)! 
        �
Dir::State�Dir::State::cdromsN)
�osr�joinr�config�find_dir�find�exists�shutil�copy)r�
backup_ext�
cdromstaterrr	�restore_backup4s

�zAptCdrom.restore_backupc	Csr|��}|�||j�}tj�d�}t|��}|��}W5QRX|�|d|�}t|d��}|�	|�W5QRXdS)z comment out the cdrom entry �Dir::Etc::sourcelistz# %s�wN)
�
_readDiskName�_generateSourcesListLinerrr�	find_file�open�read�replace�write)r�diskname�pentry�sourceslist�f�contentrrr	�comment_out_cdrom_entry?s
z AptCdrom.comment_out_cdrom_entryc	Cs<t�}t�}t�}tj|jdd�D�]\}}}|�d�sB|�d�rP|dd�=q"q"d|kr\q"q"d|krz|�tj�|d��q"d|kr�|�tj�|d��q"d	|ks�d
|kr�t�	d|�q"d|kr�|�tj�|d��q"d
|k�rt�
tj�|d
��D]}|�tj�|d
|��q�q"tj�|�ddkr"|dd�=q"|||fS)z| 
        scan the CD for interessting files and return them as:
        (packagesfiles, signaturefiles, i18nfiles)
        T)�topdownzdebian-installerz
dist-upgraderNz.aptignrZPackageszPackages.gzZSourcesz
Sources.gzz+Sources entry found in %s but not supportedzRelease.gpgr�Zpool)r
r�walkr�endswith�addrr�logging�error�listdir�split)rrrr�root�dirs�filesr.rrr	�_scanCDJs6
�
�
zAptCdrom._scanCDc	Csltj�d�}t��}|�tjj���}|�	�}t
|d��*}|�d||f�|�d||f�W5QRXdS)z update apts cdrom.list r�az
CD::%s "%s";
zCD::%s::Label "%s";
N)rrr&ZCdromZident�aptZprogress�baseZ
CdromProgressr$r'r*)rZdbfileZcdrom�idZlabel�outrrr	�_writeDatabasekszAptCdrom._writeDatabasecCs@t|�}tj�d�}t|�D]}d|kr||kr|�|�q|S)z& drop architectures that are not ours zAPT::Architecturez/binary-)r
rrr�remove)rrZarch�drrr	�	_dropArchuszAptCdrom._dropArchc	CsZ|j}tj�|jdd�}tj�|�rVt|��}|��}W5QRXdD]}|�|d�}qD|S)Nz.disk�info)�"�]�[�_rK)rrrrrr'r(r))rr+rGr.Zspecialrrr	r$�s
zAptCdrom._readDiskNamec	Cs�d}d}g}|D]D}t�d|�}|s0ttd���|�d�}|�d�}|�|�d��q|r^|sbdS|��d||d�|�f}|S)	N�z (.*)/dists/([^/]*)/(.*)/binary-*z&Could not calculate sources.list entryr2��zdeb cdrom:[%s]/ %s %s� )�re�matchrrK�group�append�sortr)	rr+rrZdist�compsrE�mr,rrr	r%�s"�

z!AptCdrom._generateSourcesListLineNc
Cs�|stj�d�}|��}|D]�}t�d|||�d�d�f�}tj�|tj�	|�d�}|�
d�r�t�|��<}t|d��&}|�
d�}	|�|	�|	dkr|q�q|W5QRXW5QRXqt�||�qd	S�
N�Dir::State::lists�
cdrom:[%s]/%s�distsrz.gz�wbi��T�rrrr$�uri_to_filenamerrrr�splitextr4�gzipr'r(r*rr)
rZtranslations�	targetdirr+r.�fname�outf�grB�srrr	�_copyTranslations�s �


zAptCdrom._copyTranslationsc
Cs�|stj�d�}|��}|D]�}t�d|||�d�d�f�}tj�|tj�	|�d�}|�
d�r�t�|��<}t|d��&}|�
d�}	|�|	�|	dkr|q�q|W5QRXW5QRXqt�||�qd	SrWr])
rrrar+r.rbrcrdrBrerrr	�
_copyPackages�s �


zAptCdrom._copyPackagescCsL|D�]@}tj�|�d}tj�|�d}tj��}ddd||g}t���.}|�t	j
���|j|d<t
j||d�}W5QRX|dks�dSt|��"}	t	�|	�}
|
��|
jd}W5QRX|�d	�D]~}|��\}
}}tj�||�}	tj�|	��st�d
|	�q�t|	��}t	�|�}W5QRX||
ks�t�d|
|f�dSq�qdS)
z! verify the signatues and hashes rzapt-keyz--quietZverifyZ
APT_CONFIG)�envFZSHA256�
zignoring missing '%s'z(hash sum mismatch expected %s but got %sT)rrr9r_�environr�tempfileZNamedTemporaryFiler*rr�dump�name�
subprocess�callr'ZTagFile�stepZsectionrrr6rGZ	sha256sumr7)rr�sigZbasepath�releasefZ
verify_env�cmd�fpZretr.�tZsha256_section�entry�hash�sizerm�sumrrr	�_verifyRelease�s@






��zAptCdrom._verifyReleasec
Csz|stj�d�}|��}|D]X}tj�|�d}||fD]:}t�d|||�d�d�f�}t	�
|tj�||��q8qdS)z copy the release file rXrrYrZNT)rrrr$rrr_r^rrrr)rrrar+rqrrr.rbrrr	�_copyRelease�s�zAptCdrom._copyReleasec	Cs�|��\|_|_|_|�|j�|_t|j�dkrFt�d�tt	d���|�
|j�r^|�|j�|�|j�|�
|j�|��}|s�t�d�dS|�||j�}tj�d�}t|��}|��}W5QRXt|d��}|�d||f�W5QRX|��d	S)
z' reimplement pkgCdrom::Add() in python rz+no useable indexes found on CD, wrong ARCH?z`Unable to locate any package files, perhaps this is not a Ubuntu Disc or the wrong architecture?zno .disk/ directory foundFr"r#z%# added by the release upgrader
%s
%sT)r=rrrrF�lenr6r7rrKrzr{rgrfr$r%rrr&r'r(r*rC)rr+Zdebliner-r.r/rrr	�_doAdd�s6
�

��zAptCdrom._doAddc
Cs�t�d|j�|rLtj�tj�d�tj�	d��}tj�
|�rLt�|||�tj�
d|j�tj�
dd�z|��}WnTttfk
r�}z2t�d|�|j�td�td	�|�WY�d
Sd}~XYnXt�d|�|S)
z add a cdrom to apt's database zAptCdrom.add() called with '%s'rrzAcquire::cdrom::mountzAPT::CDROM::NoMount�truezcan't add cdrom: %szFailed to add the CDz�There was a error adding the CD, the upgrade will abort. Please report this as a bug if this is a valid Ubuntu CD.

The error message was:
'%s'FNzAptCdrom.add() returned: %s)r6�debugrrrrrrrrrrrr
r}�SystemErrorrr7rrK)rrr �res�errr	r5#s,

���zAptCdrom.addcCs
|jdk	S)z# helper to use this as 'if cdrom:' N)r)rrrr	�__bool__?szAptCdrom.__bool__�3)N)N)N)N)rrrrrr!r0r=rCrFr$r%rfrgrzr{r}r5r��sys�versionZ__nonzero__rrrr	r
(s$	!


"
)

r
)rPrr?rr6r`rrnr�rkrrK�	Exceptionr�objectr
rrrr	�<module>s