a 2hL;@sddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z mZmZGdddeZGd d d eZGd d d eZGd ddeZdS)N)ucd)misc) DatabaseError)GroupPersistorEnvironmentPersistorRPMTransactionc@sjeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ eddZeddZeddZeddZedd Zed!d"Zed#d$Zed%d&Zejd'd&Zed(d)Zejd*d)Zed+d,Zed-d.Zed/d0Zejd1d0Zed2d3Zd4d5Zed6d7Zd8d9Zed:d;Z edd?Z"d@S)ARPMTransactionItemWrappercCs|dus J||_||_dSN)_swdb_item)selfswdbitemr2/usr/lib/python3.9/site-packages/dnf/db/history.py__init__#s z"RPMTransactionItemWrapper.__init__cCs|jSr )r ZgetItemZtoStrr rrr__str__(sz!RPMTransactionItemWrapper.__str__cCs |j|jkSr r r otherrrr__lt__+sz RPMTransactionItemWrapper.__lt__cCs |j|jkSr rrrrr__eq__.sz RPMTransactionItemWrapper.__eq__cCs |jSr )r __hash__rrrrr1sz"RPMTransactionItemWrapper.__hash__cCsdS)NTr)r patternrrrmatch4szRPMTransactionItemWrapper.matchcCs|jduSr )r getRPMItemrrrr is_package7sz$RPMTransactionItemWrapper.is_packagecCs|jduSr r ZgetCompsGroupItemrrrris_group:sz"RPMTransactionItemWrapper.is_groupcCs|jduSr r ZgetCompsEnvironmentItemrrrris_environment=sz(RPMTransactionItemWrapper.is_environmentcCs |jSr rrrrr get_group@sz#RPMTransactionItemWrapper.get_groupcCs |jSr r!rrrrget_environmentCsz)RPMTransactionItemWrapper.get_environmentcCs|jSr )r rgetNamerrrrnameFszRPMTransactionItemWrapper.namecCs|jSr )r rZgetEpochrrrrepochJszRPMTransactionItemWrapper.epochcCs|jSr )r rZ getVersionrrrrversionNsz!RPMTransactionItemWrapper.versioncCs|jSr )r rZ getReleaserrrrreleaseRsz!RPMTransactionItemWrapper.releasecCs|jSr )r rZgetArchrrrrarchVszRPMTransactionItemWrapper.archcCs*|jrd|j|j|jSd|j|jS)Nz{}:{}-{}z{}-{})r'formatr(r)rrrrevrZszRPMTransactionItemWrapper.evrcCs|jSr )r rZgetNEVRArrrrnevra`szRPMTransactionItemWrapper.nevracCs |jSr )r Z getActionrrrractiondsz RPMTransactionItemWrapper.actioncCs|j|dSr )r Z setActionr valuerrrr.hscCs |jSr )r Z getReasonrrrrreasonlsz RPMTransactionItemWrapper.reasoncCs |j|Sr )r Z setReasonr/rrrr1pscCs&z |jWSty YdS0dSN)r Z getActionNameAttributeErrorrrrr action_namets  z%RPMTransactionItemWrapper.action_namecCs&z |jWSty YdS0dSr2)r ZgetActionShortr4rrrr action_short{s  z&RPMTransactionItemWrapper.action_shortcCs |jSr )r getStaterrrrstateszRPMTransactionItemWrapper.statecCs|j|dSr )r setStater/rrrr8scCs |jSr r Z getRepoidrrrr from_reposz#RPMTransactionItemWrapper.from_repocCs|jsdSd|jS)Nr3@r:rrrr ui_from_repos z&RPMTransactionItemWrapper.ui_from_repocCsdSr rrrrr obsoletingsz$RPMTransactionItemWrapper.obsoletingcCs|jj|Sr )r rpm get_reasonrrrrr@sz$RPMTransactionItemWrapper.get_reasoncCs|jjj|jSr )r r?Z _swdb_ti_pkgr rrrrpkgszRPMTransactionItemWrapper.pkgcCs|jjSr )rAfilesrrrrrBszRPMTransactionItemWrapper.filescCs|jSr )rArrrr_activesz!RPMTransactionItemWrapper._activeN)#__name__ __module__ __qualname__rrrrrrrr r"r#r$propertyr&r'r(r)r*r,r-r.setterr1r5r6r8r;r=r>r@rArBrCrrrrr "sj                   r c@seZdZdZdZddZeddZeddZedd Z ed d Z ed d Z eddZ eddZ eddZeddZeddZeddZeddZeddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*S)+TransactionWrapperFcCs ||_dSr )_transr transrrrrszTransactionWrapper.__init__cCs |jSr rJZgetIdrrrrtidszTransactionWrapper.tidcCs |jSr )rJZ getCmdlinerrrrcmdlineszTransactionWrapper.cmdlinecCs |jSr )rJZ getReleaseverrrrr releaseverszTransactionWrapper.releasevercCs |jSr )rJZ getDtBeginrrrr beg_timestampsz TransactionWrapper.beg_timestampcCs |jSr )rJZgetDtEndrrrr end_timestampsz TransactionWrapper.end_timestampcCs |jSr )rJgetRpmdbVersionBeginrrrrbeg_rpmdb_versionsz$TransactionWrapper.beg_rpmdb_versioncCs |jSr )rJgetRpmdbVersionEndrrrrend_rpmdb_versionsz$TransactionWrapper.end_rpmdb_versioncCst|jtjjkSr )intrJr7libdnf transactionTransactionItemState_DONErrrr return_codeszTransactionWrapper.return_codecCs |jSr )rJZ getUserIdrrrrloginuidszTransactionWrapper.loginuidcCs|jSr )packagesrrrrdataszTransactionWrapper.datacCs|j}t|Sr )rJgetConsoleOutputbool)r outputrrr is_outputs zTransactionWrapper.is_outputcCs |jSr )rJZ getCommentrrrrcommentszTransactionWrapper.commentcCs |jSr )rJZgetPersistencerrrr persistenceszTransactionWrapper.persistencecCs |jgSr rMrrrrtidsszTransactionWrapper.tidscCsgSr rrrrrperformed_withsz!TransactionWrapper.performed_withcsj}fdd|DS)Ncsg|]}t|qSr)r .0irrr z/TransactionWrapper.packages..)rJZgetItems)r resultrrrr]s zTransactionWrapper.packagescCsdd|jDS)NcSsg|] }|dqSrrrgrrrrjrkz-TransactionWrapper.output..rJr_rrrrraszTransactionWrapper.outputcCsgSr rrrrrerrorszTransactionWrapper.errorcCs|j|k|_dSr )rJrUaltered_gt_rpmdb)r Zrpmdbvrrrcompare_rpmdbvsz!TransactionWrapper.compare_rpmdbvN)rDrErFaltered_lt_rpmdbrprrGrNrOrPrQrRrTrVr[r\r^rbrcrdrerfr]rarorqrrrrrIsF             rIc@steZdZddZddZeddZddZed d Zed d Z ed dZ eddZ eddZ ddZ dS)MergedTransactionWrappercCstj|j|_dSr )rXrYZMergedTransactionrJrKrrrrsz!MergedTransactionWrapper.__init__cCs|j|jdSr )rJmergerKrrrrtszMergedTransactionWrapper.mergecCs |jSr )rJZ listUserIdsrrrrr\sz!MergedTransactionWrapper.loginuidcCs |jSr )rJZlistIdsrrrrreszMergedTransactionWrapper.tidscCsdd|jDS)NcSsg|]}t|tjjkqSr)rWrXrYrZrgrrrrj rkz8MergedTransactionWrapper.return_code..)rJZ listStatesrrrrr[sz$MergedTransactionWrapper.return_codecCs |jSr )rJZ listCmdlinesrrrrrO sz MergedTransactionWrapper.cmdlinecCs |jSr )rJZlistPersistencesrrrrrdsz$MergedTransactionWrapper.persistencecCs |jSr )rJZlistReleaseversrrrrrPsz#MergedTransactionWrapper.releasevercCs |jSr )rJZ listCommentsrrrrrcsz MergedTransactionWrapper.commentcCsdd|jDS)NcSsg|] }|dqSrmrrgrrrrjrkz3MergedTransactionWrapper.output..rnrrrrraszMergedTransactionWrapper.outputN)rDrErFrrtrGr\rer[rOrdrPrcrarrrrrss       rsc@seZdZd6ddZddZeddZedd Zed d Zed d Z eddZ ddZ ddZ eddZ ddZd7ddZd8ddZd d!Zd"d#Zd$d%Zd&d'Zddejjfd(d)Zd*d+Zd,d-Zd9d.d/Zd:d0d1Zd2d3Zd4d5ZdS); SwdbInterfacer3cCs8t||_d|_d|_d|_d|_d|_||_g|_dSr ) strrP_rpm_group_envZ _addon_datar _db_dir_output)r Zdb_dirrPrrrr!s zSwdbInterface.__init__cCs |dSr )closerrrr__del__-szSwdbInterface.__del__cCs|jdurt||_|jSr )rwrrrrrr?0s  zSwdbInterface.rpmcCs|jdurt||_|jSr )rxrrrrrgroup6s  zSwdbInterface.groupcCs|jdurt||_|jSr )ryrrrrrenv<s  zSwdbInterface.envcCstj|jtjjjSr )ospathjoinrzrXrYSwdbZdefaultDatabaseNamerrrrdbpathBszSwdbInterface.dbpathc Cs\|jsVztj|j|_Wn0tyJ}ztt|WYd}~n d}~00|j|jS)z Lazy initialize Swdb object N) r rXrYrr RuntimeErrorrrvinitTransaction)r exrrrrFs" zSwdbInterface.swdbcCstj||j}|dSr )rXrYZ Transformerr transform)r Z input_dirZ transformerrrrrSszSwdbInterface.transformcCsXz|`WntyYn0d|_d|_d|_|jrH|j|jd|_g|_dSr ) _tidr4rwrxryr ZcloseTransactionZ closeDatabaser{rrrrr|Ws   zSwdbInterface.closecCs |jSr )rZgetPathrrrrreszSwdbInterface.pathcCs |jSr )rZ resetDatabaserrrrreset_dbiszSwdbInterface.reset_dbTcCs|j}|sdSt|Sr )rZgetLastTransactionrI)r complete_transactions_onlytrrrlastms zSwdbInterface.lastNrFcspgddD|j}dd|D}rDfdd|D}t|D]>\}}|dkr^qL||d}|j|jkrLd|_d|_qL|dddS) NcSsg|] }t|qSr)rWrgrrrrjwrkz%SwdbInterface.old..cSsg|] }t|qSr)rIrgrrrrjyrkcsg|]}|jvr|qSr)rNrgrerrrj|rkrrT)rZlistTransactions enumeraterJrSrUrrrp)r relimitrrlrirLZ prev_transrrroldus  zSwdbInterface.oldcCst|jSr )rIrZ getCurrentrrrr get_currentszSwdbInterface.get_currentcCsB|j|}||}tjj}|j||||}|tjj |S)zSet reason for package) r?Z_pkg_to_swdb_rpm_itemreporXrYZ#TransactionItemAction_REASON_CHANGErZaddItemr9rZ)r rAr1rpm_itemZrepoidr.Ztirrr set_reasons   zSwdbInterface.set_reasoncCs|jt|S)zGet repository of package)rZ getRPMReporv)r rArrrrszSwdbInterface.repocCs*|jt|}|dur|St||}|S)zGet package data for packageN)rZgetRPMTransactionItemrvr )r rArlrrr package_datas  zSwdbInterface.package_datacCsrz|jWn Yn0|jtttt||p>dtt |}|j |j |j |||_|Sr2)rrZbeginTransactionrWcalendarZtimegmtimegmtimervrZ getloginuidZ setReleaseverrPZsetPersistencer)r Z rpmdb_versionZ using_pkgsZtsisrOrcrdrNrrrbegs  zSwdbInterface.begcCsN|j}||j||jp"d||j||j | |j |S)Nr) rZ createRPMItemsetNamer&ZsetEpochr'Z setVersionr(Z setReleaser)ZsetArchr*)r Zporrrrpkg_to_swdb_rpm_items     z"SwdbInterface.pkg_to_swdb_rpm_itemcCs@t|dsdS|sdS|D]}t|}|jd|fqdS)Nrr)hasattr splitlinesrr{append)r msglinerrrlog_scriptlet_outputs  z"SwdbInterface.log_scriptlet_outputcCst|dsdS|durDtjj}|jD]}|jtjjkr$tjj}qDq$|jD]\}}|j ||qJg|_|j t t t||dS)Nr)rrXrYZTransactionState_DONEr?r8ZTransactionItemState_ERRORZTransactionState_ERRORr{rZaddConsoleOutputLineZendTransactionrWrrv)r rVr[errorsZtsiZfile_descriptorrrrrends    zSwdbInterface.endcCs |j|S)z{ Search for history transactions which contain specified packages al. la. "yum list". Returns transaction ids. )rZsearchTransactionsByRPM)r patternsZ ignore_caserrrsearchszSwdbInterface.searchcCs8|j|j|jd}|tjjkr$dS|tjjkr4dSdS)z)Returns True if package is user installedrTF)rresolveRPMTransactionItemReasonr&r*rXrYTransactionItemReason_USERTransactionItemReason_UNKNOWN)r rAr1rrruser_installeds   zSwdbInterface.user_installedcCsF|r|j|j|j|}n|j|j|jd}|tjjkrBtjj}|S)a2Get reason of package before transaction being undone. If package is already installed in the system, keep his reason. :param pkg: package being installed :param first_trans: id of first transaction being undone :param rollback: True if transaction is performing a rollbackr)rrr&r*rXrYrr)r rAZ first_transZrollbackrlrrrget_erased_reasons  zSwdbInterface.get_erased_reason)r3)T)NrF)r3NN)T)rDrErFrr}rGr?r~rrrrr|rrrrrrrrrXrYZTransactionPersistence_UNKNOWNrrrrrrrrrrrrus@              ru)rrrZlibdnf.transactionrXZ libdnf.utilsZdnf.i18nrZdnf.yumrZdnf.exceptionsrr~rrrobjectr rIrsrurrrrs   Q&