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: //lib/python3/dist-packages/UpdateManager/backend/__pycache__/__init__.cpython-38.pyc
U

ρ�f�>�@s`dZddlmZddlZe�dd�ddlmZmZmZddl	m
Z
ddlZddlZddl
Z
ddlZddlZddlmZdd	lmZdd
lmZddlmZmZddlmZGd
d�de�Ze
j�d��rde
jk�rzddlmZWn e k
�re�!d�YnXe
j�d��rTde
jk�rTzddl"m"Z"Wn e k
�rRe�!d�YnXdd�Z#dS)z2Integration of package managers into UpdateManager�)�absolute_importN�Snapd�1)�GLib�Gtkr)�Cache)�gettext)�Thread)�MyCache)�
inhibit_sleep�get_dist_version)�Dialogc@sreZdZdZdZdZdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zddd�ZdS)�InstallBackendr��cCst�||�||_d|_dS�N)r
�__init__�action�sleep_cookie)�self�window_mainr�r�@/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.pyr szInstallBackend.__init__c	Cs�dtjd<t�|_|j|jkr�|jj}t|jjj	d�}g}g}|jj
D]B}||}||}|jrr|jsr|�
|�qF|jrF|jrF|�
|�qF|�||�n�|j|jk�rxg}g}	g}
t|jjj	d�}|jjD]�}z�|j�r||jj�s|j}|jr�|d7}|�
|�nF|j�r*||jj�r*|	�
|j�n"|j�rL||jj�rL|
�
|j�Wq�tk
�rdYq�Xq�|�||	|
�n|��dS)NZnoneZAPT_LISTCHANGES_FRONTEND)�rootdirz#auto)�os�environrrr�ACTION_PRE_INSTALLr�cacherrZoem_metapackagesZmarked_install�is_installed�appendZmarked_upgradeZ
is_upgradable�
commit_oem�ACTION_INSTALL�name�is_auto_installed�
marked_delete�KeyError�commit�update)rZ
unfresh_cacheZfresh_cache�pkgs_install_oem�pkgs_upgrade_oem�pkgZunfresh_pkgZ	fresh_pkg�pkgs_install�pkgs_upgrade�pkgs_removeZpkgnamerrr�start%sZ
��
�
�
�zInstallBackend.startcCst�dS)z(Run a update to refresh the package listN��NotImplementedError�rrrrr'YszInstallBackend.updatecCs|j|jdddddd�dS)z Install these OEM packages TN)�
authorized�success�error_string�
error_desc�trans_failed)�_action_doner)rr(r)rrrr ]s�zInstallBackend.commit_oemcCst�dS)zCommit the cache changes Nr/)rr+r,r-rrrr&dszInstallBackend.commitc

Cs�i}i}dt�}z�tdd�}t�|�}|��|dD]4}|d|}|�dd�}|�d|�}	||	f||<q8|dD]$}|d|}
|
�d|�}|||<qvWn0tk
r�}zt�d	|�W5d}~XYnX||fS)
Nzstable/ubuntu-z0/usr/share/ubuntu-release-upgrader/deb2snap.json�rZseeded�deb�
to_channelZunseeded�from_channelz%error reading deb2snap.json file (%s))	r�open�json�load�close�get�	Exception�logging�debug)
r�seeded_snaps�unseeded_snapsZcurr_channelZd2s_fileZd2s�snapZseedr9r:Zunseedr;�errr�get_snap_seedshs,
�
 zInstallBackend.get_snap_seedsc

Csz@|jjdkrtd�|j_n|jj�d�|jj��|jj}Wn8tk
rx}zt�d|�gWY�Sd}~XYnXg}|��\}}|�	�D]l\}\}}||kr�||j
r�d}||��|��D]}	|	j
r�|	j
r�|	js�d}q�q�|��|r�|�|�q�|S)Nzerror reading cache (%s)TF)rrr
r<Z
_initDepCacherArBrCrH�itemsrZmark_deleteZget_changesr$r#�clearr)
rrrG�
duplicatesrD�_rFr9Zdeb_is_autor*rrr�get_deb2snap_dups�s2�z InstallBackend.get_deb2snap_dupscCs�i}|��\}}|��D]v\}\}}i}tjdd|gdtjd���}t�d|dtj�rjt	�
d|�qq||jjkrd|d	<||d
<|||<q|��D�]>\}}	i}tjdd|gdtjd���}t�d|dtj�r�t	�
d|�d}
t�d|
|dtj��st	�
d
|�q�d|d	<tjdd|gdtjd���}|d�
d�D]�}|�
�}
t|
�dk�rb�qD|
d}|
d}|�|d��rD|�
d�d}|dk�rD||k�rDt	�
d||f�d|d	<d|d
<�qАqD|||<q�|S)NrF�infoT)Zuniversal_newlines�stdoutz^installed: rzSnap %s is installed�install�command�channelz#stable/ubuntu-[0-9][0-9].[0-9][0-9]z^tracking:.*%sz+Snap %s is not tracking the release channel�removeZconnections�
�rr�:�-z9Snap %s is being used by %s. Switching it to stable track�refreshZstable)rHrI�
subprocess�Popen�PIPEZcommunicate�re�search�	MULTILINErBrCr�duplicate_packages�split�len�
startswith)r�	snap_listrDrErFr9r:�snap_objectZ	snap_infor;Z
re_channelZconnsZconnZ	conn_colsZplugZslotZ	plug_snaprrr�get_snap_transitions�sp�

�

���

��

z#InstallBackend.get_snap_transitionsc
Csv|\}}}|sdSd}d}	|��D]}
||
��7}|	|
��7}	q"|	|}||||}||��krrt�|j|�dS)Nr)Z	get_tasksZget_progress_totalZget_progress_doneZget_fractionr�idle_add�set_fraction)
r�clientZchangerLZ	user_data�index�count�progress_barZ
task_totalZ	task_doneZtaskZ
task_fractionZtotal_fractionrrr�update_snap_cb�s
zInstallBackend.update_snap_cbc
s��fdd�}dd�}|td��d}d}�j��}|r\t|dtj�r\|d}t�d||�}���}|r|t�	|�|�
d�z�t��}|�
�d}t|�}	|��D]�\}
}|d}|d	kr�|td
|
��|j|
|d�j||	|fd�nb|d
k�r|td|
��|j|
�j||	|fd�n.|td|
��|j|
|d�j||	|fd�|d7}q�WnVtjk
�r�}
z4t�d|
�t��jjdtd�td��WY�dSd}
~
XYnXt��jj�dS)Ncst��jj|�dSr)rrfZ
label_detailsZ	set_label)Zstatusr1rr�
update_statussz2InstallBackend.update_snaps.<locals>.update_statuscSs|��dS)NT)Zpulse)rkrrr�update_progresssz4InstallBackend.update_snaps.<locals>.update_progresszUpdating snapsr�drQrXzRefreshing %s snaprR)Zprogress_callback_datarSzRemoving %s snapzInstalling %s snaprzerror updating snaps (%s)Fz!Upgrade only partially completed.zMAn error occurred while updating snaps. Please check your network connection.)rLZprogressbar_slotZget_children�
isinstancerZProgressBarr�timeout_addreZ
source_removergrZClientZconnect_syncrarIZrefresh_syncrlZremove_syncZinstall_sync�ErrorrBrCrfr�start_error�start_available)rrmrnrkZprogress_timerZ
progress_barsrcrhrirjrFrdrQrGrr1r�update_snapssj
�

��

�����zInstallBackend.update_snapsFcCs�||jkr |r |j|_|��n�||jkr�|rVtj�d�rVt|d�rVt|j	d���q�|rf|j
��q�|r||j
�|||�q�t
�d|j
j�nZ|r�|j
�d||�nD|r�tj�d�r�t|d�r�|��|j
_|j
��n|}|j
�|�dS)Nz
/usr/bin/snapZpane_update_progress)�targetrT)rr!rr.r�path�exists�hasattrr	rurrtrsrrq�exitrMr_)rrr2r3r4r5r6Zis_cancelled_updaterrrr7@s0


�
��zInstallBackend._action_doneN)F)�__name__�
__module__�__qualname__Z
ACTION_UPDATErr!rr.r'r r&rHrMrerlrur7rrrrrs4&AA�r�/usr/sbin/aptd�%UPDATE_MANAGER_FORCE_BACKEND_SYNAPTICr)�InstallBackendAptdaemonzimporting aptdaemon�/usr/sbin/synaptic�&UPDATE_MANAGER_FORCE_BACKEND_APTDAEMON)�InstallBackendSynapticzimporting synapticcOs�tj�d�rBdtjkrBzt||�WStk
r@t�d�YnXtj�d�rzdtjkrzzt||�WStk
rxYnXt	d��dS)z,Select and return a package manager backend.r~rzusing aptdaemon failedr�r�zENo working backend found, please try installing aptdaemon or synapticN)
rrwrxrr��	NameErrorrB�	exceptionr�rA)�args�kwargsrrr�get_backendxs��r�)$�__doc__Z
__future__rZgiZrequire_versionZ
gi.repositoryrrrZaptrr=rBrr\rYrrLZ	threadingr	ZUpdateManager.Core.MyCacher
ZUpdateManager.Core.utilsrrZUpdateManager.Dialogsr
rrwrxrr��ImportErrorr�r�r�rrrr�<module>sBO��