]> git.decadent.org.uk Git - dak.git/blobdiff - dak/make_suite_file_list.py
let's use pythonesque imports, shall we?
[dak.git] / dak / make_suite_file_list.py
index 927de7ff0d6bd7f912d4d8994f4606b9256d5243..7d10d42ba2942b91c9d15d67de58b4da7e01a21f 100755 (executable)
@@ -1,8 +1,7 @@
 #!/usr/bin/env python
 
 # Generate file lists used by apt-ftparchive to generate Packages and Sources files
-# Copyright (C) 2000, 2001, 2002, 2003, 2004  James Troup <james@nocrew.org>
-# $Id: jenna,v 1.29 2004-11-27 17:58:47 troup Exp $
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006  James Troup <james@nocrew.org>
 
 # 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, string, sys
+import copy, os, pg, sys
 import apt_pkg
-import claire, db_access, logging, utils
+import symlink_dists
+from daklib import database
+from daklib import logging
+from daklib import utils
 
 ################################################################################
 
@@ -52,11 +54,12 @@ def Dict(**dict): return dict
 ################################################################################
 
 def usage (exit_code=0):
-    print """Usage: jenna [OPTION]
+    print """Usage: dak make-suite-file-list [OPTION]
 Write out file lists suitable for use with apt-ftparchive.
 
   -a, --architecture=ARCH   only write file lists for this architecture
   -c, --component=COMPONENT only write file lists for this component
+  -f, --force               ignore Untouchable suite directives in dak.conf
   -h, --help                show this help and exit
   -n, --no-delete           don't delete older versions
   -s, --suite=SUITE         only write file lists for this suite
@@ -74,7 +77,7 @@ def version_cmp(a, b):
 
 def delete_packages(delete_versions, pkg, dominant_arch, suite,
                     dominant_version, delete_table, delete_col, packages):
-    suite_id = db_access.get_suite_id(suite)
+    suite_id = database.get_suite_id(suite)
     for version in delete_versions:
         delete_unique_id = version[1]
         if not packages.has_key(delete_unique_id):
@@ -82,7 +85,7 @@ def delete_packages(delete_versions, pkg, dominant_arch, suite,
         delete_version = version[0]
         delete_id = packages[delete_unique_id]["id"]
         delete_arch = packages[delete_unique_id]["arch"]
-        if not Cnf.Find("Suite::%s::Untouchable" % (suite)):
+        if not Cnf.Find("Suite::%s::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:
@@ -273,7 +276,7 @@ def write_filelists(packages, dislocated_files):
         suites = Cnf.SubTree("Suite").List()
     else:
         suites = utils.split_args(Options["Suite"])
-    for suite in map(string.lower, suites):
+    for suite in [ i.lower() for i in suites ]:
         d.setdefault(suite, {})
         if not Options["Component"]:
             components = Cnf.ValueList("Suite::%s::Components" % (suite))
@@ -291,7 +294,7 @@ def write_filelists(packages, dislocated_files):
                 architectures = Cnf.ValueList("Suite::%s::Architectures" % (suite))
             else:
                 architectures = utils.split_args(Options["Architectures"])
-            for arch in map(string.lower, architectures):
+            for arch in [ i.lower() for i in architectures ]:
                 d[suite][component].setdefault(arch, {})
                 if arch == "source":
                     types = [ "dsc" ]
@@ -310,7 +313,7 @@ def write_filelists(packages, dislocated_files):
                         list = d[suite][component][arch][type]
                         # If it's a binary, we need to add in the arch: all debs too
                         if arch != "source":
-                            archall_suite = Cnf.get("Jenna::ArchAllMap::%s" % (suite))
+                            archall_suite = Cnf.get("Make-Suite-File-List::ArchAllMap::%s" % (suite))
                             if archall_suite:
                                 list.extend(d[archall_suite][component]["all"][type])
                             elif d[suite][component].has_key("all") and \
@@ -355,17 +358,17 @@ def do_da_do_da():
     if Options["Suite"]:
         suites = utils.split_args(Options["Suite"])
         for suite in suites:
-            archall_suite = Cnf.get("Jenna::ArchAllMap::%s" % (suite))
+            archall_suite = Cnf.get("Make-Suite-File-List::ArchAllMap::%s" % (suite))
             if archall_suite and archall_suite not in suites:
                 utils.warn("Adding %s as %s maps Arch: all from it." % (archall_suite, suite))
                 suites.append(archall_suite)
         Options["Suite"] = ",".join(suites)
-    
+
     (con_suites, con_architectures, con_components, check_source) = \
                  utils.parse_args(Options)
 
     if stable_dislocation_p():
-        dislocated_files = claire.find_dislocated_stable(Cnf, projectB)
+        dislocated_files = symlink_dists.find_dislocated_stable(Cnf, projectB)
     else:
         dislocated_files = {}
 
@@ -407,22 +410,23 @@ def main():
     global Cnf, projectB, Options, Logger
 
     Cnf = utils.get_conf()
-    Arguments = [('a', "architecture", "Jenna::Options::Architecture", "HasArg"),
-                 ('c', "component", "Jenna::Options::Component", "HasArg"),
-                 ('h', "help", "Jenna::Options::Help"),
-                 ('n', "no-delete", "Jenna::Options::No-Delete"),
-                 ('s', "suite", "Jenna::Options::Suite", "HasArg")]
-    for i in ["architecture", "component", "help", "no-delete", "suite" ]:
-       if not Cnf.has_key("Jenna::Options::%s" % (i)):
-           Cnf["Jenna::Options::%s" % (i)] = ""
+    Arguments = [('a', "architecture", "Make-Suite-File-List::Options::Architecture", "HasArg"),
+                 ('c', "component", "Make-Suite-File-List::Options::Component", "HasArg"),
+                 ('h', "help", "Make-Suite-File-List::Options::Help"),
+                 ('n', "no-delete", "Make-Suite-File-List::Options::No-Delete"),
+                 ('f', "force", "Make-Suite-File-List::Options::Force"),
+                 ('s', "suite", "Make-Suite-File-List::Options::Suite", "HasArg")]
+    for i in ["architecture", "component", "help", "no-delete", "suite", "force-touch" ]:
+        if not Cnf.has_key("Make-Suite-File-List::Options::%s" % (i)):
+            Cnf["Make-Suite-File-List::Options::%s" % (i)] = ""
     apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv)
-    Options = Cnf.SubTree("Jenna::Options")
+    Options = Cnf.SubTree("Make-Suite-File-List::Options")
     if Options["Help"]:
         usage()
 
     projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]))
-    db_access.init(Cnf, projectB)
-    Logger = logging.Logger(Cnf, "jenna")
+    database.init(Cnf, projectB)
+    Logger = logging.Logger(Cnf, "make-suite-file-list")
     do_da_do_da()
     Logger.close()