3 g<@sddlZddlZddlZddlZddlmZddlm Z ddl Z Gddde Z Gddde Z Gdd d e ZGd d d e ZdS) N)_)loggerc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS) PersistorBasecCs"||_i|_i|_i|_i|_dS)N)history _installed_removed _upgraded _downgraded)selfrr /usr/lib/python3.6/group.py__init__ s zPersistorBase.__init__cCs(t|jt|jt|jt|jS)N)lenrrrr )r r r r __len__(szPersistorBase.__len__cCsi|_i|_i|_i|_dS)N)rrrr )r r r r clean+szPersistorBase.cleancCstdS)N)NotImplementedError)r objr r r _get_obj_id1szPersistorBase._get_obj_idcCs*|jjj|d|tjj}|jtjjdS)N)rswdbaddItemlibdnf transactionTransactionItemReason_USERZsetStateZTransactionItemState_DONE)r itemactiontir r r _add_to_history4szPersistorBase._add_to_historycCs$||j|j|<|j|tjjdS)N)rrrrrTransactionItemAction_INSTALL)r rr r r install8szPersistorBase.installcCs$||j|j|<|j|tjjdS)N)rrrrrTransactionItemAction_REMOVE)r rr r r remove<szPersistorBase.removecCs$||j|j|<|j|tjjdS)N)rrrrrTransactionItemAction_UPGRADE)r rr r r upgrade@szPersistorBase.upgradecCs$||j|j|<|j|tjjdS)N)r rrrrTransactionItemAction_DOWNGRADE)r rr r r downgradeDszPersistorBase.downgradecCstdS)N)r)r obj_idnametranslated_name pkg_typesr r r newHszPersistorBase.newcCstdS)N)r)r r&r r r getKszPersistorBase.getcCstdS)N)r)r patternr r r search_by_patternNszPersistorBase.search_by_patternN)__name__ __module__ __qualname__r rrrrrr!r#r%r*r+r-r r r r rsrc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)GroupPersistorcCs"|jjj}dd|D}t|S)NcSsg|]}|jr|qSr )getCompsGroupItem).0ir r r Vsz+GroupPersistor.__iter__..)rrgetItemsiter)r itemsr r r __iter__Ts zGroupPersistor.__iter__cCs|jS)N) getGroupId)r rr r r rYszGroupPersistor._get_obj_idcCsH|jjj}|j||dk r(|j||dk r:|j||j||S)N)rrZcreateCompsGroupItemZ setGroupIdsetNamesetTranslatedNamesetPackageTypes)r r&r'r(r) swdb_groupr r r r*\s     zGroupPersistor.newcCs"|jjj|}|sdS|j}|S)N)rrr2)r r&r>r r r r+fs zGroupPersistor.getcCs|jjj|S)N)rrZgetCompsGroupItemsByPattern)r r,r r r r-msz GroupPersistor.search_by_patterncCs|jjj|S)N)rrZgetPackageCompsGroups)r pkg_namer r r get_package_groupspsz!GroupPersistor.get_package_groupscCs|jjj|dd}|tjjkr"dSt|j|}xJ|jj D]<\}}x2|j D]&}|j |kr`qN|j sjqN|j |qNWq.)rrr6r7)r r8r r r r9s zEnvironmentPersistor.__iter__cCs|jS)N)ZgetEnvironmentId)r rr r r rsz EnvironmentPersistor._get_obj_idcCsH|jjj}|j||dk r(|j||dk r:|j||j||S)N)rrZcreateCompsEnvironmentItemZsetEnvironmentIdr;r<r=)r r&r'r(r)swdb_envr r r r*s     zEnvironmentPersistor.newcCs"|jjj|}|sdS|j}|S)N)rrrM)r r&rNr r r r+s zEnvironmentPersistor.getcCs|jjj|S)N)rrZ!getCompsEnvironmentItemsByPattern)r r,r r r r-sz&EnvironmentPersistor.search_by_patterncCs|jjj|S)N)rrZgetCompsGroupEnvironments)r rHr r r get_group_environmentssz+EnvironmentPersistor.get_group_environmentscCs|jjj|}|sdSt|j|}xJ|jjD]<\}}x2|jD]&}|j|krTqB|j s^qB|j |qBWq0WxJ|j jD]<\}}x2|jD]&}|j|krq|j sq|j |qWq|W|rdSdS)NFT) rrIr+rDrOrr8Z getGroupsr:rEr!rrF)r rHr>Zgroup_environmentsZenv_idenvrIr r r is_removable_groups*  z'EnvironmentPersistor.is_removable_groupN) r.r/r0r9rr*r+r-rOrQr r r r rLs rLc@seZdZd,ddZddZddZdd Zd-d d Zd d ZddZ ddZ d.ddZ d/ddZ d0ddZ d1ddZd2ddZd3ddZd4ddZd d!Zd"d#Zed$d%Zed&d'Zd(d)Zd*d+ZdS)5RPMTransactionNc Cs:||_||_|js0y|jjjWn YnXi|_dS)N)rrrZinitTransaction _swdb_ti_pkg)r rrr r r r szRPMTransaction.__init__cs8jrjj}n jjj}fdd|D}t|S)Ncs&g|]}|jrtjjjj|qSr ) getRPMItemdnfdbrRPMTransactionItemWrapper)r3r4)r r r r5sz+RPMTransaction.__iter__..)rr6rrr7)r r8r )r r r9s   zRPMTransaction.__iter__cs8jrjj}n jjj}fdd|D}t|S)Ncs&g|]}|jrtjjjj|qSr )rTrUrVrrW)r3r4)r r r r5sz*RPMTransaction.__len__..)rr6rrr)r r8r )r r rs   zRPMTransaction.__len__cCsP|jjj}|j|j|j|jp$d|j|j|j |j |j |j |S)Nr) rrZ createRPMItemr;r'ZsetEpochZepochZ setVersionversionZ setReleasereleaseZsetArcharch)r rJrpm_itemr r r _pkg_to_swdb_rpm_items     z$RPMTransaction._pkg_to_swdb_rpm_itemcCsV|j|}|j|}|dkr&|j|}|jjj||||}|rH|j|||j|<|S)N)r\ get_repoid get_reasonrrr addReplacedByrS)r rJrrG replaced_byr[Zrepoidresultr r r r*s     zRPMTransaction.newcCst|dd}|r|S|jS)NZ_force_swdb_repoid)getattrZreponame)r rJrar r r r]s zRPMTransaction.get_repoidcCs|jjj|j|jdS)zGet reason for package)rrrCr'rZ)r rJr r r r^szRPMTransaction.get_reasoncCstjj|j|S)zGet reason for package)rrZTransactionItemReasonToStringr^)r rJr r r get_reason_nameszRPMTransaction.get_reason_namecCs8|pg}x*|D]"}|j|tjj}|r|j|qWdS)N)r*rrTransactionItemAction_OBSOLETEDr_)r obsoletedr`Zobsrr r r _add_obsoleted s  zRPMTransaction._add_obsoletedcCs6|j|tjj}|j|tjj|d}|j||ddS)N)r`)r*rrr$ TransactionItemAction_DOWNGRADEDrh)r r*oldrgti_newti_oldr r r add_downgradeszRPMTransaction.add_downgradecCs|j||dS)N) add_remove)r rjrGr r r add_eraseszRPMTransaction.add_erasecCs4|dkrtjj}|j|tjj|}|j||ddS)N)r`)rrrr*rrh)r r*rgrGrkr r r add_installszRPMTransaction.add_installcCs6|j|tjj}|j|tjj|d}|j||ddS)N)r`)r*rrTransactionItemAction_REINSTALL!TransactionItemAction_REINSTALLEDrh)r r*rjrgrkrlr r r add_reinstallszRPMTransaction.add_reinstallcCs"|p tjj}|j|tjj|}dS)N)rrrr*r )r rjrGrlr r r rn$s zRPMTransaction.add_removecCs6|j|tjj}|j|tjj|d}|j||ddS)N)r`)r*rrr"TransactionItemAction_UPGRADEDrh)r r*rjrgrkrlr r r add_upgrade(szRPMTransaction.add_upgradec Cs^|jr dS|jjrdSy.|drB|j rBtjtdj|dSWntk rXdSXdS)NrZmodularitylabelz\No available modular metadata for modular package '{}', it cannot be installed on the systemrc) Z _from_cmdlineZrepoZmodule_hotfixesZ_is_in_active_modulerZcriticalrformat ValueError)r hdrrJr r r _test_fail_safe-s zRPMTransaction._test_fail_safecCsRd}x0|D]&}y|jtjjkrP|jj}||j||j7}|j||dn|jtjjkrp|j |jj n|jtjj kr|jj}||j||j7}|j||dnL|jtjj kr|jj}||j||j7}|j||dn|jtjj kr|j |jj n|jtjjkr<|jj}||j||j7}|j||n|jtjjkr\|j |jj n|jtjjkr||j |jj nz|jtjjkr|jj}||j||j7}|j||dn@|jtjjkr|j |jj n |jtjjkrntd|jWq tjk r2}ztjjtd|WYdd}~Xq Xq W|rNtjjtd|S)z!Populate the RPM transaction set.rur4z%TransactionItemAction not handled: %szAn rpm exception occurred: %sNz1No available modular metadata for modular package)rrrr$rJZ_headerryZ addInstallriZaddEraseidxrZTransactionItemAction_OBSOLETErfrqZ addReinstallrrr r"rtZ#TransactionItemAction_REASON_CHANGE RuntimeErrorrpmerrorrU exceptionsErrorr)r ZtsZmodular_problemstsirxer r r _populate_rpm_ts;sR*zRPMTransaction._populate_rpm_tsc CsXt}xL|D]D}|jtjjkr y|j|jWq tk rNtd|Yq Xq W|S)Nz*TransactionItem is has no RPM attached: %s) rDrrUrZFORWARD_ACTIONSrFrJKeyErrorr|)r rarr r r install_setms zRPMTransaction.install_setc Csbt}xV|D]N}|jtjjtjjgkr y|j|jWq t k rXt d|Yq Xq W|S)Nz*TransactionItem is has no RPM attached: %s) rDrrUrZBACKWARD_ACTIONSrrrrFrJrr|)r rarr r r 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)rZ)r3rJr r r r5sz3RPMTransaction._rpm_limitations..z+Will not install a source rpm package (%s).rN)rrr)r Z src_installsr r r _rpm_limitationss  zRPMTransaction._rpm_limitationscsfdd|DS)Ncsg|]}|jkr|qSr )r)r3r)rr r r5sz-RPMTransaction._get_items..r )r rr )rr _get_itemsszRPMTransaction._get_items)N)NN)N)N)N)NN)N)N)N)r.r/r0r r9rr\r*r]r^rerhrmrorprsrnruryrpropertyrrrrr r r r rRs*          2  rR)Zlibdnf.transactionrZdnf.db.historyrUZdnf.transactionZdnf.exceptionsZdnf.i18nrZdnf.utilrr}objectrr1rLrRr r r r s  3<<