Sindbad~EG File Manager

Current Path : /lib/python3.6/site-packages/dnf-plugins/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/dnf-plugins/__pycache__/kpatch.cpython-36.pyc

3

�&d~ �@s�ddlmZddlmZddlZddlZddlZddlmZm	Z	ddl
ZddlZddl
ZddlZdZdZdZdd	�Zd
d�Zdd
�ZGdd�dejj�ZGdd�dej�ZdS)�)�absolute_import)�unicode_literalsN)�_�logger�kpatchZ
autoupdatezkernel-corecCs2dd�|jD�}x|D]}tjj|�r|SqWdS)NcSsg|]}d|tf�qS)z
%s/%s.conf)�KPATCH_PLUGIN_NAME)�.0�path�r
�/usr/lib/python3.6/kpatch.py�
<listcomp>+sz(_get_plugin_cfg_file.<locals>.<listcomp>)Zpluginconfpath�osr	�isfile)Z	base_conf�files�filer
r
r�_get_plugin_cfg_file*s

rcCs:tjd|j�jd�}|jdd�}|jjdd�}dj||�S)Nz
(.*)\.el.*��.rzkpatch-patch-{}-{})�re�match�release�group�replace�version�format)�
kernel_pkgZkernel_releaseZkpp_kernel_releaseZkpp_kernel_versionr
r
r�_kpp_name_from_kernel_pkg2srcCsVt|�}|jj�j||jd�}tjj|j�}|j|j	�d�|j
j||jj
d�dS)N)�name�arch)�pkg)ZselectZoptional)r�sack�query�filterr�dnfZselectorZSelector�set�latestZgoal�install�conf�strict)Zdnf_baser�kpp_pkg_name�kpp_pkgs_queryZkpp_sltrr
r
r�_install_kpp_pkg9s
r+csdeZdZdZed�Z�fdd�Zedd��Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Z�ZS)�	KpatchCmdrz7Toggles automatic installation of kpatch-patch packagescs"tt|�j|�t|jj�|_dS)N)�superr,�__init__r�baser'�cfg_file)�self�cli)�	__class__r
rr.HszKpatchCmd.__init__cCs|jddd�dS)N�actionzauto|manual|install|status)�metavar)�add_argument)�parserr
r
r�
set_argparserMszKpatchCmd.set_argparsercCsD|jj}d|_|jjdkr.d|_d|_d|_nd|_d|_d|_dS)NT�autor&�statusF)r9r&r:)r2�demandsZ	root_user�optsr4Z	resolvingZsack_activationZavailable_repos)r1r;r
r
r�	configureRszKpatchCmd.configurec	Cs�g}|jjj�j�jtd�}x�|D]�}t|�}|jjj�j�j|d�j�}|r�|jjj�j||dj|dj	d�}|jjj�j||j
d�j�j|�}n|jjj�j||j
d�j�}x|D]}|j
t|��q�Wq"W|S)N)rr)rrr)rr)r/r r!�	installedr"�KERNEL_PKG_NAMEr�runrrrr%�
difference�append�str)	r1�kpps�installed_kernelsrr)r>Zsub_qr*rr
r
r�_list_missing_kpp_pkgs`s
$$
z KpatchCmd._list_missing_kpp_pkgscCs6|jjj�j�jtd�}x|D]}t|j|�qWdS)N)r)r/r r!r>r"r?r+)r1rErr
r
r�_install_missing_kpp_pkgsts
z#KpatchCmd._install_missing_kpp_pkgscCsr|jdkrtjd�dSytj�}|j|j�|Stk
rl}z tjj	t
d�jt|����WYdd}~XnXdS)Nz Couldn't find configuration filezParsing file failed: {})
r0r�warning�configparserZConfigParser�read�	Exceptionr#�
exceptions�ErrorrrrC)r1r7�er
r
r�
_read_conf{s

zKpatchCmd._read_confcCs�|jdkrtjd�dS|j�}|dkr,dS|jd�s@|jd�|jdtt|��y&t	|jd��}|j
|�WdQRXWn<tk
r�}z tj
jtd�jt|����WYdd}~XnXdS)Nz Couldn't find configuration file�main�wzFailed to update conf file: {})r0rrHrO�has_sectionZadd_sectionr$�KPATCH_UPDATE_OPTrC�open�writerKr#rLrMrr)r1�valuer'Z
cfg_streamrNr
r
r�_update_plugin_cfg�s



zKpatchCmd._update_plugin_cfgcCs�|jj}|dkr$|j�|jd�n�|dkr8|jd�n�|dkr�|j�}d}|dk	rz|jd�rz|jdt�rz|jdt�rzd}t	j
td�j|��|j
�}|r�t	j
td�jd	j|���n(|d
kr�|j�ntjjtd�j|���dS)Nr9TZmanualFr:rPzKpatch update setting: {}zAvailable patches: {}z, r&zInvalid argument: {})r<r4rGrWrOrR�
has_optionrS�
getbooleanr�inforrrF�joinr#rLrM)r1r4r'Z	kp_statusrDr
r
rr@�s(
z
KpatchCmd.run)r)�__name__�
__module__�__qualname__�aliasesrZsummaryr.�staticmethodr8r=rFrGrOrWr@�
__classcell__r
r
)r3rr,Bsr,cs8eZdZeZ�fdd�Zdd�Zdd�Zdd�Z�Z	S)	�KpatchPlugincs4tt|�j||�d|_d|_|dk	r0|jt�dS)NF)r-rbr.�
_commiting�_autoupdateZregister_commandr,)r1r/r2)r3r
rr.�s
zKpatchPlugin.__init__cCsv|j|jj�}y(|jd�o0|jdt�o0|jdt�|_Wn:tk
rp}zt	j
td�jt
|���WYdd}~XnXdS)NrPzParsing file failed: {})Zread_configr/r'rRrXrSrYrdrKrrHrrrC)r1r7rNr
r
r�config�s
zKpatchPlugin.configcCs"d|_|jj|jjj�d|_dS)NTF)rcr/Zresolver2r;Z
allow_erasing)r1r
r
r�_commit_changes�szKpatchPlugin._commit_changescs�|js|jrdSg}g�xT|jjD]H}|jtjjkr$|jjt	krP|j
|j�q$|jjjd�r$�j
|jj�q$W�fdd�|D�}x|D]}t|j|�q�W|r�|j
�dS)Nz
kpatch-patch-csg|]}t|��kr|�qSr
)r)rr)�explicit_kpp_installr
rr�sz)KpatchPlugin.resolved.<locals>.<listcomp>)rdrcr/Ztransactionr4r#ZFORWARD_ACTIONSrrr?rB�
startswithr+rf)r1Zneed_kpp_forZtr_itemrr
)rgr�resolved�s
zKpatchPlugin.resolved)
r\r]r^rrr.rerfrirar
r
)r3rrb�s

rb)Z
__future__rrrIZos.pathr
rZdnfpluginscorerrZdnf.callbackr#Zdnf.cliZdnf.exceptionsZdnf.transactionrrSr?rrr+r2ZCommandr,ZPluginrbr
r
r
r�<module>s"	u

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists