[Piuparts-commits] [SCM] piuparts git repository branch, develop, updated. 0.49-135-g41bea98

Andreas Beckmann anbe at debian.org
Sun Mar 3 17:22:20 UTC 2013


The following commit has been merged in the develop branch:
commit 63b979b0b66061d20d860b87868d96678a275cfa
Author: Andreas Beckmann <debian at abeckmann.de>
Date:   Sun Mar 3 17:58:12 2013 +0100

    lib/db: lookup package state recursively
    
    for packages that do not exist in the current db try the
    dependency dbs before falling back to does-not-exist
    
    only recurse one level to avoid infinite loops
    
    Signed-off-by: Andreas Beckmann <debian at abeckmann.de>

diff --git a/debian/changelog b/debian/changelog
index d4e1387..ad90635 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -36,6 +36,7 @@ piuparts (0.50) UNRELEASED; urgency=low
     - Add Package.waiting_count() and friends, populated in calc_rrdep_count.
     - Optimize reserve() and skip unavailable candidates.
     - Add method: set_dependency_databases().
+    - Lookup missing packages, states, ... in the dependency_databases.
   * piuparts-master.py:
     - Sort packages to be tested by importance, i.e. descending waiting_count.
     - Use piuparts.conf global proxy setting as http_proxy.
diff --git a/piupartslib/packagesdb.py b/piupartslib/packagesdb.py
index ee28e4a..35d2b6e 100644
--- a/piupartslib/packagesdb.py
+++ b/piupartslib/packagesdb.py
@@ -632,7 +632,7 @@ class PackagesDB:
         else:
           return self._packages[package_name][header]
 
-    def get_package_state(self, package_name, resolve_virtual=True):
+    def get_package_state(self, package_name, resolve_virtual=True, recurse=True):
         if package_name in self._package_state:
             return self._package_state[package_name]
         if package_name in self._virtual_packages:
@@ -641,6 +641,11 @@ class PackagesDB:
                 return self._package_state[provider]
             else:
                 return "virtual"
+        if recurse:
+            for db in self._dependency_databases:
+                state = db.get_package_state(package_name, resolve_virtual=resolve_virtual, recurse=False)
+                if state != "does-not-exist":
+                    return state
         if package_name in ["ia32-libs-i386", "ia32-libs-gtk-i386"]:
             # HACK! these are arch=i386 packages needed on amd64
             return "essential-required"

-- 
piuparts git repository



More information about the Piuparts-commits mailing list