]> git.decadent.org.uk Git - dak.git/blobdiff - dak/symlink_dists.py
[JJ, r=JT] drop support for non-US which was last used in Debian for 3.0
[dak.git] / dak / symlink_dists.py
index c0055a70866a14752d2e7ee058eb4d31e5028230..8eb5e3d2240c14e000b0953a50a2edb2e38f4acb 100755 (executable)
@@ -1,8 +1,7 @@
 #!/usr/bin/env python
 
 # 'Fix' stable to make debian-cd and dpkg -BORGiE users happy
-# Copyright (C) 2000, 2001, 2002, 2003  James Troup <james@nocrew.org>
-# $Id: claire.py,v 1.19 2003-09-07 13:52:11 troup Exp $
+# Copyright (C) 2000, 2001, 2002, 2003, 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 os, pg, re, sys;
-import utils, db_access;
-import apt_pkg;
+import os, pg, re, sys
+import apt_pkg
+import daklib.database
+import daklib.utils
 
 ################################################################################
 
-re_strip_section_prefix = re.compile(r'.*/');
+re_strip_section_prefix = re.compile(r'.*/')
 
-Cnf = None;
-projectB = None;
+Cnf = None
+projectB = None
 
 ################################################################################
 
 def usage (exit_code=0):
-    print """Usage: claire [OPTIONS]
+    print """Usage: dak symlink-dists [OPTIONS]
 Create compatibility symlinks from legacy locations to the pool.
 
   -v, --verbose              explain what is being done
@@ -55,24 +55,23 @@ Create compatibility symlinks from legacy locations to the pool.
 
 def fix_component_section (component, section):
     if component == "":
-        component = utils.extract_component_from_section(section)[1];
+        component = daklib.utils.extract_component_from_section(section)[1]
 
     # FIXME: ugly hacks to work around override brain damage
-    section = re_strip_section_prefix.sub('', section);
-    section = section.lower().replace('non-us', '');
+    section = re_strip_section_prefix.sub('', section)
     if section == "main" or section == "contrib" or section == "non-free":
-        section = '';
+        section = ''
     if section != '':
-        section += '/';
+        section += '/'
 
-    return (component, section);
+    return (component, section)
 
 ################################################################################
 
 def find_dislocated_stable(Cnf, projectB):
     dislocated_files = {}
 
-    codename = Cnf["Suite::Stable::Codename"];
+    codename = Cnf["Suite::Stable::Codename"]
 
     # Source
     q = projectB.query("""
@@ -84,7 +83,7 @@ SELECT DISTINCT ON (f.id) c.name, sec.section, l.path, f.filename, f.id
       AND f.id = df.file AND f.location = l.id AND o.package = s.source
       AND sec.id = o.section AND NOT (f.filename ~ '^%s/')
       AND l.component = c.id AND o.suite = su.id
-""" % (codename));
+""" % (codename))
 # Only needed if you have files in legacy-mixed locations
 #  UNION SELECT DISTINCT ON (f.id) null, sec.section, l.path, f.filename, f.id
 #      FROM component c, override o, section sec, source s, files f, location l,
@@ -93,22 +92,22 @@ SELECT DISTINCT ON (f.id) c.name, sec.section, l.path, f.filename, f.id
 #        AND f2.id = s.file AND f2.location = l2.id AND df.source = s.id
 #        AND f.id = df.file AND f.location = l.id AND o.package = s.source
 #        AND sec.id = o.section AND NOT (f.filename ~ '^%s/') AND o.suite = su.id
-#        AND NOT EXISTS (SELECT 1 FROM location l WHERE l.component IS NOT NULL AND f.location = l.id);
+#        AND NOT EXISTS (SELECT 1 FROM location l WHERE l.component IS NOT NULL AND f.location = l.id)
     for i in q.getresult():
-        (component, section) = fix_component_section(i[0], i[1]);
+        (component, section) = fix_component_section(i[0], i[1])
         if Cnf.FindB("Dinstall::LegacyStableHasNoSections"):
-            section="";
-        dest = "%sdists/%s/%s/source/%s%s" % (Cnf["Dir::Root"], codename, component, section, os.path.basename(i[3]));
+            section=""
+        dest = "%sdists/%s/%s/source/%s%s" % (Cnf["Dir::Root"], codename, component, section, os.path.basename(i[3]))
         if not os.path.exists(dest):
-           src = i[2]+i[3];
-           src = utils.clean_symlink(src, dest, Cnf["Dir::Root"]);
-            if Cnf.Find("Claire::Options::Verbose"):
+           src = i[2]+i[3]
+           src = daklib.utils.clean_symlink(src, dest, Cnf["Dir::Root"])
+            if Cnf.Find("Symlink-Dists::Options::Verbose"):
                 print src+' -> '+dest
-            os.symlink(src, dest);
-        dislocated_files[i[4]] = dest;
+            os.symlink(src, dest)
+        dislocated_files[i[4]] = dest
 
     # Binary
-    architectures = filter(utils.real_arch, Cnf.ValueList("Suite::Stable::Architectures"));
+    architectures = filter(daklib.utils.real_arch, Cnf.ValueList("Suite::Stable::Architectures"))
     q = projectB.query("""
 SELECT DISTINCT ON (f.id) c.name, a.arch_string, sec.section, b.package,
                           b.version, l.path, f.filename, f.id
@@ -118,7 +117,7 @@ SELECT DISTINCT ON (f.id) c.name, a.arch_string, sec.section, b.package,
       AND f.id = b.file AND f.location = l.id AND o.package = b.package
       AND sec.id = o.section AND NOT (f.filename ~ '^%s/')
       AND b.architecture = a.id AND l.component = c.id AND o.suite = su.id""" %
-                       (codename));
+                       (codename))
 # Only needed if you have files in legacy-mixed locations
 #  UNION SELECT DISTINCT ON (f.id) null, a.arch_string, sec.section, b.package,
 #                            b.version, l.path, f.filename, f.id
@@ -128,61 +127,61 @@ SELECT DISTINCT ON (f.id) c.name, a.arch_string, sec.section, b.package,
 #        AND f.id = b.file AND f.location = l.id AND o.package = b.package
 #        AND sec.id = o.section AND NOT (f.filename ~ '^%s/')
 #        AND b.architecture = a.id AND o.suite = su.id AND NOT EXISTS
-#          (SELECT 1 FROM location l WHERE l.component IS NOT NULL AND f.location = l.id);
+#          (SELECT 1 FROM location l WHERE l.component IS NOT NULL AND f.location = l.id)
     for i in q.getresult():
-        (component, section) = fix_component_section(i[0], i[2]);
+        (component, section) = fix_component_section(i[0], i[2])
         if Cnf.FindB("Dinstall::LegacyStableHasNoSections"):
-            section="";
-        architecture = i[1];
-        package = i[3];
-        version = utils.re_no_epoch.sub('', i[4]);
-        src = i[5]+i[6];
-
-        dest = "%sdists/%s/%s/binary-%s/%s%s_%s.deb" % (Cnf["Dir::Root"], codename, component, architecture, section, package, version);
-        src = utils.clean_symlink(src, dest, Cnf["Dir::Root"]);
+            section=""
+        architecture = i[1]
+        package = i[3]
+        version = daklib.utils.re_no_epoch.sub('', i[4])
+        src = i[5]+i[6]
+
+        dest = "%sdists/%s/%s/binary-%s/%s%s_%s.deb" % (Cnf["Dir::Root"], codename, component, architecture, section, package, version)
+        src = daklib.utils.clean_symlink(src, dest, Cnf["Dir::Root"])
         if not os.path.exists(dest):
-            if Cnf.Find("Claire::Options::Verbose"):
-                print src+' -> '+dest;
-            os.symlink(src, dest);
-        dislocated_files[i[7]] = dest;
+            if Cnf.Find("Symlink-Dists::Options::Verbose"):
+                print src+' -> '+dest
+            os.symlink(src, dest)
+        dislocated_files[i[7]] = dest
         # Add per-arch symlinks for arch: all debs
         if architecture == "all":
             for arch in architectures:
-                dest = "%sdists/%s/%s/binary-%s/%s%s_%s.deb" % (Cnf["Dir::Root"], codename, component, arch, section, package, version);
+                dest = "%sdists/%s/%s/binary-%s/%s%s_%s.deb" % (Cnf["Dir::Root"], codename, component, arch, section, package, version)
                 if not os.path.exists(dest):
-                    if Cnf.Find("Claire::Options::Verbose"):
+                    if Cnf.Find("Symlink-Dists::Options::Verbose"):
                         print src+' -> '+dest
-                    os.symlink(src, dest);
+                    os.symlink(src, dest)
 
     return dislocated_files
 
 ################################################################################
 
 def main ():
-    global Cnf, projectB;
+    global Cnf, projectB
 
-    Cnf = utils.get_conf()
+    Cnf = daklib.utils.get_conf()
 
-    Arguments = [('h',"help","Claire::Options::Help"),
-                 ('v',"verbose","Claire::Options::Verbose")];
+    Arguments = [('h',"help","Symlink-Dists::Options::Help"),
+                 ('v',"verbose","Symlink-Dists::Options::Verbose")]
     for i in ["help", "verbose" ]:
-       if not Cnf.has_key("Claire::Options::%s" % (i)):
-           Cnf["Claire::Options::%s" % (i)] = "";
+       if not Cnf.has_key("Symlink-Dists::Options::%s" % (i)):
+           Cnf["Symlink-Dists::Options::%s" % (i)] = ""
 
-    apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv);
-    Options = Cnf.SubTree("Claire::Options")
+    apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv)
+    Options = Cnf.SubTree("Symlink-Dists::Options")
 
     if Options["Help"]:
-       usage();
+       usage()
 
-    projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]));
+    projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]))
 
-    db_access.init(Cnf, projectB);
+    daklib.database.init(Cnf, projectB)
 
-    find_dislocated_stable(Cnf, projectB);
+    find_dislocated_stable(Cnf, projectB)
 
 #######################################################################################
 
 if __name__ == '__main__':
-    main();
+    main()