]> git.decadent.org.uk Git - dak.git/blobdiff - dak/make_suite_file_list.py
Merge branch 'master' into bugfixes
[dak.git] / dak / make_suite_file_list.py
index d6dbf9d0c9a5da876a2058aa3d6b266213290e40..8bb9142c21c58723480c78d3504b98ae142bb31c 100755 (executable)
@@ -1,7 +1,11 @@
 #!/usr/bin/env python
 
-""" Generate file lists used by apt-ftparchive to generate Packages and Sources files """
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006  James Troup <james@nocrew.org>
+"""
+Generate file lists used by apt-ftparchive to generate Packages and Sources files
+@contact: Debian FTP Master <ftpmaster@debian.org>
+@copyright: 2000, 2001, 2002, 2003, 2004, 2006  James Troup <james@nocrew.org>
+@license: GNU General Public License version 2 or later
+"""
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 
 ################################################################################
 
-import copy, os, pg, sys
+import copy
+import os
+import pg
+import sys
 import apt_pkg
 from daklib import database
 from daklib import logging
@@ -41,10 +48,10 @@ from daklib import utils
 
 ################################################################################
 
-projectB = None
-Cnf = None
-Logger = None
-Options = None
+Cnf = None      #: Configuration, apt_pkg.Configuration
+projectB = None #: database connection, pgobject
+Logger = None   #: Logger object
+Options = None  #: Parsed CommandLine arguments
 
 ################################################################################
 
@@ -82,9 +89,9 @@ def delete_packages(delete_versions, pkg, dominant_arch, suite,
         if not packages.has_key(delete_unique_id):
             continue
         delete_version = version[0]
-        delete_id = packages[delete_unique_id]["id"]
+        delete_id = packages[delete_unique_id]["sourceid"]
         delete_arch = packages[delete_unique_id]["arch"]
-        if not Cnf.Find("Suite::%s::Untouchable" % (suite)) or Options["Force"]:
+        if not database.get_suite_untouchable(suite) or Options["Force"]:
             if Options["No-Delete"]:
                 print "Would delete %s_%s_%s in %s in favour of %s_%s" % (pkg, delete_arch, delete_version, suite, dominant_version, dominant_arch)
             else:
@@ -99,8 +106,8 @@ def delete_packages(delete_versions, pkg, dominant_arch, suite,
 
 #####################################################
 
-# Per-suite&pkg: resolve arch-all, vs. arch-any, assumes only one arch-all
 def resolve_arch_all_vs_any(versions, packages):
+    """ Per-suite&pkg: resolve arch-all, vs. arch-any, assumes only one arch-all """
     arch_all_version = None
     arch_any_versions = copy.copy(versions)
     for i in arch_any_versions:
@@ -131,8 +138,8 @@ def resolve_arch_all_vs_any(versions, packages):
 
 #####################################################
 
-# Per-suite&pkg&arch: resolve duplicate versions
 def remove_duplicate_versions(versions, packages):
+    """ Per-suite&pkg&arch: resolve duplicate versions """
     # Sort versions into descending order
     versions.sort(version_cmp)
     dominant_versions = versions[0]
@@ -195,34 +202,6 @@ def cleanup(packages):
 
 ################################################################################
 
-def write_legacy_mixed_filelist(suite, list, packages, dislocated_files):
-    # Work out the filename
-    filename = os.path.join(Cnf["Dir::Lists"], "%s_-_all.list" % (suite))
-    output = utils.open_file(filename, "w")
-    # Generate the final list of files
-    files = {}
-    for fileid in list:
-        path = packages[fileid]["path"]
-        filename = packages[fileid]["filename"]
-        file_id = packages[fileid]["file_id"]
-        if suite == "stable" and dislocated_files.has_key(file_id):
-            filename = dislocated_files[file_id]
-        else:
-            filename = path + filename
-        if files.has_key(filename):
-            utils.warn("%s (in %s) is duplicated." % (filename, suite))
-        else:
-            files[filename] = ""
-    # Sort the files since apt-ftparchive doesn't
-    keys = files.keys()
-    keys.sort()
-    # Write the list of files out
-    for outfile in keys:
-        output.write(outfile+'\n')
-    output.close()
-
-############################################################
-
 def write_filelist(suite, component, arch, type, list, packages, dislocated_files):
     # Work out the filename
     if arch != "source":
@@ -264,7 +243,7 @@ def write_filelists(packages, dislocated_files):
         suite = packages[unique_id]["suite"]
         component = packages[unique_id]["component"]
         arch = packages[unique_id]["arch"]
-        packagetype = packages[unique_id]["type"]
+        packagetype = packages[unique_id]["filetype"]
         d.setdefault(suite, {})
         d[suite].setdefault(component, {})
         d[suite][component].setdefault(arch, {})
@@ -289,7 +268,7 @@ def write_filelists(packages, dislocated_files):
             else:
                 binary_types = [ "deb" ]
             if not Options["Architecture"]:
-                architectures = Cnf.ValueList("Suite::%s::Architectures" % (suite))
+                architectures = database.get_suite_architectures(suite)
             else:
                 architectures = utils.split_args(Options["Architectures"])
             for arch in [ i.lower() for i in architectures ]:
@@ -319,13 +298,8 @@ def write_filelists(packages, dislocated_files):
                                 filelist.extend(d[suite][component]["all"][packagetype])
                         write_filelist(suite, component, arch, packagetype, filelist,
                                        packages, dislocated_files)
-        else: # legacy-mixed suite
-            filelist = []
-            for component in d[suite].keys():
-                for arch in d[suite][component].keys():
-                    for packagetype in d[suite][component][arch].keys():
-                        filelist.extend(d[suite][component][arch][packagetype])
-            write_legacy_mixed_filelist(suite, filelist, packages, dislocated_files)
+        else: # something broken
+            utils.warn("Suite %s has no components." % (suite))
 
 ################################################################################