HEX
Server: Apache
System: Linux nc-ph-4101.simplemoneygoals.com 5.14.0-503.21.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Jan 12 09:45:05 EST 2025 x86_64
User: dailygoldindex (1004)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //lib/python3.9/site-packages/dnf-plugins/__pycache__/kpatch.cpython-39.pyc
a

?�%h�2�@s�dZddlmZddlmZddlZddlZddlZddlm	Z	m
Z
ddlZddlZddl
ZddlZddlZddlZdZdZdZd	Zd
d�Zdd
�Zdd�ZGdd�dejj�ZGdd�dej�ZdS)z�
The DNF plugin helps customers to install kpatch-patch packages
when the kernel is upgraded and filter kernel-core packages that
are supported by the kpatch team.
�)�absolute_import)�unicode_literalsN)�_�logger�kpatchZ
autoupdateZ
autofilter�kernel-corecCs2dd�|jD�}|D]}tj�|�r|SqdS)NcSsg|]}d|tf�qS)z
%s/%s.conf)�KPATCH_PLUGIN_NAME)�.0�path�r�6/usr/lib/python3.9/site-packages/dnf-plugins/kpatch.py�
<listcomp>5�z(_get_plugin_cfg_file.<locals>.<listcomp>)Zpluginconfpath�osr
�isfile)Z	base_conf�files�filerrr�_get_plugin_cfg_file4s

rcCs:t�d|j��d�}|�dd�}|j�dd�}d�||�S)Nz
(.*)\.el.*��.rzkpatch-patch-{}-{})�re�match�release�group�replace�version�format)�
kernel_pkgZkernel_releaseZkpp_kernel_releaseZkpp_kernel_versionrrr�_kpp_name_from_kernel_pkg<srcCsVt|�}|j��j||jd�}tj�|j�}|j|�	�d�|j
j||jj
d�dS)N��name�arch)�pkg)ZselectZoptional)r�sack�query�filterr!�dnf�selectorZSelector�set�latestZgoal�install�conf�strict)Zdnf_baser�kpp_pkg_name�kpp_pkgs_queryZkpp_sltrrrr�_install_kpp_pkgCs�r/csheZdZdZdZed�Z�fdd�Zedd��Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Z�ZS)�	KpatchCmdz* Extend DNF with kpatch specific commands )rz7Toggles automatic installation of kpatch-patch packagescst��|�t|jj�|_dS)N)�super�__init__r�baser+�cfg_file)�self�cli��	__class__rrr2SszKpatchCmd.__init__cCs|jddd�dS)z'
        argparse python class
        �actionzJauto-update|manual-update|auto-filter|no-filter|install|status|auto|manual)�metavarN)�add_argument)�parserrrr�
set_argparserXs�zKpatchCmd.set_argparsercCsD|jj}d|_|jjdvr.d|_d|_d|_nd|_d|_d|_dS)zr
        configure DemandSheet
        Collection of demands that different CLI parts have on other parts
        T)�auto-updater*�status�autoFN)r6�demandsZ	root_user�optsr9Z	resolvingZsack_activationZavailable_repos)r5rArrr�	configuredszKpatchCmd.configurec	Cs�g}|jj����jtd�}|D]�}t|�}|jj����j|d���}|r�|jj��j||dj|dj	d�}|jj��j||j
d����|�}n|jj��j||j
d���}|D]}|�
t|��q�q |S)N�r r)r rrr)r3r#r$�	installedr%�KERNEL_PKG_NAMEr�runrrr!r)�
difference�append�str)	r5�kpps�installed_kernelsrr-rEZsub_qr.r"rrr�_list_missing_kpp_pkgsvs0��
��
z KpatchCmd._list_missing_kpp_pkgscCs2|jj����jtd�}|D]}t|j|�qdS)NrD)r3r#r$rEr%rFr/)r5rLrrrr�_install_missing_kpp_pkgs�sz#KpatchCmd._install_missing_kpp_pkgsc
Csv|jdurt�d�dSzt��}|�|j�|WStyp}z&tj�	t
d��t|����WYd}~n
d}~00dS)N� Couldn't find configuration file�Parsing file failed: {})
r4r�warning�configparserZConfigParser�read�	Exceptionr&�
exceptions�ErrorrrrJ�r5r<�errr�
_read_conf�s

zKpatchCmd._read_confc
Cs�|jdurt�d�dS|��}|dur,dS|�d�s@|�d�|�d|t|��z>t|jddd��}|�	|�Wd�n1s�0YWn>t
y�}z&tj�
td��t|����WYd}~n
d}~00dS)NrO�main�wzutf-8)�encodingzFailed to update conf file: {})r4rrQrY�has_sectionZadd_sectionr(rJ�open�writerTr&rUrVrr)r5�option�valuer+Z
cfg_streamrXrrr�_update_plugin_cfg�s



,zKpatchCmd._update_plugin_cfgcCs�|jj}|dvr<|��|�td�t�td��|���n�|dvrh|�td�t�td��|���nZ|dkr�|�t	d�t�td��|���n.|dkr�|�t	d�t�td��|���n|d	k�r�|�
�}d
}|du�r|�d��r|�dt��r|�
dt��rd
}t�td��|��d}|du�rZ|�d��rZ|�dt	��rZ|�
dt	��rZd}t�td��|��|��}|�r�t�td��d�|���n*|dk�r�|��ntj�td��|���dS)z:
        Decision tree, execution based on config
        )r>r@TzKpatch update setting: {})�
manual-updateZmanualFzauto-filterzKpatch filter setting: {}z	no-filterr?rcNrZr>zAvailable patches: {}z, r*zInvalid argument: {})rBr9rNrb�KPATCH_UPDATE_OPTr�inforr�KPATCH_FILTER_OPTrYr]�
has_option�
getbooleanrM�joinr&rUrV)r5r9r+Z	kp_statusrKrrrrG�sL

�
�
�
�

z
KpatchCmd.run)�__name__�
__module__�__qualname__�__doc__�aliasesrZsummaryr2�staticmethodr=rCrMrNrYrbrG�
__classcell__rrr7rr0Ls
r0csTeZdZdZeZgd�ZddgZ�fdd�Zdd�Z	d	d
�Z
dd�Zd
d�Z�Z
S)�KpatchPluginz�
    The DNF plugin helps customers to install kpatch-patch packages
    when the kernel is upgraded and filter kernel-core packages that
    are supported by the kpatch team.
    )�kernelrzkernel-moduleszkernel-modules-corezkernel-modules-extrarrzkernel-uname-rcs6t��||�d|_d|_d|_|dur2|�t�dS)NF)r1r2�
_commiting�_autoupdate�_autofilterZregister_commandr0)r5r3r6r7rrr2�szKpatchPlugin.__init__c
Cs�|�|jj�}zL|�d�o0|�dt�o0|�dt�|_|�d�oT|�dt�oT|�dt�|_	Wn<t
y�}z$t�t
d��t|���WYd}~n
d}~00dS)NrZrP)Zread_configr3r+r]rgrdrhrtrfrurTrrQrrrJrWrrr�configs

�
�

�
�zKpatchPlugin.configcCs"d|_|j�|jjj�d|_dS)NTF)rsr3�resolver6rAZ
allow_erasing)r5rrr�_commit_changesszKpatchPlugin._commit_changesc
Cs|js
dStd�|jj��jdd�}|jjjtjd�}|j|jd�|�	�}|jjjtjd�}|jdd�|D]|}|j
D]p}t|��d�}t
|�d	kr�qz|d
|jvrz|j|d�}d}|D]}	|	j}q�q�|dur�|�|j|d��}qpqzqp|jj�|�|��dS)
NzOPlease note, kpatch filter is enabled, only kpatch supported kernels are shown.T)�empty)�flagsrDzkpatch-patch-*)Z
name__glob� �r)Zprovides)�evr)ru�printr3r#r$Zfilterm�hawkeyZIGNORE_EXCLUDES�kernel_pkg_namesZ	availableZrequiresrJ�split�len�kpatch_requirementr%r}�unionZadd_excludesrH)
r5Zkernels_keepZ
kernels_queryZkpatch_queryZ
kpatch_pkgZrequireZrequire_parsedZkernel_coreZ
kernel_evrZkernel_core_pkgrrrr#s0
zKpatchPlugin.sackcs�|jr|jrdSg}g�|jjD]H}|jtjjvr |jjt	krL|�
|j�q |jj�d�r ��
|jj�q �fdd�|D�}|D]}t|j|�q�|r�|�
�dS)Nz
kpatch-patch-csg|]}t|��vr|�qSr)r)r	r"�Zexplicit_kpp_installrrr
Vs�z)KpatchPlugin.resolved.<locals>.<listcomp>)rtrsr3Ztransactionr9r&ZFORWARD_ACTIONSr"r rFrI�
startswithr/rx)r5Zneed_kpp_forZtr_itemrrr�r�resolvedCszKpatchPlugin.resolved)rjrkrlrmrr r�r�r2rvrxr#r�rprrr7rrq�s	
*rq)rmZ
__future__rrrRZos.pathrrZdnfpluginscorerrr&Zdnf.callbackZdnf.cliZdnf.exceptionsZdnf.transactionrrrdrfrFrrr/r6ZCommandr0ZPluginrqrrrr�<module>s,	#