a ©!c†<ã@s„ddlZddlZddlZddlZddlmZddlm Z ddl Z Gdd„de ƒZ Gdd„de ƒZ Gdd „d e ƒZGd d „d e ƒZdS) éN)Ú_)Úloggerc@sleZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)Ú PersistorBasecCsBt|tjjjƒs Jtt|ƒƒƒ‚||_i|_i|_i|_ i|_ dS©N) Ú isinstanceÚdnfÚdbÚhistoryZ SwdbInterfaceÚstrÚtypeÚ _installedÚ_removedÚ _upgradedÚ _downgraded)Úselfr ©rú0/usr/lib/python3.9/site-packages/dnf/db/group.pyÚ__init__ s  zPersistorBase.__init__cCs(t|jƒt|jƒt|jƒt|jƒSr)Úlenr r rr©rrrrÚ__len__(szPersistorBase.__len__cCsi|_i|_i|_i|_dSr)r r rrrrrrÚclean+szPersistorBase.cleancCst‚dSr©ÚNotImplementedError©rÚobjrrrÚ _get_obj_id1szPersistorBase._get_obj_idcCs*|jj |d|tjj¡}| tjj¡dS)NÚ)r ÚswdbÚaddItemÚlibdnfÚ transactionÚTransactionItemReason_USERZsetStateZTransactionItemState_DONE)rÚitemÚactionÚtirrrÚ_add_to_history4szPersistorBase._add_to_historycCs$||j| |¡<| |tjj¡dSr)r rr&r r!ÚTransactionItemAction_INSTALLrrrrÚinstall8szPersistorBase.installcCs$||j| |¡<| |tjj¡dSr)r rr&r r!ÚTransactionItemAction_REMOVErrrrÚremove<szPersistorBase.removecCs$||j| |¡<| |tjj¡dSr)rrr&r r!ÚTransactionItemAction_UPGRADErrrrÚupgrade@szPersistorBase.upgradecCs$||j| |¡<| |tjj¡dSr)rrr&r r!ÚTransactionItemAction_DOWNGRADErrrrÚ downgradeDszPersistorBase.downgradecCst‚dSrr)rÚobj_idÚnameÚtranslated_nameÚ pkg_typesrrrÚnewHszPersistorBase.newcCst‚dSrr)rr/rrrÚgetKszPersistorBase.getcCst‚dSrr©rÚpatternrrrÚsearch_by_patternNszPersistorBase.search_by_patternN)Ú__name__Ú __module__Ú __qualname__rrrrr&r(r*r,r.r3r4r7rrrrrsrc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚGroupPersistorcCs"|jj ¡}dd„|Dƒ}t|ƒS)NcSsg|]}| ¡r|‘qSr)ÚgetCompsGroupItem©Ú.0ÚirrrÚ Vóz+GroupPersistor.__iter__..©r rÚgetItemsÚiter©rÚitemsrrrÚ__iter__Ts zGroupPersistor.__iter__cCs| ¡Sr)Ú getGroupIdrrrrrYszGroupPersistor._get_obj_idcCsH|jj ¡}| |¡|dur(| |¡|dur:| |¡| |¡|Sr)r rZcreateCompsGroupItemZ setGroupIdÚsetNameÚsetTranslatedNameÚsetPackageTypes)rr/r0r1r2Ú swdb_grouprrrr3\s     zGroupPersistor.newcCs"|jj |¡}|sdS| ¡}|Sr)r rr<)rr/rLrrrr4fs zGroupPersistor.getcCs|jj |¡Sr)r rZgetCompsGroupItemsByPatternr5rrrr7msz GroupPersistor.search_by_patterncCs|jj |¡Sr)r rZgetPackageCompsGroups)rÚpkg_namerrrÚget_package_groupspsz!GroupPersistor.get_package_groupscCsÄ|jj |dd¡}|tjjkr"dSt| |¡ƒ}|j  ¡D]8\}}|  ¡D]&}|  ¡|kr\qJ|  ¡sfqJ|  |¡qJq:|j  ¡D]8\}}|  ¡D]&}|  ¡|kr qŽ|  ¡sªqŽ| |¡qŽq~|rÀdSdS)NréþÿÿÿFT)r rÚresolveRPMTransactionItemReasonr r!ZTransactionItemReason_GROUPÚsetrNr rFZ getPackagesÚgetNameÚ getInstalledr*r Úadd)rrMÚreasonZpackage_groupsÚgroup_idÚgroupÚpkgrrrÚis_removable_pkgss*     zGroupPersistor.is_removable_pkgN) r8r9r:rGrr3r4r7rNrYrrrrr;Rs r;c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚEnvironmentPersistorcCs"|jj ¡}dd„|Dƒ}t|ƒS)NcSsg|]}| ¡r|‘qSr)ÚgetCompsEnvironmentItemr=rrrr@’rAz1EnvironmentPersistor.__iter__..rBrErrrrGs zEnvironmentPersistor.__iter__cCs| ¡Sr)ZgetEnvironmentIdrrrrr•sz EnvironmentPersistor._get_obj_idcCsH|jj ¡}| |¡|dur(| |¡|dur:| |¡| |¡|Sr)r rZcreateCompsEnvironmentItemZsetEnvironmentIdrIrJrK)rr/r0r1r2Úswdb_envrrrr3˜s     zEnvironmentPersistor.newcCs"|jj |¡}|sdS| ¡}|Sr)r rr[)rr/r\rrrr4¢s zEnvironmentPersistor.getcCs|jj |¡Sr)r rZ!getCompsEnvironmentItemsByPatternr5rrrr7©sz&EnvironmentPersistor.search_by_patterncCs|jj |¡Sr)r rZgetCompsGroupEnvironments)rrVrrrÚget_group_environments¬sz+EnvironmentPersistor.get_group_environmentscCs¸|jj |¡}|sdSt| |¡ƒ}|j ¡D]8\}}| ¡D]&}| ¡|krPq>|  ¡sZq>|  |¡q>q.|j  ¡D]8\}}| ¡D]&}| ¡|kr”q‚|  ¡sžq‚|  |¡q‚qr|r´dSdS)NFT) r rWr4rQr]r rFZ getGroupsrHrSr*r rT)rrVrLZgroup_environmentsZenv_idÚenvrWrrrÚis_removable_group¯s*    z'EnvironmentPersistor.is_removable_groupN) r8r9r:rGrr3r4r7r]r_rrrrrZŽs rZc@sÎeZdZd,dd„Zdd„Zdd„Zdd „Zd-d d „Zd d „Zdd„Z dd„Z d.dd„Z d/dd„Z d0dd„Z d1dd„Zd2dd„Zd3dd„Zd4dd„Zd d!„Zd"d#„Zed$d%„ƒZed&d'„ƒZd(d)„Zd*d+„ZdS)5ÚRPMTransactionNcCs:||_||_|js0z|jj ¡Wn Yn0i|_dSr)r r!rZinitTransactionÚ _swdb_ti_pkg)rr r!rrrrËszRPMTransaction.__init__cs8ˆjrˆj ¡}n ˆjj ¡}‡fdd„|Dƒ}t|ƒS)Ncs&g|]}| ¡rtjj ˆj|¡‘qSr©Z getRPMItemrrr ZRPMTransactionItemWrapperr=rrrr@ÝrAz+RPMTransaction.__iter__..)r!rCr rrDrErrrrG×s   zRPMTransaction.__iter__cs8ˆjrˆj ¡}n ˆjj ¡}‡fdd„|Dƒ}t|ƒS)Ncs&g|]}| ¡rtjj ˆj|¡‘qSrrbr=rrrr@årAz*RPMTransaction.__len__..)r!rCr rrrErrrràs   zRPMTransaction.__len__cCsP|jj ¡}| |j¡| |jp$d¡| |j¡|  |j ¡|  |j ¡|S)Nr) r rZ createRPMItemrIr0ZsetEpochZepochZ setVersionÚversionZ setReleaseÚreleaseZsetArchÚarch)rrXÚrpm_itemrrrÚ_pkg_to_swdb_rpm_itemès     z$RPMTransaction._pkg_to_swdb_rpm_itemcCsV| |¡}| |¡}|dur&| |¡}|jj ||||¡}|rH| |¡||j|<|Sr)rgÚ get_repoidÚ get_reasonr rrÚ addReplacedByra)rrXr$rUÚ replaced_byrfZrepoidÚresultrrrr3ñs     zRPMTransaction.newcCst|ddƒ}|r|S|jS)NZ_force_swdb_repoid)ÚgetattrZreponame)rrXrlrrrrhüs zRPMTransaction.get_repoidcCs|jj |j|jd¡S)úGet reason for packageéÿÿÿÿ)r rrPr0re©rrXrrrriszRPMTransaction.get_reasoncCstj | |¡¡S)rn)r r!ZTransactionItemReasonToStringrirprrrÚget_reason_nameszRPMTransaction.get_reason_namecCs4|pg}|D]"}| |tjj¡}|r | |¡q dSr)r3r r!ÚTransactionItemAction_OBSOLETEDrj)rÚ obsoletedrkZobsr%rrrÚ_add_obsoleted s zRPMTransaction._add_obsoletedcCs6| |tjj¡}|j|tjj|d}|j||ddS©N)rk)r3r r!r-Ú TransactionItemAction_DOWNGRADEDrt©rr3ÚoldrsÚti_newÚti_oldrrrÚ add_downgradeszRPMTransaction.add_downgradecCs| ||¡dSr)Ú add_remove)rrxrUrrrÚ add_eraseszRPMTransaction.add_erasecCs4|durtjj}| |tjj|¡}|j||ddSru)r r!r"r3r'rt)rr3rsrUryrrrÚ add_installszRPMTransaction.add_installcCs6| |tjj¡}|j|tjj|d}|j||ddSru)r3r r!ÚTransactionItemAction_REINSTALLÚ!TransactionItemAction_REINSTALLEDrtrwrrrÚ add_reinstallszRPMTransaction.add_reinstallcCs"|p tjj}| |tjj|¡}dSr)r r!r"r3r))rrxrUrzrrrr|$s zRPMTransaction.add_removecCs6| |tjj¡}|j|tjj|d}|j||ddSru)r3r r!r+ÚTransactionItemAction_UPGRADEDrtrwrrrÚ add_upgrade(szRPMTransaction.add_upgradecCs^|jr dS|jjrdSz.|drB| ¡sBt tdƒ |¡¡WdSWntyXYdS0dS)NrZmodularitylabelz\No available modular metadata for modular package '{}', it cannot be installed on the systemé) Z _from_cmdlineZrepoZmodule_hotfixesZ_is_in_active_modulerZcriticalrÚformatÚ ValueError)rÚhdrrXrrrÚ_test_fail_safe-s ÿ  zRPMTransaction._test_fail_safec CsLd}|D]&}zâ|jtjjkrL|jj}|| ||j¡7}| ||d¡n¤|jtjjkrl|  |jj ¡n„|jtjj kr¦|jj}|| ||j¡7}| ||d¡nJ|jtjj krà|jj}|| ||j¡7}| ||d¡n|jtjj krþ|  |jj ¡nò|jtjjkr6|jj}|| ||j¡7}| ||¡nº|jtjjkrV|  |jj ¡nš|jtjjkrv|  |jj ¡nz|jtjjkr°|jj}|| ||j¡7}| ||d¡n@|jtjjkrÐ|  |jj ¡n |jtjjkrântd|jƒ‚Wqtjy.}z tj td|ƒ¡‚WYd}~qd}~00q|rHtj tdƒ¡‚|S)z!Populate the RPM transaction set.rÚur?z%TransactionItemAction not handled: %szAn rpm exception occurred: %sNz1No available modular metadata for modular package)r$r r!r-rXZ_headerrˆZ addInstallrvZaddEraseÚidxr'ZTransactionItemAction_OBSOLETErrrZ addReinstallr€r)r+r‚Z#TransactionItemAction_REASON_CHANGEÚ RuntimeErrorÚrpmÚerrorrÚ exceptionsÚErrorr)rÚtsZmodular_problemsÚtsir‡ÚerrrÚ_populate_rpm_ts;sR ,zRPMTransaction._populate_rpm_tsc CsRtƒ}|D]B}|jtjjvr z| |j¡Wq tyJtd|ƒ‚Yq 0q |S©Nz*TransactionItem is has no RPM attached: %s) rQr$rr!ZFORWARD_ACTIONSrTrXÚKeyErrorr‹©rrlr‘rrrÚ install_setms zRPMTransaction.install_setc Cs\tƒ}|D]L}|jtjjtjjgvr z| |j¡Wq t yTt d|ƒ‚Yq 0q |Sr”) rQr$rr!ZBACKWARD_ACTIONSr r€rTrXr•r‹r–rrrÚ remove_setys zRPMTransaction.remove_setcCs,dd„|jDƒ}t|ƒr(tdƒ|dSdS)zj Ensures all the members can be passed to rpm as they are to perform the transaction. cSsg|]}|jdkr|‘qS)Úsrc)re)r>rXrrrr@‰rAz3RPMTransaction._rpm_limitations..z+Will not install a source rpm package (%s).rN)r—rr)rZ src_installsrrrÚ_rpm_limitations…s ÿzRPMTransaction._rpm_limitationscs‡fdd„|DƒS)Ncsg|]}|jˆkr|‘qSr©r$)r>r‘r›rrr@rAz-RPMTransaction._get_items..r)rr$rr›rÚ _get_itemsszRPMTransaction._get_items)N)NN)N)N)N)NN)N)N)N)r8r9r:rrGrrgr3rhrirqrtr{r}r~rr|rƒrˆr“Úpropertyr—r˜ršrœrrrrr`Ês.          2   r`)Zlibdnf.transactionr Zdnf.db.historyrZdnf.transactionZdnf.exceptionsZdnf.i18nrZdnf.utilrrŒÚobjectrr;rZr`rrrrÚs  3<<