summaryrefslogtreecommitdiffstats
path: root/upgrade.py
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2005-05-23 20:27:35 +0000
committerJeremy Katz <katzj@redhat.com>2005-05-23 20:27:35 +0000
commit6541b52699b6f95da920183f1edf01247c3b2640 (patch)
treef262956de6d3351e166f17c03965e9ba1b4026f1 /upgrade.py
parent5f9a07f3e28bad1d770958e97cac45f8568a070a (diff)
downloadanaconda-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)
Diffstat (limited to 'upgrade.py')
-rw-r--r--upgrade.py21
1 files changed, 19 insertions, 2 deletions
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)