diff options
author | Jeremy Katz <katzj@redhat.com> | 2005-05-23 20:27:35 +0000 |
---|---|---|
committer | Jeremy Katz <katzj@redhat.com> | 2005-05-23 20:27:35 +0000 |
commit | 6541b52699b6f95da920183f1edf01247c3b2640 (patch) | |
tree | f262956de6d3351e166f17c03965e9ba1b4026f1 | |
parent | 5f9a07f3e28bad1d770958e97cac45f8568a070a (diff) | |
download | anaconda-6541b52699b6f95da920183f1edf01247c3b2640.tar.gz anaconda-6541b52699b6f95da920183f1edf01247c3b2640.tar.xz anaconda-6541b52699b6f95da920183f1edf01247c3b2640.zip |
2005-05-23 Jeremy Katz <katzj@redhat.com>
* hdrlist.py (DependencyChecker.callback): Make the comments a
little clearer
* upgrade.py (upgradeFindPackages): Ensure we don't leave deps
stranded that we could have solved (#157754)
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | hdrlist.py | 7 | ||||
-rw-r--r-- | upgrade.py | 21 |
3 files changed, 29 insertions, 5 deletions
@@ -1,5 +1,11 @@ 2005-05-23 Jeremy Katz <katzj@redhat.com> + * hdrlist.py (DependencyChecker.callback): Make the comments a + little clearer + + * upgrade.py (upgradeFindPackages): Ensure we don't leave deps + stranded that we could have solved (#157754) + * iw/progress_gui.py (InstallProgressWindow_NEW.setPackage): Limit the length of the package installing string to try to avoid jumping (#157583) diff --git a/hdrlist.py b/hdrlist.py index b8a5486c4..5a7f0a44a 100644 --- a/hdrlist.py +++ b/hdrlist.py @@ -207,9 +207,10 @@ class DependencyChecker: self.how = how # FIXME: this is the simple stupid version. it doesn't actually handle - # paying attention to EVR. - def callback(self, ts, tag, name, evr, flags): - if tag == rpm.RPMTAG_REQUIRENAME: + # paying attention to EVR or conflicts + def callback(self, ts, sense, name, evr, flags): + # XXX just so we don't break if I'm wrong about what this passes + if sense in (rpm.RPMDEP_SENSE_REQUIRES, rpm.RPMTAG_REQUIRES): pkgnevra = depMatch(name, self.grpset.hdrlist) if pkgnevra and self.grpset.hdrlist.has_key(pkgnevra): hdr = self.grpset.hdrlist[pkgnevra] diff --git a/upgrade.py b/upgrade.py index f9f0a0299..511e98c17 100644 --- a/upgrade.py +++ b/upgrade.py @@ -761,8 +761,25 @@ def upgradeFindPackages(intf, method, id, instPath, dir): for p in id.grpset.hdrlist.pkgs.values(): if p.isSelected(): ts.addInstall(p.hdr, p.hdr, "u") - deps = ts.check(depcheck.callback) - for pkgnevra in deps: + + # now we need to do a depcheck. but adding a package could require + # rerunning the dep check due to things getting replaced (cf, #157754) + # we want to make sure we don't loop forever, though, so let's just + # put an arbitrary limit + runs = 5 + while runs > 0: + rerun = 0 + deps = ts.check(depcheck.callback) + for ((name, version, release), + (reqname, reqversion), + flg, suggest, sense) in deps: + if depcheck.callback(ts, sense, reqname, reqversion, flg) == -1: + rerun = 1 + runs -= 1 + if rerun == 0: + break + + for pkgnevra in depcheck.added: text = ("Upgrade Dependency: Needs %s, " "automatically added." % (pkgnevra,)) # log(text) |