[Piuparts-commits] [SCM] piuparts git repository branch, bikeshed, updated. 0.53-17-g6cee1ba

Holger Levsen holger at layer-acht.org
Sun Jul 7 11:41:41 UTC 2013


The following commit has been merged in the bikeshed branch:
commit 26aa858ad2bf4f627b0b6c77509f51d0422799e2
Author: David Steele <dsteele at gmail.com>
Date:   Sun Apr 7 23:20:20 2013 -0400

    packagesdb.py - Use get_package() in get_rdep_dict() to resolve virtual pkgs.
    
    Along with some associated cleanup.

diff --git a/debian/changelog b/debian/changelog
index 18832ee..f044be4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -45,6 +45,10 @@ piuparts (0.53) unstable; urgency=low
   * Update python Requires to 2.7 (for argparse)
   * Edit piuparts_slave_* man pages for more information and format.
   * Specify the manpage doctype for AsciiDoc man sources.
+  * pupartslib/packagesdb.py
+    - The dependency calculation for rdeps is reworked to match that used
+      elsewhere, to allow package reserve() to drive waiting-for-dep to
+      drive to 0 more quickly.
 
   [ Holger Levsen ]
   * piuparts.1.txt, README.txt and README_pejacevic.txt: proof-read and
diff --git a/piupartslib/packagesdb.py b/piupartslib/packagesdb.py
index c2f1fa6..6622bed 100644
--- a/piupartslib/packagesdb.py
+++ b/piupartslib/packagesdb.py
@@ -763,16 +763,21 @@ class PackagesDB:
         """Return dict of one-level reverse dependencies by package"""
 
         if self._rdeps is None:
-            self._find_all_packages()       # populate _packages
 
             self._rdeps = {}
-            for pkg_name in self._packages.keys():
-                # use the Packages dependencies() method for a conservative count
-                for dep in self._packages[pkg_name].dependencies():
-                    if dep in self._rdeps:
-                        self._rdeps[dep].append( pkg_name )
-                    else:
-                        self._rdeps[dep] = [pkg_name]
+
+            for pkg in self.get_all_package_names():
+                pkg_obj = self.get_package(pkg)
+
+                for dep in pkg_obj.dependencies():
+                    dep_pkg = self.get_package(dep, resolve_virtual=True)
+
+                    if dep_pkg is not None:
+                        dep = dep_pkg["Package"]
+
+                    if not dep in self._rdeps:
+                        self._rdeps[dep] = set()
+                    self._rdeps[dep].add(pkg)
 
         return( self._rdeps )
 

-- 
piuparts git repository



More information about the Piuparts-commits mailing list