0 #ˆl–äY>” jC]Šq@³p\jbѿà ƒyð·ÂÁÀ#ˆl–ß=¿JJj"Tâ‚ ÆÃpAS�ÿÄ ƒh¹ÃÂÁ"Óa =�ßiÿ2ã@sÆdZddlmZddlmZddlZddlZddlZddlm Z m Z ddl Z ddl Z ddl Z ddlZ ddlZ ddlZdZdZdZd Zd d „Zd d „Zdd„ZGdd„de jjƒZGdd„de jƒ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Ú 5óz(_get_plugin_cfg_file..)ZpluginconfpathÚosr Úisfile)Z base_confÚfilesÚfiler r r Ú_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_versionr r r Ú_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_sltrr r r Ú_install_kpp_pkgCs ÿr/csheZdZdZdZedƒZ‡fdd„Zedd„ƒZ dd „Z d d „Z d 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__r r 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)Úparserr r r Ú 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)r5rAr r r Ú 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"r r r Ú_list_missing_kpp_pkgsvs0 ý þ ý þ z KpatchCmd._list_missing_kpp_pkgscCs2|jj ¡ ¡jtd�}|D]}t|j|ƒqdS)NrD)r3r#r$rEr%rFr/)r5rLrr r r Ú_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<Úer r r Ú _read_confœs   zKpatchCmd.