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/DistUpgrade/__pycache__/DistUpgradeViewNonInteractive.cpython-38.pyc
U

B��]&6�@sRddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZddl	mZmZddlmZmZmZddlmZddlmZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�Zedk�rNe�Ze�Ze�Ze� dd�e�!�Z"ej#dd�D]Z$e"e$�%��qe"�&ee�e�'d�e�(d�dS)�N)�NoSectionError�
NoOptionError)�PIPE�Popen�)�DistUpgradeView�InstallProgress�AcquireProgress)�get)�DistUpgradeConfigc@seZdZdd�ZdS)�NonInteractiveAcquireProgresscCsTt�|||||�|tjkrPtd||jt�t|j��f�t	j
��rPt	j
��dS)Nzfetched %s (%.2f/100) at %sb/s)
r	�
update_status�apt_pkgZ	STAT_DONE�print�percentZsize_to_str�intZcurrent_cps�sys�stdout�isatty�flush)�selfZuriZdescrZ
shortDescr�status�r�K/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeViewNonInteractive.pyr
,s
�
z+NonInteractiveAcquireProgress.update_statusN)�__name__�
__module__�__qualname__r
rrrrr+src@sPeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�NonInteractiveInstallProgressz� 
    Non-interactive version of the install progress class
    
    This ensures that conffile prompts are handled and that
    hanging scripts are killed after a (long) timeout via ctrl-c
    c	Cs�t�|�t�d�dtjkr(dtjd<dtjd<dtjd<td�|_||_d	|_	z"|j�
d
dd�rrtj�d
d�Wnt
tfk
r�YnXd|_z|j�d
d�|_Wntk
r�YnXdS)Nz*setting up environ for non-interactive useZDEBIAN_FRONTENDZnoninteractiveZnoneZAPT_LISTCHANGES_FRONTEND�1ZRELEASE_UPRADER_NO_APPORT�.r�NonInteractiveZForceOverwriteFzDPkg::Options::z--force-overwritei`	ZTerminalTimeout)r�__init__�logging�debug�os�environr�config�logdir�install_run_number�getWithDefaultr�setrr�timeoutZgetint�	Exception)rr'rrrr!>s&






z&NonInteractiveInstallProgress.__init__c	Cs�t�d||f�|j�ddd�s&dSt�tj�}d|d<g}d|krbd}d	}d
}d|||f}n~d|kr�d
}d}d}d||f}n\d|kr�d}d}d}d|||f}n8d|kr�d}d}d}d|||f}ntd||f�dStj�	|�s�t�d|�dSt
|��"}	|	��dd����
�d}
W5QRXd|
k�sBd|
k�rJdg}n(d|
k�rddg}d|d <nt�d!|
�t
|��}	|	��}W5QRXd"|k�r�d#|d$<d%|d&<d'}
d(dg}|�|
�|�|�|�|�|�|�|d	k�r$td)|d*td*d+���d}
|
�r�|�|
�
d,d-�d-���n`|dk�r�tj�|�}|�
d.�d}td/|d*td*d+���d}
|
�r�|�|
�
d,d-�d-���t�d0||f�tj||d1�}t�d2||f�dS)3Nz)got a error from dpkg for pkg: '%s': '%s'r ZDebugBrokenScriptsFr#Z	PYCENTRALzpost-installationz/var/lib/dpkg/info/ZpostinstZ	configurez%s/%s.%szpre-installationz/var/lib/dpkg/tmp.ci/Zpreinst�installz%s/%szpre-removalZprerm�removezpost-removalZpostrmz3UNKNOWN (trigger?) dpkg/script failure for %s (%s) z+can not find failed maintainer script '%s' �rZbashz/bin/shz-exZperlz-dzAutoTrace NonStopZPERLDB_OPTSzunknown interpreter: '%s'z. /usr/share/debconf/confmoduleZ	developerZ
DEBCONF_DEBUGrZDEBIAN_HAS_FRONTENDz/usr/share/debconf/frontendZshz%dpkg-query -s %s|grep ^Config-VersionT)�shellrZuniversal_newlines�:r�_zdpkg-query -s %s|grep ^Versionzre-running '%s' (%s))�envz%s script returned: %s)r"�errorr&r)�copyr$r%r�path�exists�open�readline�strip�split�warning�read�append�extendrrZcommunicate�basenamer#�
subprocess�call)r�pkgZerrormsgr%�cmd�prefix�nameZargumentZmaintainer_script�fZinterpZ
debug_optsZmaintainer_script_text�versionZretrrrr4Ws��
&








��
��z#NonInteractiveInstallProgress.errorc
Csnt�d|�t�d�z t�|jd�t�d|�Wn0tk
rh}zt�d|�W5d}~XYnXdS)Nz.got a conffile-prompt from dpkg for file: '%s'�sn
z0replied no to the conffile-prompt for file: '%s'z/error '%s' when trying to write to the conffile)	r"r<�time�sleepr$�write�	master_fdr,r4)rZcurrent�new�errr�conffile�s�
�
z&NonInteractiveInstallProgress.conffilecCs�t�|�t��|_|j�ddd�}|rZtj�|j	d|j
�}t�d|�t
|d�|_nt
tjd�|_|j�dt���dS)Nr ZDpkgProgressLogFzdpkg-progress.%s.logz!writing dpkg progress log to '%s'�wz
%s: Start
)r�start_updaterJ�
last_activityr&r)r$r6�joinr'r(r"r#r8�dpkg_progress_log�devnullrL)rZprogress_log�fullpathrrrrR�s

z*NonInteractiveInstallProgress.start_updatecCs:t�|�|j�dt���|j��|jd7_dS)Nz
%s: Finished
r)r�
finish_updaterUrLrJ�closer(�rrrrrX�s

z+NonInteractiveInstallProgress.finish_updatecCs |j�dt��|||f�dS)Nz%s:%s:%s:%s
)rUrLrJ)rrCrZ
status_strrrr�
status_change�s
�z+NonInteractiveInstallProgress.status_changecCs�t�|�|jdkrdS|j|jt��krTt�d|j|jf�t	�
|jtd��t
�
|jgggd�}t|d�dkr�t��|_z0t	�|jd�}tj�
d|jt��dd��Wntk
r�YdSXt
�
|jgggd�}qhtj��dS)	Nz,no activity %s seconds (%s) - sending ctrl-c�g�������?rrz%s�ignore)�errors)r�update_interfaceZstatusfdrSr+rJr"r<rr$rLrM�chr�select�lenr=rr�decode�locale�getpreferredencoding�OSErrorr)r�res�srrrr_�s,

�
�z.NonInteractiveInstallProgress.update_interfacecCsNt�d�dtjd<dtjd<t��\|_|_|jdkrHt�d|j�|jS)Nzdoing a pty.fork()ZdumbZTERM�trueZPAGERrz
pid is: %s)r"r#r$r%�pty�fork�pidrMrZrrrrk�s



z"NonInteractiveInstallProgress.forkN)rrr�__doc__r!r4rPrRrXr[r_rkrrrrr6s`
rcs�eZdZdZd dd�Zdd�Zdd�Zd	d
�Zd!dd�Zd
d�Z	�fdd�Z
d"dd�Zd#dd�Zd$dd�Z
dd�Zd%dd�Zdd�Z�ZS)&�DistUpgradeViewNonInteractivez- non-interactive version of the upgrade view NcCsLt�|�t��d�td�|_t�|_t|�|_	t
jj�
�|_|jt_dS)Nr r)rr!�
get_telemetryZset_updater_typerr&r�_acquireProgressr�_installProgress�aptZprogress�baseZ
OpProgress�_opProgress�
excepthookr�__excepthook__)rZdatadirr'rrrr!s


z&DistUpgradeViewNonInteractive.__init__cCsHddl}t�d||f�|�|||�}t�dd�|��|��dS)z2 on uncaught exceptions -> print error and reboot rNzgot exception '%s': %s znot handled exception:
%s�)�	tracebackr"Z	exception�format_exceptionr4rT�confirmRestart)r�type�value�tbrx�linesrrrrus
z(DistUpgradeViewNonInteractive.excepthookcCs|jS)z5 return a OpProgress() subclass for the given graphic)rtrZrrr�getOpCacheProgresssz0DistUpgradeViewNonInteractive.getOpCacheProgresscCs|jS)z# return an acquire progress object )rprZrrr�getAcquireProgresssz0DistUpgradeViewNonInteractive.getAcquireProgresscCs|jS)z" return a install progress object )rq)r�cacherrr�getInstallProgresssz0DistUpgradeViewNonInteractive.getInstallProgresscCsdS)z\ update the current status of the distUpgrade based
            on the current view
        Nr)r�msgrrr�updateStatussz*DistUpgradeViewNonInteractive.updateStatuscstt|��|�dS)z� we have 5 steps current for a upgrade:
        1. Analyzing the system
        2. Updating repository information
        3. Performing the upgrade
        4. Post upgrade stuff
        5. Complete
        N)�superrn�setStep)r�step��	__class__rrr�sz%DistUpgradeViewNonInteractive.setStepTcCsft�||||||�t�ddd�|jD��t�ddd�|jD��t�ddd�|jD��dS)	Nztoinstall: '%s'cSsg|]
}|j�qSr�rF��.0�prrr�
<listcomp>,sz@DistUpgradeViewNonInteractive.confirmChanges.<locals>.<listcomp>ztoupgrade: '%s'cSsg|]
}|j�qSrr�r�rrrr�-sztoremove: '%s'cSsg|]
}|j�qSrr�r�rrrr�.sT)r�confirmChangesr"r#Z	toInstallZ	toUpgradeZtoRemove)r�summaryZchangesZ	demotionsZdownloadSizeZactionsZremoval_boldrrrr�(s�z,DistUpgradeViewNonInteractive.confirmChanges�NocCsdS)z0 ask a Yes/No question and return True on 'Yes' Tr�rr�r��defaultrrr�askYesNoQuestion0sz.DistUpgradeViewNonInteractive.askYesNoQuestion�CancelcCsdS)NTrr�rrr�askCancelContinueQuestion7sz7DistUpgradeViewNonInteractive.askCancelContinueQuestioncCst�d�|j�ddd�S)z2 generic ask about the restart, can be overridden zconfirmRestart() calledr Z
RealRebootF)r"r#r&r)rZrrrrz9s
z,DistUpgradeViewNonInteractive.confirmRestartcCst�d|||f�dS)z display a error z
%s %s (%s)N�r"r4)rr�r�Zextended_msgrrrr4>sz#DistUpgradeViewNonInteractive.errorcCst�d�dS)Nzview.abort calledr�rZrrr�abortAsz#DistUpgradeViewNonInteractive.abort)NN)N)NT)r�)r�)N)rrrrmr!rurr�r�r�r�r�r�r�rzr4r��
__classcell__rrr�rrn�s 

�



rn�__main__zxserver-xorgzpre-installation script failedr/))rrrr"rdrJrr$rjrarAr5Zapt.progress�configparserrrrrrrr	Z	telemetryr
roZDistUpgradeConfigParserrrrrnrZviewZapZipr4ZCacher��argvrCZmark_installZcommitrK�exitrrrr�<module>s>IG