[Piuparts-commits] [SCM] piuparts git repository branch, develop, updated. 0.52-17-gf515a64

Andreas Beckmann anbe at debian.org
Tue May 28 11:37:40 UTC 2013


The following commit has been merged in the develop branch:
commit 27165fc1cc1041be71d15a33852f8c97a9ae2165
Author: Andreas Beckmann <anbe at debian.org>
Date:   Sun May 26 15:17:10 2013 +0200

    p-[msr]: switch to load_packages_urls()
    
    avoid code duplication and support merging several packages files
    
    Signed-off-by: Andreas Beckmann <anbe at debian.org>

diff --git a/debian/changelog b/debian/changelog
index bcd58f1..340417c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -10,6 +10,9 @@ piuparts (0.53) UNRELEASED; urgency=low
   * piupartslib/conf.py:
   * piupartslib/packagesdb.py:
     - Add load_packages_urls() methods.
+  * piuparts-{master-backend,slave,report}.py:
+    - Switch to load_*_urls(get_*_urls()) for loading Packages/Sources files,
+      adding support for arbitrarily composed virtual distros.
   * piuparts-master-backend.py:
   * piuparts-slave.py:
   * piuparts-analyze.py:
diff --git a/master-bin/detect_well_known_errors.py b/master-bin/detect_well_known_errors.py
index a5a7d57..e609325 100755
--- a/master-bin/detect_well_known_errors.py
+++ b/master-bin/detect_well_known_errors.py
@@ -485,14 +485,11 @@ def process_section(section, config, problem_list,
 
         sectiondir = os.path.join(config['master-directory'], section)
         pkgsdb = piupartslib.packagesdb.PackagesDB(prefix=sectiondir)
-
-        pkgs_url = distro_config.get_packages_url(
-                   section_config.get_distro(),
-                   section_config.get_area(),
-                   section_config.get_arch())
-        pkg_fl = piupartslib.open_packages_url(pkgs_url)
-        pkgsdb.read_packages_file(pkg_fl)
-        pkg_fl.close()
+        pkgsdb.load_packages_urls(
+                distro_config.get_packages_urls(
+                    section_config.get_distro(),
+                    section_config.get_area(),
+                    section_config.get_arch()))
 
         pkgsdb.compute_package_states()
         pkgsdb.calc_rrdep_counts()
diff --git a/piuparts-master-backend.py b/piuparts-master-backend.py
index 1e83ec4..c2f30fa 100644
--- a/piuparts-master-backend.py
+++ b/piuparts-master-backend.py
@@ -206,20 +206,19 @@ class Master(Protocol):
             for dep in deps:
                 self._load_package_database(dep)
             db.set_dependency_databases([self._package_databases[dep] for dep in deps])
-        packages_url = distro_config.get_packages_url(
-                config.get_distro(), config.get_area(), config.get_arch())
-        logging.info("Fetching %s" % packages_url)
-        packages_file = piupartslib.open_packages_url(packages_url)
-        db.read_packages_file(packages_file)
-        packages_file.close()
+        db.load_packages_urls(
+                distro_config.get_packages_urls(
+                    config.get_distro(),
+                    config.get_area(),
+                    config.get_arch()))
         if config.get_distro() != config.get_final_distro():
             # take version numbers (or None) from final distro
-            packages_url = distro_config.get_packages_url(
-                    config.get_final_distro(), config.get_area(), config.get_arch())
-            logging.info("Fetching %s" % packages_url)
-            packages_file = piupartslib.open_packages_url(packages_url)
-            db2 = piupartslib.packagesdb.PackagesFile(packages_file)
-            packages_file.close()
+            db2 = piupartslib.packagesdb.PackagesFile()
+            db2.load_packages_urls(
+                distro_config.get_packages_urls(
+                    config.get_final_distro(),
+                    config.get_area(),
+                    config.get_arch()))
             for package in db.get_all_packages():
                 if package["Package"] in db2:
                     package["Version"] = db2[package["Package"]]["Version"]
diff --git a/piuparts-report.py b/piuparts-report.py
index 86f7c71..948d5d3 100644
--- a/piuparts-report.py
+++ b/piuparts-report.py
@@ -620,13 +620,11 @@ class Section:
         self._binary_db.compute_package_states()
         self._binary_db.calc_rrdep_counts()
 
-        sources_url = self._distro_config.get_sources_url(
-                self._config.get_distro(), self._config.get_area())
-        logging.info("Fetching %s" % sources_url)
-        sources_file = piupartslib.open_packages_url(sources_url)
         self._source_db = piupartslib.packagesdb.PackagesDB()
-        self._source_db.read_packages_file(sources_file)
-        sources_file.close()
+        self._source_db.load_packages_urls(
+                self._distro_config.get_sources_urls(
+                    self._config.get_distro(),
+                    self._config.get_area()))
 
         self._log_name_cache = {}
 
@@ -654,20 +652,19 @@ class Section:
         else:
             # only cache the big base databases that don't have additional dependencies
             self._packagedb_cache[section] = db
-        packages_url = self._distro_config.get_packages_url(
-                config.get_distro(), config.get_area(), config.get_arch())
-        logging.info("Fetching %s" % packages_url)
-        packages_file = piupartslib.open_packages_url(packages_url)
-        db.read_packages_file(packages_file)
-        packages_file.close()
+        db.load_packages_urls(
+                self._distro_config.get_packages_urls(
+                    config.get_distro(),
+                    config.get_area(),
+                    config.get_arch()))
         if config.get_distro() != config.get_final_distro():
             # take version numbers (or None) from final distro
-            packages_url = self._distro_config.get_packages_url(
-                    config.get_final_distro(), config.get_area(), config.get_arch())
-            logging.info("Fetching %s" % packages_url)
-            packages_file = piupartslib.open_packages_url(packages_url)
-            db2 = piupartslib.packagesdb.PackagesFile(packages_file)
-            packages_file.close()
+            db2 = piupartslib.packagesdb.PackagesFile()
+            db2.load_packages_urls(
+                self._distro_config.get_packages_urls(
+                    config.get_final_distro(),
+                    config.get_area(),
+                    config.get_arch()))
             for package in db.get_all_packages():
                 if package["Package"] in db2:
                     package["Version"] = db2[package["Package"]]["Version"]
@@ -1189,8 +1186,9 @@ class Section:
 
         tablerows += "<tr class=\"normalrow\"> <td class=\"labelcell2\">Total</td> <td class=\"labelcell2\" colspan=\"2\">%d</td></tr>\n" % total_packages
         htmlpage = string.Template(HTML_HEADER + SECTION_INDEX_BODY_TEMPLATE + HTML_FOOTER)
-        packages_url = self._distro_config.get_packages_url(
-                self._config.get_distro(), self._config.get_area(), self._config.get_arch())
+        # FIXME: list all urls instead of just one
+        packages_url = self._distro_config.get_packages_urls(
+                self._config.get_distro(), self._config.get_area(), self._config.get_arch())[0]
         vendor = "Debian"
         if len(self._config.get_distros()) > 1:
             description = "%s %s: package installation in %s" % (
diff --git a/piuparts-slave.py b/piuparts-slave.py
index a2f7af7..47a05f4 100644
--- a/piuparts-slave.py
+++ b/piuparts-slave.py
@@ -580,12 +580,13 @@ class Section:
         for distro in [self._config.get_distro()] + self._config.get_distros():
             if distro not in packages_files:
                 try:
-                    packages_url = self._distro_config.get_packages_url(
-                            distro, self._config.get_area(), self._config.get_arch())
-                    logging.debug("Fetching %s" % packages_url)
-                    f = piupartslib.open_packages_url(packages_url)
-                    packages_files[distro] = piupartslib.packagesdb.PackagesFile(f)
-                    f.close()
+                    pf = piupartslib.packagesdb.PackagesFile()
+                    pf.load_packages_urls(
+                            self._distro_config.get_packages_urls(
+                                distro,
+                                self._config.get_area(),
+                                self._config.get_arch()))
+                    packages_files[distro] = pf
                 except IOError:
                     logging.error("failed to fetch packages file for %s" % distro)
                     self._error_wait_until = time.time() + 900

-- 
piuparts git repository



More information about the Piuparts-commits mailing list