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 _______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel