3 ÌÐg†<ã@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 ttt|ƒƒƒ‚||_i|_i|_ i|_ i|_ dS)N) Ú isinstanceÚdnfÚdbÚhistoryZ SwdbInterfaceÚAssertionErrorÚstrÚtypeÚ _installedÚ_removedÚ _upgradedÚ _downgraded)Úselfr©rú/usr/lib/python3.6/group.pyÚ__init__ s  zPersistorBase.__init__cCs(t|jƒt|jƒt|jƒt|jƒS)N)Úlenr r rr)rrrrÚ__len__(szPersistorBase.__len__cCsi|_i|_i|_i|_dS)N)r r rr)rrrrÚclean+szPersistorBase.cleancCst‚dS)N)ÚNotImplementedError)rÚobjrrrÚ _get_obj_id1szPersistorBase._get_obj_idcCs*|jjj|d|tjjƒ}|jtjjƒdS)NÚ)rÚswdbÚaddItemÚlibdnfÚ transactionÚTransactionItemReason_USERZsetStateZTransactionItemState_DONE)rÚitemÚactionÚtirrrÚ_add_to_history4szPersistorBase._add_to_historycCs$||j|j|ƒ<|j|tjjƒdS)N)r rr#rrÚTransactionItemAction_INSTALL)rrrrrÚinstall8szPersistorBase.installcCs$||j|j|ƒ<|j|tjjƒdS)N)r rr#rrÚTransactionItemAction_REMOVE)rrrrrÚremove<szPersistorBase.removecCs$||j|j|ƒ<|j|tjjƒdS)N)rrr#rrÚTransactionItemAction_UPGRADE)rrrrrÚupgrade@szPersistorBase.upgradecCs$||j|j|ƒ<|j|tjjƒdS)N)rrr#rrÚTransactionItemAction_DOWNGRADE)rrrrrÚ downgradeDszPersistorBase.downgradecCst‚dS)N)r)rÚobj_idÚnameÚtranslated_nameÚ pkg_typesrrrÚnewHszPersistorBase.newcCst‚dS)N)r)rr,rrrÚgetKszPersistorBase.getcCst‚dS)N)r)rÚpatternrrrÚsearch_by_patternNszPersistorBase.search_by_patternN)Ú__name__Ú __module__Ú __qualname__rrrrr#r%r'r)r+r0r1r3rrrrrsrc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚGroupPersistorcCs"|jjjƒ}dd„|Dƒ}t|ƒS)NcSsg|]}|jƒr|‘qSr)ÚgetCompsGroupItem)Ú.0Úirrrú Vsz+GroupPersistor.__iter__..)rrÚgetItemsÚiter)rÚitemsrrrÚ__iter__Ts zGroupPersistor.__iter__cCs|jƒS)N)Ú getGroupId)rrrrrrYszGroupPersistor._get_obj_idcCsH|jjjƒ}|j|ƒ|dk r(|j|ƒ|dk r:|j|ƒ|j|ƒ|S)N)rrZcreateCompsGroupItemZ setGroupIdÚsetNameÚsetTranslatedNameÚsetPackageTypes)rr,r-r.r/Ú swdb_grouprrrr0\s     zGroupPersistor.newcCs"|jjj|ƒ}|sdS|jƒ}|S)N)rrr8)rr,rDrrrr1fs zGroupPersistor.getcCs|jjj|ƒS)N)rrZgetCompsGroupItemsByPattern)rr2rrrr3msz GroupPersistor.search_by_patterncCs|jjj|ƒS)N)rrZgetPackageCompsGroups)rÚpkg_namerrrÚget_package_groupspsz!GroupPersistor.get_package_groupscCsÔ|jjj|ddƒ}|tjjkr"dSt|j|ƒƒ}xJ|jj ƒD]<\}}x2|j ƒD]&}|j ƒ|kr`qN|j ƒsjqN|j |ƒqNWqZ getPackagesZgetNameÚ getInstalledr'r Úadd)rrEÚreasonZpackage_groupsÚgroup_idÚgroupÚpkgrrrÚis_removable_pkgss*   zGroupPersistor.is_removable_pkgN) r4r5r6r?rr0r1r3rFrQrrrrr7Rs r7c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚEnvironmentPersistorcCs"|jjjƒ}dd„|Dƒ}t|ƒS)NcSsg|]}|jƒr|‘qSr)ÚgetCompsEnvironmentItem)r9r:rrrr;’sz1EnvironmentPersistor.__iter__..)rrr<r=)rr>rrrr?�s zEnvironmentPersistor.__iter__cCs|jƒS)N)ZgetEnvironmentId)rrrrrr•sz EnvironmentPersistor._get_obj_idcCsH|jjjƒ}|j|ƒ|dk r(|j|ƒ|dk r:|j|ƒ|j|ƒ|S)N)rrZcreateCompsEnvironmentItemZsetEnvironmentIdrArBrC)rr,r-r.r/Úswdb_envrrrr0˜s     zEnvironmentPersistor.newcCs"|jjj|ƒ}|sdS|jƒ}|S)N)rrrS)rr,rTrrrr1¢s zEnvironmentPersistor.getcCs|jjj|ƒS)N)rrZ!getCompsEnvironmentItemsByPattern)rr2rrrr3©sz&EnvironmentPersistor.search_by_patterncCs|jjj|ƒS)N)rrZgetCompsGroupEnvironments)rrNrrrÚget_group_environments¬sz+EnvironmentPersistor.get_group_environmentscCsÈ|jjj|ƒ}|sdSt|j|ƒƒ}xJ|jjƒD]<\}}x2|jƒD]&}|jƒ|krTqB|j ƒs^qB|j |ƒqBWq0WxJ|j jƒD]<\}}x2|jƒD]&}|jƒ|kr qŽ|j ƒsªqŽ|j |ƒqŽWq|W|rÄdSdS)NFT) rrOr1rJrUr r>Z getGroupsr@rKr'r rL)rrNrDZgroup_environmentsZenv_idÚenvrOrrrÚis_removable_group¯s*  z'EnvironmentPersistor.is_removable_groupN) r4r5r6r?rr0r1r3rUrWrrrrrRŽs rRc@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ÚRPMTransactionNc Cs:||_||_|js0y|jjjƒWn YnXi|_dS)N)rrrZinitTransactionÚ _swdb_ti_pkg)rrrrrrrËszRPMTransaction.__init__cs8ˆjrˆjjƒ}n ˆjjjƒ}‡fdd„|Dƒ}t|ƒS)Ncs&g|]}|jƒrtjjjˆj|ƒ‘qSr)Ú getRPMItemrrrÚRPMTransactionItemWrapper)r9r:)rrrr;Ýsz+RPMTransaction.__iter__..)rr<rrr=)rr>r)rrr?×s   zRPMTransaction.__iter__cs8ˆjrˆjjƒ}n ˆjjjƒ}‡fdd„|Dƒ}t|ƒS)Ncs&g|]}|jƒrtjjjˆj|ƒ‘qSr)rZrrrr[)r9r:)rrrr;åsz*RPMTransaction.__len__..)rr<rrr)rr>r)rrràs   zRPMTransaction.__len__cCsP|jjjƒ}|j|jƒ|j|jp$dƒ|j|jƒ|j |j ƒ|j |j ƒ|S)Nr) rrZ createRPMItemrAr-ZsetEpochZepochZ setVersionÚversionZ setReleaseÚreleaseZsetArchÚarch)rrPÚrpm_itemrrrÚ_pkg_to_swdb_rpm_itemès     z$RPMTransaction._pkg_to_swdb_rpm_itemcCsV|j|ƒ}|j|ƒ}|dkr&|j|ƒ}|jjj||||ƒ}|rH|j|ƒ||j|<|S)N)r`Ú get_repoidÚ get_reasonrrrÚ addReplacedByrY)rrPr!rMÚ replaced_byr_ZrepoidÚresultrrrr0ñs     zRPMTransaction.newcCst|ddƒ}|r|S|jS)NZ_force_swdb_repoid)ÚgetattrZreponame)rrPrerrrraüs zRPMTransaction.get_repoidcCs|jjj|j|jdƒS)zGet reason for packageééÿÿÿÿ)rrrIr-r^)rrPrrrrbszRPMTransaction.get_reasoncCstjj|j|ƒƒS)zGet reason for package)rrZTransactionItemReasonToStringrb)rrPrrrÚget_reason_nameszRPMTransaction.get_reason_namecCs8|pg}x*|D]"}|j|tjjƒ}|r|j|ƒqWdS)N)r0rrÚTransactionItemAction_OBSOLETEDrc)rÚ obsoletedrdZobsr"rrrÚ_add_obsoleted s  zRPMTransaction._add_obsoletedcCs6|j|tjjƒ}|j|tjj|d�}|j||d�dS)N)rd)r0rrr*Ú TransactionItemAction_DOWNGRADEDrl)rr0ÚoldrkÚti_newÚti_oldrrrÚ add_downgradeszRPMTransaction.add_downgradecCs|j||ƒdS)N)Ú add_remove)rrnrMrrrÚ add_eraseszRPMTransaction.add_erasecCs4|dkrtjj}|j|tjj|ƒ}|j||d�dS)N)rd)rrrr0r$rl)rr0rkrMrorrrÚ add_installszRPMTransaction.add_installcCs6|j|tjjƒ}|j|tjj|d�}|j||d�dS)N)rd)r0rrÚTransactionItemAction_REINSTALLÚ!TransactionItemAction_REINSTALLEDrl)rr0rnrkrorprrrÚ add_reinstallszRPMTransaction.add_reinstallcCs"|p tjj}|j|tjj|ƒ}dS)N)rrrr0r&)rrnrMrprrrrr$s zRPMTransaction.add_removecCs6|j|tjjƒ}|j|tjj|d�}|j||d�dS)N)rd)r0rrr(ÚTransactionItemAction_UPGRADEDrl)rr0rnrkrorprrrÚ add_upgrade(szRPMTransaction.add_upgradec Cs^|jr dS|jjrdSy.|drB|jƒ rBtjtdƒj|ƒƒdSWntk rXdSXdS)NrZmodularitylabelz\No available modular metadata for modular package '{}', it cannot be installed on the systemrg) Z _from_cmdlineZrepoZmodule_hotfixesZ_is_in_active_modulerZcriticalrÚformatÚ ValueError)rÚhdrrPrrrÚ_test_fail_safe-s zRPMTransaction._test_fail_safecCsRd}�x0|D�]&}�yä|jtjjkrP|jj}||j||jƒ7}|j||dƒ�n¦|jtjjkrp|j |jj ƒ�n†|jtjj krª|jj}||j||jƒ7}|j||dƒ�nL|jtjj krä|jj}||j||jƒ7}|j||dƒ�n|jtjj k�r|j |jj ƒnò|jtjjk�r<|jj}||j||jƒ7}|j||ƒnº|jtjjk�r\|j |jj ƒnš|jtjjk�r||j |jj ƒnz|jtjjk�r¶|jj}||j||jƒ7}|j||dƒn@|jtjjk�rÖ|j |jj ƒn |jtjjk�rèntd|jƒ‚Wq tjk �r2}ztjjtd|ƒƒ‚WYdd}~Xq Xq W|�rNtjjtdƒƒ‚|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!rrr*rPZ_headerr}Z addInstallrmZaddEraseÚidxr$ZTransactionItemAction_OBSOLETErjruZ addReinstallrvr&r(rxZ#TransactionItemAction_REASON_CHANGEÚ RuntimeErrorÚrpmÚerrorrÚ exceptionsÚErrorr)rZtsZmodular_problemsÚtsir|ÚerrrÚ_populate_rpm_ts;sR*zRPMTransaction._populate_rpm_tsc CsXtƒ}xL|D]D}|jtjjkr y|j|jƒWq tk rNtd|ƒ‚Yq Xq W|S)Nz*TransactionItem is has no RPM attached: %s) rJr!rrZFORWARD_ACTIONSrLrPÚKeyErrorr€)rrer…rrrÚ install_setms zRPMTransaction.install_setc Csbtƒ}xV|D]N}|jtjjtjjgkr y|j|jƒWq t k rXt d|ƒ‚Yq Xq W|S)Nz*TransactionItem is has no RPM attached: %s) rJr!rrZBACKWARD_ACTIONSrrvrLrPrˆr€)rrer…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)r^)r9rPrrrr;‰sz3RPMTransaction._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!)r9r…)r!rrr;�sz-RPMTransaction._get_items..r)rr!r)r!rÚ _get_items�szRPMTransaction._get_items)N)NN)N)N)N)NN)N)N)N)r4r5r6rr?rr`r0rarbrirlrqrsrtrwrrryr}r‡Úpropertyr‰rŠrŒr�rrrrrXÊs*          2  rX)Zlibdnf.transactionrZdnf.db.historyrZdnf.transactionZdnf.exceptionsZdnf.i18nrZdnf.utilrr�Úobjectrr7rRrXrrrrÚs  3<<