dnf/0004-transaction-Add-RPMCALLBACK_INST_STARTSTOP-callback-handlers.patch

74 lines
2.9 KiB
Diff

From f7f30977df77032c1b97d86d5df9e9c907f3a7e3 Mon Sep 17 00:00:00 2001
From: Daniel Mach <dmach@redhat.com>
Date: Wed, 5 Jun 2019 21:10:05 +0200
Subject: [PATCH] [transaction] Add RPMCALLBACK_INST_{START,STOP} callback handlers.
---
dnf/yum/rpmtrans.py | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/dnf/yum/rpmtrans.py b/dnf/yum/rpmtrans.py
index 50d8b81..0834a8c 100644
--- a/dnf/yum/rpmtrans.py
+++ b/dnf/yum/rpmtrans.py
@@ -262,6 +262,10 @@ class RPMTransaction(object):
return self._instOpenFile(key)
elif what == rpm.RPMCALLBACK_INST_CLOSE_FILE:
self._instCloseFile(key)
+ elif what == rpm.RPMCALLBACK_INST_START:
+ self._inst_start(key)
+ elif what == rpm.RPMCALLBACK_INST_STOP:
+ self._inst_stop(key)
elif what == rpm.RPMCALLBACK_INST_PROGRESS:
self._instProgress(amount, total, key)
elif what == rpm.RPMCALLBACK_UNINST_START:
@@ -321,12 +325,17 @@ class RPMTransaction(object):
return self.fd.fileno()
def _instCloseFile(self, key):
- transaction_list = self._extract_cbkey(key)
self.fd.close()
self.fd = None
+ def _inst_start(self, key):
+ pass
+
+ def _inst_stop(self, key):
if self.test or not self.trans_running:
return
+
+ transaction_list = self._extract_cbkey(key)
for tsi in transaction_list:
if tsi.state == libdnf.transaction.TransactionItemState_UNKNOWN:
tsi.state = libdnf.transaction.TransactionItemState_DONE
@@ -376,6 +385,10 @@ class RPMTransaction(object):
def _cpioError(self, key):
transaction_list = self._extract_cbkey(key)
+ for tsi in transaction_list:
+ if tsi.state == libdnf.transaction.TransactionItemState_UNKNOWN:
+ tsi.state = libdnf.transaction.TransactionItemState_ERROR
+ break
msg = "Error in cpio payload of rpm package %s" % transaction_list[0].pkg
for display in self.displays:
display.error(msg)
@@ -386,11 +399,11 @@ class RPMTransaction(object):
msg = "Error unpacking rpm package %s" % tsi.pkg
for display in self.displays:
display.error(msg)
- for tsi1 in transaction_list:
- if tsi1.state == libdnf.transaction.TransactionItemState_UNKNOWN:
- tsi1.state = libdnf.transaction.TransactionItemState_ERROR
+
+ for tsi in transaction_list:
+ if tsi.state == libdnf.transaction.TransactionItemState_UNKNOWN:
+ tsi.state = libdnf.transaction.TransactionItemState_ERROR
return
- tsi.state = libdnf.transaction.TransactionItemState_ERROR
def _scriptError(self, amount, total, key):
# "amount" carries the failed scriptlet tag,
--
libgit2 0.27.8