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)Ú PersistorBasecCs"||_i|_i|_i|_i|_dS)N)ÚhistoryÚ _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)Úlenrrrr )r r r r Ú__len__(szPersistorBase.__len__cCsi|_i|_i|_i|_dS)N)rrrr )r r r r Úclean+szPersistorBase.cleancCst‚dS)N)ÚNotImplementedError)r Úobjr r r Ú _get_obj_id1szPersistorBase._get_obj_idcCs*|jjj|d|tjjƒ}|jtjjƒdS)NÚ)rÚswdbÚaddItemÚlibdnfÚ transactionÚTransactionItemReason_USERZsetStateZTransactionItemState_DONE)r ÚitemÚactionÚtir r r Ú_add_to_history4szPersistorBase._add_to_historycCs$||j|j|ƒ<|j|tjjƒdS)N)rrrrrÚTransactionItemAction_INSTALL)r rr r r Úinstall8szPersistorBase.installcCs$||j|j|ƒ<|j|tjjƒdS)N)rrrrrÚTransactionItemAction_REMOVE)r rr r r Úremove<szPersistorBase.removecCs$||j|j|ƒ<|j|tjjƒdS)N)rrrrrÚTransactionItemAction_UPGRADE)r rr r r Úupgrade@szPersistorBase.upgradecCs$||j|j|ƒ<|j|tjjƒdS)N)r rrrrÚTransactionItemAction_DOWNGRADE)r rr r r Ú downgradeDszPersistorBase.downgradecCst‚dS)N)r)r Úobj_idÚnameÚtranslated_nameÚ pkg_typesr r r ÚnewHszPersistorBase.newcCst‚dS)N)r)r r&r r r ÚgetKszPersistorBase.getcCst‚dS)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@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚGroupPersistorcCs"|jjjƒ}dd„|Dƒ}t|ƒS)NcSsg|]}|jƒr|‘qSr )ÚgetCompsGroupItem)Ú.0Úir r r ú Vsz+GroupPersistor.__iter__..)rrÚgetItemsÚiter)r Úitemsr r r Ú__iter__Ts zGroupPersistor.__iter__cCs|jƒS)N)Ú getGroupId)r rr r r rYszGroupPersistor._get_obj_idcCsH|jjjƒ}|j|ƒ|dk r(|j|ƒ|dk r:|j|ƒ|j|ƒ|S)N)rrZcreateCompsGroupItemZ setGroupIdÚsetNameÚsetTranslatedNameÚsetPackageTypes)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 r9�s zEnvironmentPersistor.__iter__cCs|jƒS)N)ZgetEnvironmentId)r rr r r r•sz 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_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) rrIr+rDrOrr8Z getGroupsr:rEr!rrF)r rHr>Zgroup_environmentsZenv_idÚenvrIr r r Úis_removable_group¯s*  z'EnvironmentPersistor.is_removable_groupN) r.r/r0r9rr*r+r-rOrQr r r r rLŽs rLc@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)r rrr r r r ËszRPMTransaction.__init__cs8ˆjrˆjjƒ}n ˆjjjƒ}‡fdd„|Dƒ}t|ƒS)Ncs&g|]}|jƒrtjjjˆj|ƒ‘qSr )Ú getRPMItemÚdnfÚdbrÚRPMTransactionItemWrapper)r3r4)r r r r5Ýsz+RPMTransaction.__iter__..)rr6rrr7)r r8r )r r r9×s   zRPMTransaction.__iter__cs8ˆjrˆjjƒ}n ˆjjjƒ}‡fdd„|Dƒ}t|ƒS)Ncs&g|]}|jƒrtjjjˆj|ƒ‘qSr )rTrUrVrrW)r3r4)r r r r5åsz*RPMTransaction.__len__..)rr6rrr)r r8r )r r ràs   zRPMTransaction.__len__cCsP|jjjƒ}|j|jƒ|j|jp$dƒ|j|jƒ|j |j ƒ|j |j ƒ|S)Nr) rrZ createRPMItemr;r'ZsetEpochZepochZ setVersionÚversionZ setReleaseÚreleaseZsetArchÚarch)r rJÚrpm_itemr r r Ú_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Ú addReplacedByrS)r rJrrGÚ replaced_byr[ZrepoidÚresultr 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|jdƒS)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*rrÚTransactionItemAction_OBSOLETEDr_)r Ú obsoletedr`Zobsrr r r Ú_add_obsoleted s  zRPMTransaction._add_obsoletedcCs6|j|tjjƒ}|j|tjj|d�}|j||d�dS)N)r`)r*rrr$Ú TransactionItemAction_DOWNGRADEDrh)r r*ÚoldrgÚti_newÚti_oldr r r Ú add_downgradeszRPMTransaction.add_downgradecCs|j||ƒdS)N)Ú add_remove)r rjrGr r r Ú add_eraseszRPMTransaction.add_erasecCs4|dkrtjj}|j|tjj|ƒ}|j||d�dS)N)r`)rrrr*rrh)r r*rgrGrkr r r Ú add_installszRPMTransaction.add_installcCs6|j|tjjƒ}|j|tjj|d�}|j||d�dS)N)r`)r*rrÚTransactionItemAction_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||d�dS)N)r`)r*rrr"ÚTransactionItemAction_UPGRADEDrh)r r*rjrgrkrlr r r Ú 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 systemrc) Z _from_cmdlineZrepoZmodule_hotfixesZ_is_in_active_modulerZcriticalrÚformatÚ ValueError)r ÚhdrrJr r r Ú_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Úur4z%TransactionItemAction not handled: %szAn rpm exception occurred: %sNz1No available modular metadata for modular package)rrrr$rJZ_headerryZ addInstallriZaddEraseÚidxrZTransactionItemAction_OBSOLETErfrqZ addReinstallrrr r"rtZ#TransactionItemAction_REASON_CHANGEÚ RuntimeErrorÚrpmÚerrorrUÚ exceptionsÚErrorr)r ZtsZmodular_problemsÚtsirxÚer r r Ú_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) rDrrUrZFORWARD_ACTIONSrFrJÚKeyErrorr|)r rar�r r r Ú 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) rDrrUrZBACKWARD_ACTIONSrrrrFrJr„r|)r rar�r 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 r5‰sz3RPMTransaction._rpm_limitations..z+Will not install a source rpm package (%s).rN)r…rr)r Z src_installsr r r Ú_rpm_limitations…s  zRPMTransaction._rpm_limitationscs‡fdd„|DƒS)Ncsg|]}|jˆkr|‘qSr )r)r3r�)rr r r5�sz-RPMTransaction._get_items..r )r rr )rr Ú _get_items�szRPMTransaction._get_items)N)NN)N)N)N)NN)N)N)N)r.r/r0r r9rr\r*r]r^rerhrmrorprsrnruryrƒÚpropertyr…r†rˆr‰r r r r rRÊs*          2  rR)Zlibdnf.transactionrZdnf.db.historyrUZdnf.transactionZdnf.exceptionsZdnf.i18nrZdnf.utilrr}Úobjectrr1rLrRr r r r Ús  3<<