eaiovnaovbqoebvqoeavibavo 3 ft`> @sHddlmZmZddlmZddlZddlmZmZddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZdZdZdZdZd Zd Zd Zd ZeeegZeeegZejjejj ejj!ejj"ejj#ejj$ejj%ejj&ejj'h Z(ej)d Z*ddZ+Gddde,Z-Gddde-Z.Gddde-Z/Gddde,Z0dS))print_functionabsolute_import)unicode_literalsN)_ucd (2<FZddnfcstfdd}|S)zb Wrapper to return a deprecated action constant while printing a deprecation warning. cs2d|jjf}tj|tddttj}|S)Nz1%s.%s is deprecated. Use dnf.callback.%s instead.) stacklevel) __class____name__warningswarnDeprecationWarninggetattrrcallback)selfmsgvalue)name/usr/lib/python3.6/rpmtrans.py_funcCs  z%_add_deprecated_action.._func)property)rrr)rr_add_deprecated_action>sr!c@seZdZddZedZedZedZeZedZ edZ edZ ed Z ed Z ed Zed Zed ZddZddZddZddZddZdS)TransactionDisplaycCsdS)Nr)rrrr__init__PszTransactionDisplay.__init__ PKG_CLEANUP PKG_DOWNGRADE PKG_REMOVE PKG_INSTALL PKG_OBSOLETE PKG_REINSTALL PKG_UPGRADE PKG_VERIFYTRANS_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)rpackageactionZti_doneZti_totalZts_doneZts_totalrrrprogressbszTransactionDisplay.progresscCsdS)z_Hook for reporting an rpm scriptlet output. :param msgs: the scriptlet output Nr)rmsgsrrr scriptoutsszTransactionDisplay.scriptoutcCsdS)z:Report an error that occurred during the transaction. :apiNr)rmessagerrrerrorzszTransactionDisplay.errorcCsdS)z|package is the same as in progress() - a package object or simple string action is also the same as in progress()Nr)rr/r0rrrfilelog~szTransactionDisplay.filelogcCs|j|tjjdd||dS)Nr)r1r transactionr+)rpkgcounttotalrrrverify_tsi_packagesz%TransactionDisplay.verify_tsi_packageN)r __module__ __qualname__r#r!r$r%r&Z PKG_ERASEr'r(r)r*r+r,r-r.r1r3r5r6r;rrrrr"Ms$r"cs eZdZdZfddZZS)ErrorTransactionDisplayz@An RPMTransaction display that prints errors to standard output.cs&tt|j|tjjd|tjdS)Nprint)superr>r5rutilZ_terminal_messengersysstderr)rr4)rrrr5szErrorTransactionDisplay.error)rr<r=__doc__r5 __classcell__rr)rrr>sr>cs8eZdZdZfddZddZddZdd ZZS) LoggingTransactionDisplayz@ Base class for a RPMTransaction display callback class cstt|jtjd|_dS)Nzdnf.rpm)r@rFr#logging getLogger rpm_logger)r)rrrr#sz"LoggingTransactionDisplay.__init__cCs|jj|dS)N)rIr5)rr4rrrr5szLoggingTransactionDisplay.errorcCs.tjj|}d||f}|jjtjj|dS)Nz%s: %s)rr7Z FILE_ACTIONSrIlogrGZSUBDEBUG)rr/r0Z action_strrrrrr6s  z!LoggingTransactionDisplay.filelogcCs|r|jjt|dS)N)rIinfor)rr2rrrr3sz#LoggingTransactionDisplay.scriptout) rr<r=rDr#r5r6r3rErr)rrrFs  rFc@seZdZdffddZd8ddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7S)9RPMTransactionFcCsn|s tg}||_||_||_d|_d|_d|_d|_d|_t |_ d|_ |j |j jg|_d|_d|_dS)NFr)r>displaysbasetest trans_runningfd total_actionstotal_installedcomplete_actionssetinstalled_pkg_names total_removed_setupOutputLoggingZconf rpmverbosity_te_list _te_index _tsi_cache)rrNrOrMrrrr#s zRPMTransaction.__init__rKcCs~tj}||_t|jd|_|jjj|jddddddj ||}d|j }t t |s^d }t j tt |t j|jdS) Nzw+bZcritZemergerrrKZwarning)criticalZ emergencyr5Z informationrZRPMLOG_Z RPMLOG_INFO)tempfileZNamedTemporaryFile _readpipeopenr _writepiperN_tsZ setScriptFdgetupperhasattrrpm setVerbosityr setLogFile)rrYZio_rrrrrXs  z"RPMTransaction._setupOutputLoggingc Cs8tjtjtjtjy|jjWn YnXdS)N)rgrhZ RPMLOG_NOTICErirBrCrbclose)rrrr_shutdownOutputLoggings   z%RPMTransaction._shutdownOutputLoggingc CsBy(|jj|jj|jj}|s&dS|Stk r<YnXdS)N)r`seektellreadIOError)routrrr _scriptOutputs zRPMTransaction._scriptOutputccs,|j}|r(x|jD]}t|VqWdS)N)rq splitlinesr)rmessageslinerrrrsszRPMTransaction.messagescCs4|j}x|jD]}|j|qW|jjj|dS)N)rqrMr3rNhistoryZlog_scriptlet_output)rr2displayrrr _scriptouts zRPMTransaction._scriptoutcCs |jdS)N)rk)rrrr__del__szRPMTransaction.__del__cCst|dr|}|gS|j|j}tjj|}|jrJt|jd|krJ|jSg}x2|jj D]&}|j t krhqXt||krX|j |qXW|r||_|St d|dS)z3Obtain the package related to the calling callback.r8rz%TransactionItem not found for key: %sN)rfrZr[rrAZ _te_nevrar\strrNr7r0RPM_ACTIONS_SETappend RuntimeError)rZcbkeyZtsiZteZte_nevraitemsrrr_extract_cbkeys$     zRPMTransaction._extract_cbkeyc Csyt|trt|}|tjkr.|j|nv|tjkr<nh|tjkrV|j||nN|tj krp|j ||n4|tj kr|j |S|tj kr|j|n|tjkr|j|n|tjkr|j|n|tjkr|j|||n|tjkr|j|n|tjkr|j|n|tjkr,|j|||nx|tjkrD|j|n`|tjkr\|j|nH|tjkrx|j |||n,|tj!kr|j"|n|tj#kr|j$WnBt%k rt&j'\}}}t(j)|||} t*j+dj,| YnXdS)N)- isinstanceryrrgZRPMCALLBACK_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 ExceptionrBexc_info tracebackformat_exceptionloggerr^join) rZwhatamountr:keyZ client_dataexc_type exc_value exc_tracebackZ except_listrrrrsR                           zRPMTransaction.callbackcCs(||_|jrdSd|_t|jj|_dS)NT)rRrOrPlistrNrcrZ)rr:rrrr<s zRPMTransaction._transStartcCs4tjj}x&|jD]}|jd||d|ddqWdS)Nr)rr7r,rMr1)rrr:r0rvrrrrBs zRPMTransaction._trans_progresscCsP||_|jd7_|jsL|j|}x&|jD]}|j|dj|djq,WdS)Nrr)r[rTrOr~rMr6r8r0)rrindextransaction_listrvrrrrGs   zRPMTransaction._elemProgresscCsd|_|j|}|dj}|j}yt||_WnDtk rt}z(x |jD]}|jd||fqJWWYdd}~Xn.X|j r|j d7_ |j j |j |jjSdS)NrzError: Cannot open file %s: %sr)Zlastmsgr~r8ZlocalPkgrarQrorMr5rPrSrVaddrfileno)rrrr8ZrpmlocervrrrrOs   (zRPMTransaction._instOpenFilecCs|jjd|_dS)N)rQrj)rrrrrr_s zRPMTransaction._instCloseFilecCsdS)Nr)rrrrrrcszRPMTransaction._inst_startcCsV|js|j rdS|j|j|jkrRtjj}x"|jD]}|j d|ddddq6WdS)N) rOrPrwrTrRrr7r.rMr1)rrr0rvrrrrfs  zRPMTransaction._inst_stopcCsJ|j|}|dj}|dj}x&|jD]}|j|||||j|jq&WdS)Nr)r~r8r0rMr1rTrR)rrr:rrr8r0rvrrrrrs     zRPMTransaction._instProgresscCs|jd7_dS)Nr)rW)rrrrrryszRPMTransaction._uninst_startcCsJ|j|}|dj}|dj}x&|jD]}|j|||||j|jq&WdS)Nr)r~r8r0rMr1rTrR)rrr:rrr8r0rvrrrr|s     zRPMTransaction._uninst_progresscCs|jr dS|jdS)N)rOrw)rrrrrrszRPMTransaction._unInstStopcCs6|j|}d|dj}x|jD]}|j|q WdS)Nz'Error in cpio payload of rpm package %sr)r~r8rMr5)rrrrrvrrrrs  zRPMTransaction._cpioErrorcCs6|j|}d|dj}x|jD]}|j|q WdS)NzError unpacking rpm package %sr)r~r8rMr5)rrrrrvrrrrs  zRPMTransaction._unpackErrorc CsNtjj|d}|j|}|djj}d||f}x|jD]}|j|q8WdS)Nz rz'Error in %s scriptlet in rpm package %s)rgZtagnamesrdr~r8rrMr5) rrr:rZscriptlet_namerrrrvrrrrs     zRPMTransaction._scriptErrorcCstjj}|dkr |jgkr d}n|j|}|dj}|jdkrN|jdkrN|jnd}|jdkrl|jdkrl|jnd}x"|jD]}|j ||dd||qxWdS)NNonerrr) rr7r-rZr~r8rRrTrMr1)rrr0r8rZcompleter:rvrrrrs   zRPMTransaction._script_startcCs |jdS)N)rw)rrrrrszRPMTransaction._scriptStopcCs"x|jD]}|j|||qWdS)N)rMr;)rr8r9r:rvrrrr;s z!RPMTransaction.verify_tsi_packageN)rK)rr<r=r#rXrkrqrsrwrxr~rrrrrrrrrrrrrrrrrr;rrrrrLs4  .  rL)1Z __future__rrrZlibdnf.transactionZlibdnfZdnf.i18nrrZ dnf.callbackrZdnf.transactionZdnf.utilrgosrGrBr_rrZ TS_UPDATEZ TS_INSTALLZTS_ERASEZ TS_OBSOLETEDZ TS_OBSOLETINGZ TS_AVAILABLEZ TS_UPDATEDZ TS_FAILEDZTS_INSTALL_STATESZTS_REMOVE_STATESr7ZTransactionItemAction_INSTALLZTransactionItemAction_DOWNGRADEZ TransactionItemAction_DOWNGRADEDZTransactionItemAction_OBSOLETEZTransactionItemAction_OBSOLETEDZTransactionItemAction_UPGRADEZTransactionItemAction_UPGRADEDZTransactionItemAction_REMOVEZ!TransactionItemAction_REINSTALLEDrzrHrr!objectr"r>rFrLrrrrsL     <