From cdcac591276e2164aa34adc9e7982b48019d3c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20=C3=96zkural?= Date: Fri, 12 Aug 2005 20:23:29 +0000 Subject: [PATCH] * fix: construct dependency graph correctly in upgrade operation - we add to dep graph if: a. it is in the repository and b. if it's already installed, an older version is installed - caveat: we're using release for now. - help me: I'm dying! --- pisi/toplevel.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pisi/toplevel.py b/pisi/toplevel.py index e8bd96a9..d5aa9cf5 100644 --- a/pisi/toplevel.py +++ b/pisi/toplevel.py @@ -147,6 +147,7 @@ def install_pkg_names(A): def upgrade(A): upgrade_pkg_names(A) + def upgrade_pkg_names(A): """Re-installs packages from the repository, trying to perform a maximum number of upgrades.""" @@ -174,6 +175,8 @@ def upgrade_pkg_names(A): if len(A)==0: ui.info('No packages to upgrade.\n') return True + + ui.debug('A = %s\n' % str(A)) # try to construct a pisi graph of packages to # install / reinstall @@ -182,7 +185,6 @@ def upgrade_pkg_names(A): # find the "install closure" graph of G_f by package # set A using packagedb - print A for x in A: G_f.add_package(x) B = A @@ -195,7 +197,14 @@ def upgrade_pkg_names(A): for dep in pkg.runtimeDeps: print 'checking ', dep # add packages that can be upgraded - if not dependency.repoSatisfiesDep(dep): + if dependency.repoSatisfiesDep(dep): + if installdb.is_installed(dep.package): + #FIXME: use build no + (v,r) = installdb.get_version(dep.package) + rep_pkg = packagedb.get_package(dep.package) + (vp,rp) = (rep_pkg.version, rep_pkg.release) + if r >= rp: # installed already older + continue if not dep.package in G_f.vertices(): Bp.add(str(dep.package)) G_f.add_dep(x, dep)