]> git.decadent.org.uk Git - dak.git/blobdiff - contrib/hack.4
sync
[dak.git] / contrib / hack.4
diff --git a/contrib/hack.4 b/contrib/hack.4
new file mode 100755 (executable)
index 0000000..a1e40ea
--- /dev/null
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+
+# Whee!  Fix testing fubarity
+# Copyright (C) 2000, 2001  James Troup <james@nocrew.org>
+# $Id: hack.4,v 1.1 2001-03-14 20:32:05 troup Exp $
+
+# 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+################################################################################
+
+# Computer games don't affect kids. I mean if Pacman affected our generation as
+# kids, we'd all run around in a darkened room munching pills and listening to
+# repetitive music.
+#         -- Unknown
+
+################################################################################
+
+import pg, sys, os, string, stat
+import utils, db_access
+import apt_pkg;
+
+################################################################################
+
+Cnf = None;
+projectB = None;
+
+################################################################################
+
+def main ():
+    global Cnf, projectB, db_files, waste, excluded;
+
+    apt_pkg.init();
+    
+    Cnf = apt_pkg.newConfiguration();
+    apt_pkg.ReadConfigFileISC(Cnf,utils.which_conf_file());
+
+    Arguments = [('d',"debug","Christina::Options::Debug", "IntVal"),
+                 ('h',"help","Christina::Options::Help"),
+                 ('v',"version","Christina::Options::Version")];
+
+    apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv);
+    projectB = pg.connect('projectb', 'localhost');
+    christina = pg.connect('christina', 'localhost');
+    db_access.init(Cnf, projectB);
+
+    # Source without dsc_file entries
+    q = projectB.query("SELECT s.id, f.id, l.path, f.filename FROM source s, files f, location l WHERE NOT EXISTS (SELECT df.* FROM dsc_files df WHERE df.source = s.id) and f.id = s.file and l.id = f.location;");
+    ql = q.getresult();
+    projectB.query("BEGIN WORK;")
+    for i in ql:
+        source_id = i[0];
+        dsc_file_id = i[1];
+        dsc_filename = i[2] + i[3];
+        dsc_dir = os.path.dirname(i[3]);
+        # We get the .dsc for free
+        print "INSERT INTO dsc_files (source, file) VALUES (%s, %s)" % (source_id, dsc_file_id);
+        projectB.query("INSERT INTO dsc_files (source, file) VALUES (%s, %s)" % (source_id, dsc_file_id));
+        # Then work out the files.id of the other files
+        dsc = utils.parse_changes(dsc_filename, 0);
+        dsc_files = utils.build_file_list(dsc, 1);
+        for dsc_file in dsc_files.keys():
+            if dsc_file[-4:] != ".dsc":
+                filename = dsc_dir + '/' + dsc_file;
+                x = projectB.query("SELECT id FROM files WHERE filename = '%s'" % (filename));
+                xl = x.getresult();
+                if len(xl) != 1:
+                    # No?  probably s/woody/potato/ BS.. try again with ~ and only the filename
+                    x = projectB.query("SELECT id FROM files WHERE filename ~ '%s$'" % (utils.regex_safe(dsc_file)));
+                    xl = x.getresult();
+                    if len(xl) != 1:
+                        print filename
+                        print xl
+                        sys.exit(9);
+                print "INSERT INTO dsc_files (source, file) VALUES (%s, %s)" % (source_id, xl[0][0]);
+                projectB.query("INSERT INTO dsc_files (source, file) VALUES (%s, %s)" % (source_id, xl[0][0]));
+        
+    projectB.query("COMMIT WORK;");
+    
+    sys.exit(0);
+
+#######################################################################################
+
+if __name__ == '__main__':
+    main()
+
+#      source_id = i[0];
+#          source_name = i[1];
+#          source_version = i[2];
+#          print "SELECT df.file FROM dsc_files df, source s WHERE s.source = '%s' AND s.version = '%s' AND df.source = s.id;" % (source_name, source_version);
+#          x = christina.query("SELECT df.file FROM dsc_files df, source s WHERE s.source = '%s' AND s.version = '%s' AND df.source = s.id;" % (source_name, source_version));
+#          xl = x.getresult();
+#          if len(xl) < 2 or len(xl) > 3:
+#              print xl
+#              continue;
+#              #sys.exit(9);
+#          for j in xl:
+#              df_source = source_id;
+#              print "SELECT filename, location FROM files WHERE id = %s;" % (j[0]);
+#              x1 = christina.query("SELECT filename, location FROM files WHERE id = %s;" % (j[0]));
+#              x1l = x1.getresult();
+#              if len(x1l) != 1:
+#                  print x1l
+#                  sys.exit(9);
+#              filename = x1l[0][0];
+#              location = x1l[0][1];
+#              print "SELECT id FROM files WHERE filename = '%s' AND location = %s;" % (filename, location);
+#              x2 = projectB.query("SELECT id FROM files WHERE filename = '%s' AND location = %s;" % (filename, location));
+#              x2l = x2.getresult();
+#              if len(x2l) != 1:
+#                  print x2l
+#                  sys.exit(9);
+#              df_file = x2l[0][0];
+#              projectB.query("INSERT INTO dsc_files (source, file) VALUES (%s, %s);" % (df_source, df_file));
+#              print "INSERT INTO dsc_files (source, file) VALUES (%s, %s);" % (df_source, df_file);