a ©!cŠ>ã @sHddlmZmZddlmZddlZddlmZmZddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZdZdZdZdZd Zd Zd Zd ZeeegZeeegZejjejj ejj!ejj"ejj#ejj$ejj%ejj&ejj'h Z(e )d ¡Z*dd„Z+Gdd„de,ƒZ-Gdd„de-ƒZ.Gdd„de-ƒZ/Gdd„de,ƒZ0dS)é)Úprint_functionÚabsolute_import)Úunicode_literalsN)Ú_Úucdé éé(é2é<éFéZédÚdnfcst‡fdd„ƒ}|S)zb Wrapper to return a deprecated action constant while printing a deprecation warning. cs2d|jjˆˆf}tj|tddttjˆƒ}|S)Nz1%s.%s is deprecated. Use dnf.callback.%s instead.é)Ú stacklevel)Ú __class__Ú__name__ÚwarningsÚwarnÚDeprecationWarningÚgetattrrÚcallback)ÚselfÚmsgÚvalue©Úname©ú4/usr/lib/python3.9/site-packages/dnf/yum/rpmtrans.pyÚ_funcCs  ÿ z%_add_deprecated_action.._func)Úproperty)rr rrrÚ_add_deprecated_action>sr"c@s˜eZdZdd„ZedƒZedƒZedƒZeZedƒZ edƒZ edƒZ ed ƒZ ed ƒZ ed ƒZed ƒZed ƒZdd„Zdd„Zdd„Zdd„Zdd„ZdS)ÚTransactionDisplaycCsdS©Nr©rrrrÚ__init__PszTransactionDisplay.__init__Ú PKG_CLEANUPÚ PKG_DOWNGRADEÚ PKG_REMOVEÚ PKG_INSTALLÚ PKG_OBSOLETEÚ PKG_REINSTALLÚ PKG_UPGRADEÚ PKG_VERIFYÚTRANS_PREPARATIONÚ PKG_SCRIPTLETÚ TRANS_POSTcCsdS)aReport ongoing progress on a transaction item. :api :param package: a package being processed :param action: the action being performed :param ti_done: number of processed bytes of the transaction item being processed :param ti_total: total number of bytes of the transaction item being processed :param ts_done: number of actions processed in the whole transaction :param ts_total: total number of actions in the whole transaction Nr)rÚpackageÚactionZti_doneZti_totalZts_doneZts_totalrrrÚprogressbszTransactionDisplay.progresscCsdS)z_Hook for reporting an rpm scriptlet output. :param msgs: the scriptlet output Nr©rÚmsgsrrrÚ scriptoutsszTransactionDisplay.scriptoutcCsdS)z:Report an error that occurred during the transaction. :apiNr©rÚmessagerrrÚerrorzszTransactionDisplay.errorcCsdS)z|package is the same as in progress() - a package object or simple string action is also the same as in progress()Nr)rr2r3rrrÚfilelog~szTransactionDisplay.filelogcCs| |tjjdd||¡dS)Nr)r4rÚ transactionr.)rÚpkgÚcountÚtotalrrrÚverify_tsi_package„sz%TransactionDisplay.verify_tsi_packageN)rÚ __module__Ú __qualname__r&r"r'r(r)Z PKG_ERASEr*r+r,r-r.r/r0r1r4r7r:r;r@rrrrr#Ms$r#cs eZdZdZ‡fdd„Z‡ZS)ÚErrorTransactionDisplayz@An RPMTransaction display that prints errors to standard output.cs&tt|ƒ |¡tj d|tj¡dS)NÚprint)ÚsuperrCr:rÚutilZ_terminal_messengerÚsysÚstderrr8©rrrr:szErrorTransactionDisplay.error)rrArBÚ__doc__r:Ú __classcell__rrrIrrC‰srCcs8eZdZdZ‡fdd„Zdd„Zdd„Zdd „Z‡ZS) ÚLoggingTransactionDisplayz@ Base class for a RPMTransaction display callback class cstt|ƒ ¡t d¡|_dS)Nzdnf.rpm)rErLr&ÚloggingÚ getLoggerÚ rpm_loggerr%rIrrr&–sz"LoggingTransactionDisplay.__init__cCs|j |¡dSr$)rOr:r8rrrr:šszLoggingTransactionDisplay.errorcCs.tjj|}d||f}|j tjj|¡dS)Nz%s: %s)rr<Z FILE_ACTIONSrOÚlogrMZSUBDEBUG)rr2r3Z action_strrrrrr;s  z!LoggingTransactionDisplay.filelogcCs|r|j t|ƒ¡dSr$)rOÚinforr5rrrr7¢sz#LoggingTransactionDisplay.scriptout) rrArBrJr&r:r;r7rKrrrIrrL’s  rLc@sàeZdZd9dd„Zd:dd„Zdd „Zd d „Zd d „Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8S);ÚRPMTransactionFrcCsn|s tƒg}||_||_||_d|_d|_d|_d|_d|_t ƒ|_ d|_ |  |j j¡g|_d|_d|_dS)NFr)rCÚdisplaysÚbaseÚtestÚ trans_runningÚfdÚ total_actionsÚtotal_installedÚcomplete_actionsÚsetÚinstalled_pkg_namesÚ total_removedÚ_setupOutputLoggingZconfÚ rpmverbosityÚ_te_listÚ _te_indexÚ _tsi_cache)rrTrUrSrrrr&¨s zRPMTransaction.__init__rQcCs~t ¡}||_t|jdƒ|_|jj |j¡ddddddœ  ||¡}d|  ¡}t t |ƒs^d }t   tt |ƒ¡t  |j¡dS) Nzw+bZcritZemergÚerrrQZwarning)ÚcriticalZ emergencyr:Z informationrZRPMLOG_Z RPMLOG_INFO)ÚtempfileZNamedTemporaryFileÚ _readpipeÚopenrÚ _writepiperTÚ_tsZ setScriptFdÚgetÚupperÚhasattrÚrpmÚ setVerbosityrÚ setLogFile)rr_Zio_rrrrr^½s"üü  z"RPMTransaction._setupOutputLoggingcCs8t tj¡t tj¡z|j ¡Wn Yn0dSr$)rmrnZ RPMLOG_NOTICErorGrHrhÚcloser%rrrÚ_shutdownOutputLoggingÎs   z%RPMTransaction._shutdownOutputLoggingcCsDz,|j |j ¡¡|j ¡}|s(WdS|WSty>Yn0dSr$)rfÚseekÚtellÚreadÚIOError)rÚoutrrrÚ _scriptOutput×s  zRPMTransaction._scriptOutputccs(| ¡}|r$| ¡D]}t|ƒVqdSr$)rwÚ splitlinesr)rÚmessagesÚlinerrrryçs zRPMTransaction.messagescCs0| ¡}|jD]}| |¡q|jj |¡dSr$)rwrSr7rTÚhistoryZlog_scriptlet_output)rr6ÚdisplayrrrÚ _scriptoutís  zRPMTransaction._scriptoutcCs | ¡dSr$)rqr%rrrÚ__del__ószRPMTransaction.__del__cCsœt|dƒr|}|gS|j|j}tj |¡}|jrJt|jdƒ|krJ|jSg}|jj D]&}|j t vrfqVt|ƒ|krV|  |¡qV|rŒ||_|St d|ƒ‚dS)z3Obtain the package related to the calling callback.r=rz%TransactionItem not found for key: %sN)rlr`rarrFZ _te_nevrarbÚstrrTr<r3ÚRPM_ACTIONS_SETÚappendÚ RuntimeError)rZcbkeyZtsiÚteZte_nevraÚitemsrrrÚ_extract_cbkeyös$       zRPMTransaction._extract_cbkeyc Csîz¦t|tƒrt|ƒ}|tjkr.| |¡nx|tjkr<nj|tjkrV| ||¡nP|tj krp|  ||¡n6|tj kr†|  |¡WS|tj krž| |¡n|tjkr´| |¡nò|tjkrÊ| |¡nÜ|tjkrä| |||¡nÂ|tjkrú| |¡n¬|tjkr| |¡n”|tjkr.| |||¡nx|tjkrF| |¡n`|tjkr^| |¡nH|tjkrz|  |||¡n,|tj!kr’| "|¡n|tj#kr¦| $¡Wn@t%yèt& '¡\}}}t( )|||¡} t* +d ,| ¡¡Yn0dS)NÚ)-Ú isinstancerrrmZRPMCALLBACK_TRANS_STARTÚ _transStartZRPMCALLBACK_TRANS_STOPZRPMCALLBACK_TRANS_PROGRESSÚ_trans_progressZRPMCALLBACK_ELEM_PROGRESSÚ _elemProgressZRPMCALLBACK_INST_OPEN_FILEÚ _instOpenFileZRPMCALLBACK_INST_CLOSE_FILEÚ_instCloseFileZRPMCALLBACK_INST_STARTÚ _inst_startZRPMCALLBACK_INST_STOPÚ _inst_stopZRPMCALLBACK_INST_PROGRESSÚ _instProgressZRPMCALLBACK_UNINST_STARTÚ _uninst_startZRPMCALLBACK_UNINST_STOPÚ _unInstStopZRPMCALLBACK_UNINST_PROGRESSÚ_uninst_progressZRPMCALLBACK_CPIO_ERRORÚ _cpioErrorZRPMCALLBACK_UNPACK_ERRORÚ _unpackErrorZRPMCALLBACK_SCRIPT_ERRORÚ _scriptErrorZRPMCALLBACK_SCRIPT_STARTÚ _script_startZRPMCALLBACK_SCRIPT_STOPÚ _scriptStopÚ ExceptionrGÚexc_infoÚ tracebackÚformat_exceptionÚloggerrdÚjoin) rZwhatÚamountr?ÚkeyZ client_dataÚexc_typeÚ exc_valueÚ exc_tracebackZ except_listrrrrsR                           zRPMTransaction.callbackcCs(||_|jrdSd|_t|jjƒ|_dS)NT)rXrUrVÚlistrTrir`)rr?rrrrˆ<s zRPMTransaction._transStartc Cs0tjj}|jD]}| d||d|dd¡qdS)Nr†é)rr<r/rSr4)rržr?r3r|rrrr‰Bs zRPMTransaction._trans_progresscCsL||_|jd7_|jsH| |¡}|jD]}| |dj|dj¡q*dS)Nr¤r)rarZrUr…rSr;r=r3)rrŸÚindexÚtransaction_listr|rrrrŠGs   zRPMTransaction._elemProgressc Cs¤d|_| |¡}|dj}| ¡}zt|ƒ|_WnBtyr}z*|jD]}| d||f¡qFWYd}~n6d}~00|j r–|j d7_ |j   |j ¡|j ¡SdS)NrzError: Cannot open file %s: %sr¤)Zlastmsgr…r=ZlocalPkgrgrWrurSr:rVrYr\ÚaddrÚfileno)rrŸr¦r=ZrpmlocÚer|rrrr‹Os   *zRPMTransaction._instOpenFilecCs|j ¡d|_dSr$)rWrp©rrŸrrrrŒ_s zRPMTransaction._instCloseFilecCsdSr$rrªrrrrcszRPMTransaction._inst_startc CsP|js |jsdS| ¡|j|jkrLtjj}|jD]}|  d|dddd¡q2dSr$) rUrVr}rZrXrr<r1rSr4)rrŸr3r|rrrrŽfs   zRPMTransaction._inst_stopc CsF| |¡}|dj}|dj}|jD]}| |||||j|j¡q$dS©Nr©r…r=r3rSr4rZrX©rržr?rŸr¦r=r3r|rrrrrs     zRPMTransaction._instProgresscCs|jd7_dS)Nr¤)r]rªrrrryszRPMTransaction._uninst_startc CsF| |¡}|dj}|dj}|jD]}| |||||j|j¡q$dSr«r¬r­rrrr’|s     zRPMTransaction._uninst_progresscCs|jr dS| ¡dSr$)rUr}rªrrrr‘ƒszRPMTransaction._unInstStopcCs2| |¡}d|dj}|jD]}| |¡qdS)Nz'Error in cpio payload of rpm package %sr©r…r=rSr:©rrŸr¦rr|rrrr“‰s  zRPMTransaction._cpioErrorcCs2| |¡}d|dj}|jD]}| |¡qdS)NzError unpacking rpm package %srr®r¯rrrr”s  zRPMTransaction._unpackErrorc CsJtj |d¡}| |¡}|djj}d||f}|jD]}| |¡q6dS)Nz rz'Error in %s scriptlet in rpm package %s)rmZtagnamesrjr…r=rrSr:) rržr?rŸZscriptlet_namer¦rrr|rrrr••s     zRPMTransaction._scriptErrorc Cs”tjj}|dur |jgkr d}n| |¡}|dj}|jdkrN|jdkrN|jnd}|jdkrl|jdkrl|jnd}|jD]}|  ||dd||¡qvdS)NÚNonerr¤r) rr<r0r`r…r=rXrZrSr4)rrŸr3r=r¦Zcompleter?r|rrrr–¢s  ÿ zRPMTransaction._script_startcCs | ¡dSr$)r}r%rrrr—°szRPMTransaction._scriptStopcCs|jD]}| |||¡qdSr$)rSr@)rr=r>r?r|rrrr@³s z!RPMTransaction.verify_tsi_packageN)Fr)rQ)rrArBr&r^rqrwryr}r~r…rrˆr‰rŠr‹rŒrrŽrrr’r‘r“r”r•r–r—r@rrrrrR§s4   .  rR)1Z __future__rrrZlibdnf.transactionZlibdnfZdnf.i18nrrZ dnf.callbackrZdnf.transactionZdnf.utilrmÚosrMrGreršrZ TS_UPDATEZ TS_INSTALLZTS_ERASEZ TS_OBSOLETEDZ TS_OBSOLETINGZ TS_AVAILABLEZ TS_UPDATEDZ TS_FAILEDZTS_INSTALL_STATESZTS_REMOVE_STATESr<ZTransactionItemAction_INSTALLZTransactionItemAction_DOWNGRADEZ TransactionItemAction_DOWNGRADEDZTransactionItemAction_OBSOLETEZTransactionItemAction_OBSOLETEDZTransactionItemAction_UPGRADEZTransactionItemAction_UPGRADEDZTransactionItemAction_REMOVEZ!TransactionItemAction_REINSTALLEDr€rNrœr"Úobjectr#rCrLrRrrrrÚsN   ø <