[Yum-devel] [PATCH] Make transaction scriptFd setting less voodooish
Panu Matilainen
pmatilai at laiskiainen.org
Wed Feb 9 14:25:58 UTC 2011
In older rpm versions ts.scriptFd is an invisible write-only
pseudo-attribute hack, so __getattr__() tricks in the transaction wrapper
wont work for it. Add a new wrapper method for setting it to make it
less gruesome, accept any file-like object as the fd argument.
---
rpmUtils/transaction.py | 3 +++
yum/rpmtrans.py | 3 +--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/rpmUtils/transaction.py b/rpmUtils/transaction.py
index 704e8f9..b96a9d6 100644
--- a/rpmUtils/transaction.py
+++ b/rpmUtils/transaction.py
@@ -87,6 +87,9 @@ class TransactionWrapper:
def isTsFlagSet(self, flag):
val = self.getTsFlags()
return bool(flag & val)
+
+ def setScriptFd(self, fd):
+ self.ts.scriptFd = fd.fileno()
# def addProblemFilter(self, filt):
# curfilter = self.ts.setProbFilter(0)
diff --git a/yum/rpmtrans.py b/yum/rpmtrans.py
index 0340153..d479829 100644
--- a/yum/rpmtrans.py
+++ b/yum/rpmtrans.py
@@ -209,8 +209,7 @@ class RPMTransaction:
io_r = tempfile.NamedTemporaryFile()
self._readpipe = io_r
self._writepipe = open(io_r.name, 'w+b')
- # This is dark magic, it really needs to be "base.ts.ts".
- self.base.ts.ts.scriptFd = self._writepipe.fileno()
+ self.base.ts.setScriptFd(self._writepipe)
rpmverbosity = {'critical' : 'crit',
'emergency' : 'emerg',
'error' : 'err',
--
1.7.4
More information about the Yum-devel
mailing list