seth vidal wrote: > On Thu, 2008-04-24 at 17:15 +0200, Anders Blomdell wrote: >> seth vidal wrote: >>> On Thu, 2008-04-24 at 11:44 +0200, Anders Blomdell wrote: >>> >>>> OK, found it. Kind of shared error, fix is: >>>> >>>> --- __init__.py~ 2007-12-05 23:27:40.000000000 +0100 >>>> +++ __init__.py 2008-04-24 11:40:59.000000000 +0200 >>>> @@ -589,7 +589,7 @@ >>>> self.plugins.run('pretrans') >>>> >>>> errors = self.ts.run(cb.callback, '') >>>> - if errors: >>>> + if errors != None: >>>> raise Errors.YumBaseError, errors >>>> >>>> if not self.conf.keepcache: >>> Ah, what version of yum are you using? >>> >>> B/c the above is already fixed in HEAD and in the version released in >>> fedora rawhide. >> OK, found it in the git repository: >> >> errors = self.ts.run(cb.callback, '') >> # ts.run() exit codes are, hmm, "creative": None means all ok, empty >> # list means some errors happened in the transaction and non-empty >> # list that there were errors preventing the ts from starting... >> if errors is None: >> pass >> elif len(errors) == 0: >> errstring = _('Warning: scriptlet or other non-fatal errors occurred >> during transaction.') >> self.verbose_logger.debug(errstring) >> else: >> raise Errors.YumBaseError, errors >> >> Why doesn't 'len(errors) == 0' case not raise an exception? > > b/c an empty list means there were scriptlet errors (%post, %pre, etc) > and raising an exception there will break anaconda, as was discovered > last week. Understood, any reason against me trying to get rpm modified with something like: --- rpm-4.4.2.2/python/rpmts-py.c~ 2008-04-25 12:29:50.000000000 +0200 +++ rpm-4.4.2.2/python/rpmts-py.c 2008-04-25 12:37:02.000000000 +0200 @@ -1199,6 +1199,7 @@ if (_rpmts_debug) fprintf(stderr, "*** rpmts_Run(%p) ts %p ignore %x\n", s, s->ts, s->ignoreSet); + errno = 0; rc = rpmtsRun(s->ts, NULL, s->ignoreSet); ps = rpmtsProblems(s->ts); @@ -1214,6 +1215,10 @@ if (rc < 0) { list = PyList_New(0); + if ((rc != -1) || (errno != 0)) { + PyList_Append(list, + Py_BuildValue("s(ii)", "system error", rc, errno)); + } return list; } else if (!rc) { Py_INCREF(Py_None); I.e. Fill the return list with a possible system error (script errors seem to leave errno set to 0, and in that case behaviour is unchanged). Thanks for your patience. /Anders -- Anders Blomdell Email: anders.blomdell@xxxxxxxxxxxxxx Department of Automatic Control Lund University Phone: +46 46 222 4625 P.O. Box 118 Fax: +46 46 138118 SE-221 00 Lund, Sweden _______________________________________________ Yum mailing list Yum@xxxxxxxxxxxxxxxxxxxx https://lists.dulug.duke.edu/mailman/listinfo/yum