From 7b4f83d545987d29f63fad3b7c8a0567c6d8b3d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20=C3=96zkural?= Date: Tue, 9 Aug 2005 14:43:14 +0000 Subject: [PATCH] * bu dependency'deki bir parametre karisikligini giderip, bir iki isim duzenlemesi yapiyor ve yeni bir dependency kontrol daha ekliyor - installed: sistemdeki bir paket satisfy ediyor mu? - repo: repo'daki herhangi bir paket ediyor mu? - upgradable: su anda install edilmis package, upgrade edilebiliyor mu? * hala bir karisiklik var grrrr --- pisi/dependency.py | 52 ++++++++++++++++++++++++++++++---------------- pisi/toplevel.py | 14 ++++++------- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/pisi/dependency.py b/pisi/dependency.py index 2c0ef75b..111c8f5a 100644 --- a/pisi/dependency.py +++ b/pisi/dependency.py @@ -74,37 +74,53 @@ class DepInfo: s += 'rel <= ' + self.releaseTo return s -def upgradableDep(pkg_name, depinfo): - """determine if package in *repository* satisfies given dependency spec in installdb""" - if not installdb.is_installed(depinfo.package): - return False - else: - pkg = packagedb.get_package(pkg_name) - (version, release) = (pkg.version, pkg.release) - return depinfo.satisfies(pkg_name, version, release) - -def satisfiesDep(pkg_name, depinfo): - """determine if an *already installed* package can be upgraded given dependency spec in installdb""" - if not installdb.is_installed(depinfo.package): +def installedSatisfiesDep(depinfo): + """determine if a package in *repository* satisfies given +dependency spec""" + pkg_name = depinfo.package + if not installdb.is_installed(pkg_name): return False else: pkg = packagedb.inst_packagedb.get_package(pkg_name) (version, release) = (pkg.version, pkg.release) return depinfo.satisfies(pkg_name, version, release) -def satisfiesDeps(pkg, deps): +def repoSatisfiesDep(depinfo): + """determine if a package in *repository* satisfies given +dependency spec""" + pkg_name = depinfo.package + if not packagedb.has_package(pkg_name): + return False + else: + pkg = packagedb.get_package(pkg_name) + (version, release) = (pkg.version, pkg.release) + return depinfo.satisfies(pkg_name, version, release) + +def upgradableDep(depinfo): + """determine if an *already installed* package can be upgraded given dependency spec in installdb""" + if not installdb.is_installed(depinfo.package): + return False + else: + pkg = packagedb.get_package(pkg_name) + (version, release) = (pkg.version, pkg.release) + return depinfo.satisfies(pkg_name, version, release) +## pkg_name = depinfo.package +## pkg = packagedb.inst_packagedb.get_package(pkg_name) +## (version, release) = (pkg.version, pkg.release) +## pkg_then = packagedb.get_package(pkg_name) +## (version_then, release_then) = (pkg_then.version, pkg_then.release) +## return depinfo.upgradable(pkg_name, release, release_then) + +def satisfiesDeps(pkg, deps, sat = installedSatisfiesDep): for dep in deps: - if not satisfiesDep(pkg, dep): + if not sat(dep): ui.error('Package %s does not satisfy dependency %s\n' % (pkg,dep)) return False return True -def runtimeDeps(pkg): - return packagedb.get_package(pkg).runtimeDeps - def satisfiesRuntimeDeps(pkg): - deps = runtimeDeps(pkg) + deps = packagedb.get_package(pkg).runtimeDeps return satisfiesDeps(pkg, deps) def installable(pkg): diff --git a/pisi/toplevel.py b/pisi/toplevel.py index d44e1f13..e286a6e3 100644 --- a/pisi/toplevel.py +++ b/pisi/toplevel.py @@ -47,9 +47,9 @@ def install(packages): ui.error("PackageDBError: (%s)\n" % e) ui.error("Package is not installable.\n") - except Exception, e: - print e - ui.error("Error: %s\n" % e) + #except Exception, e: + # print e + # ui.error("Error: %s\n" % e) def install_pkg_files(packages): @@ -117,8 +117,8 @@ def install_pkg_names(A): print pkg for dep in pkg.runtimeDeps: print 'checking ', dep - # we don't deal with satisfied dependencies - if not dependency.satisfiesDep(x, dep): + # we don't deal with already *satisfied* dependencies + if not dependency.installedSatisfiesDep(dep): if not dep.package in G_f.vertices(): Bp.add(str(dep.package)) G_f.add_dep(x, dep) @@ -184,7 +184,7 @@ def upgrade_pkg_names(A): for dep in pkg.runtimeDeps: print 'checking ', dep # add packages that can be upgraded - if not dependency.upgradableDep(x, dep): + if not dependency.upgradableDep(dep): if not dep.package in G_f.vertices(): Bp.add(str(dep.package)) G_f.add_dep(x, dep) @@ -235,7 +235,7 @@ def remove(A): for (rev_dep, depinfo) in rev_deps: print 'checking ', rev_dep # we don't deal with unsatisfied dependencies - if dependency.satisfiesDep(rev_dep, depinfo): + if dependency.installedSatisfiesDep(depinfo): if not rev_dep in G_f.vertices(): Bp.add(rev_dep) G_f.add_plain_dep(rev_dep, x)