[Piuparts-commits] [SCM] piuparts git repository branch, develop, updated. 0.44-589-g4af4863

Holger Levsen holger at layer-acht.org
Fri May 25 13:03:47 UTC 2012


The following commit has been merged in the develop branch:
commit b30506d763838d8824e707170e8ea6b3a290dcf6
Author: David Steele <dsteele at gmail.com>
Date:   Tue May 22 23:25:57 2012 -0400

    Calculate the number of packages blocked by failed packages.

diff --git a/debian/changelog b/debian/changelog
index 17e081b..4ac6da0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -10,6 +10,7 @@ piuparts (0.45) UNRELEASED; urgency=low
       (Closes: #673919)
   * packagesdb.py
     - Calculate recursive reverse dependency count, and store in Package
+    - Calculate the count of packages being blocked by a failed package
 
   [ Andreas Beckmann ]
   * piuparts.py:
diff --git a/piupartslib/packagesdb.py b/piupartslib/packagesdb.py
index 9df675e..5b293be 100644
--- a/piupartslib/packagesdb.py
+++ b/piupartslib/packagesdb.py
@@ -58,6 +58,7 @@ class Package(UserDict.UserDict):
         self._parsed_deps = {}
         self._parsed_alt_deps = {}
         self._rrdep_count = None
+        self._block_count = None
 
     def _parse_dependencies(self, header_name):
         if header_name in self._parsed_deps:
@@ -125,6 +126,15 @@ class Package(UserDict.UserDict):
     def set_rrdep_count(self, val):
         self._rrdep_count = val
 
+    def block_count(self):
+        """Get the number of packages blocked by this package"""
+        if self._block_count == None:
+            raise Exception('Block count has not been calculated')
+        return(self._block_count)
+
+    def set_block_count(self, val):
+        self._block_count = val
+
     def dump(self, output_file):
         output_file.write("".join(self.headers))
 
@@ -594,7 +604,8 @@ class PackagesDB:
     def calc_rrdep_counts(self):
         """Calculate recursive reverse dependency counts for Packages"""
 
-        self._find_all_packages()    # populate _packages
+        self._find_all_packages()       # populate _packages
+        self._compute_package_states()  # populate _package_state
 
         # create a reverse dependency dictionary.
         # entries consist of a one-level list of reverse dependency package names,
@@ -623,9 +634,25 @@ class PackagesDB:
 
             return rrdep_dict
 
-        # calculate all of the rrdeps
+
+        # define which state relationships between and package and reverse dep
+        # constitute a block
+        block_states = [
+            ("dependency-failed-testing", "failed-testing"),
+            ("dependency-cannot-be-tested", "cannot-be-tested"),
+            ]
+
+        # calculate all of the rrdeps and block counts
         for pkg_name in self._packages.keys():
-            pkg_dep_count = len( recurse_rdeps( pkg_name, rdeps, {} ).keys() )
-            self._packages[pkg_name].set_rrdep_count( pkg_dep_count )
+            rrdep_list = recurse_rdeps( pkg_name, rdeps, {} ).keys()
+
+            self._packages[pkg_name].set_rrdep_count( len(rrdep_list) )
+
+            block_list = [x for x in rrdep_list
+                     if (self._package_state[x], self._package_state[pkg_name])
+                        in block_states]
+
+            self._packages[pkg_name].set_block_count( len(block_list) )
+
 
 # vi:set et ts=4 sw=4 :

-- 
piuparts git repository



More information about the Piuparts-commits mailing list