]> 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 56810b29c7a8f8cdde950833e7d9b2aa441920d2..7d10d42ba2942b91c9d15d67de58b4da7e01a21f 100755 (executable)
@@ -36,9 +36,9 @@
 import copy, os, pg, sys
 import apt_pkg
 import symlink_dists
-import daklib.database
-import daklib.logging
-import daklib.utils
+from daklib import database
+from daklib import logging
+from daklib import utils
 
 ################################################################################
 
@@ -59,6 +59,7 @@ 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
@@ -76,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 = daklib.database.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):
@@ -84,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:
@@ -198,7 +199,7 @@ 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 = daklib.utils.open_file(filename, "w")
+    output = utils.open_file(filename, "w")
     # Generate the final list of files
     files = {}
     for id in list:
@@ -210,7 +211,7 @@ def write_legacy_mixed_filelist(suite, list, packages, dislocated_files):
         else:
             filename = path + filename
         if files.has_key(filename):
-            daklib.utils.warn("%s (in %s) is duplicated." % (filename, suite))
+            utils.warn("%s (in %s) is duplicated." % (filename, suite))
         else:
             files[filename] = ""
     # Sort the files since apt-ftparchive doesn't
@@ -231,7 +232,7 @@ def write_filelist(suite, component, arch, type, list, packages, dislocated_file
         elif type == "deb":
             arch = "binary-%s" % (arch)
     filename = os.path.join(Cnf["Dir::Lists"], "%s_%s_%s.list" % (suite, component, arch))
-    output = daklib.utils.open_file(filename, "w")
+    output = utils.open_file(filename, "w")
     # Generate the final list of files
     files = {}
     for id in list:
@@ -244,7 +245,7 @@ def write_filelist(suite, component, arch, type, list, packages, dislocated_file
         else:
             filename = path + filename
         if files.has_key(pkg):
-            daklib.utils.warn("%s (in %s/%s, %s) is duplicated." % (pkg, suite, component, filename))
+            utils.warn("%s (in %s/%s, %s) is duplicated." % (pkg, suite, component, filename))
         else:
             files[pkg] = filename
     # Sort the files since apt-ftparchive doesn't
@@ -274,13 +275,13 @@ def write_filelists(packages, dislocated_files):
     if not Options["Suite"]:
         suites = Cnf.SubTree("Suite").List()
     else:
-        suites = daklib.utils.split_args(Options["Suite"])
+        suites = utils.split_args(Options["Suite"])
     for suite in [ i.lower() for i in suites ]:
         d.setdefault(suite, {})
         if not Options["Component"]:
             components = Cnf.ValueList("Suite::%s::Components" % (suite))
         else:
-            components = daklib.utils.split_args(Options["Component"])
+            components = utils.split_args(Options["Component"])
         udeb_components = Cnf.ValueList("Suite::%s::UdebComponents" % (suite))
         udeb_components = udeb_components
         for component in components:
@@ -292,7 +293,7 @@ def write_filelists(packages, dislocated_files):
             if not Options["Architecture"]:
                 architectures = Cnf.ValueList("Suite::%s::Architectures" % (suite))
             else:
-                architectures = daklib.utils.split_args(Options["Architectures"])
+                architectures = utils.split_args(Options["Architectures"])
             for arch in [ i.lower() for i in architectures ]:
                 d[suite][component].setdefault(arch, {})
                 if arch == "source":
@@ -342,7 +343,7 @@ def stable_dislocation_p():
     if not Options["Suite"]:
         return 1
     # Otherwise, look in what suites the user specified
-    suites = daklib.utils.split_args(Options["Suite"])
+    suites = utils.split_args(Options["Suite"])
 
     if "stable" in suites:
         return 1
@@ -355,16 +356,16 @@ def do_da_do_da():
     # If we're only doing a subset of suites, ensure we do enough to
     # be able to do arch: all mapping.
     if Options["Suite"]:
-        suites = daklib.utils.split_args(Options["Suite"])
+        suites = utils.split_args(Options["Suite"])
         for suite in suites:
             archall_suite = Cnf.get("Make-Suite-File-List::ArchAllMap::%s" % (suite))
             if archall_suite and archall_suite not in suites:
-                daklib.utils.warn("Adding %s as %s maps Arch: all from it." % (archall_suite, suite))
+                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) = \
-                 daklib.utils.parse_args(Options)
+                 utils.parse_args(Options)
 
     if stable_dislocation_p():
         dislocated_files = symlink_dists.find_dislocated_stable(Cnf, projectB)
@@ -408,23 +409,24 @@ SELECT s.id, s.source, 'source', s.version, l.path, f.filename, c.name, f.id,
 def main():
     global Cnf, projectB, Options, Logger
 
-    Cnf = daklib.utils.get_conf()
+    Cnf = utils.get_conf()
     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" ]:
-       if not Cnf.has_key("Make-Suite-File-List::Options::%s" % (i)):
-           Cnf["Make-Suite-File-List::Options::%s" % (i)] = ""
+    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("Make-Suite-File-List::Options")
     if Options["Help"]:
         usage()
 
     projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]))
-    daklib.database.init(Cnf, projectB)
-    Logger = daklib.logging.Logger(Cnf, "make-suite-file-list")
+    database.init(Cnf, projectB)
+    Logger = logging.Logger(Cnf, "make-suite-file-list")
     do_da_do_da()
     Logger.close()