]> git.decadent.org.uk Git - dak.git/commitdiff
Add support for ANAIS.
authorJames Troup <james@nocrew.org>
Mon, 21 May 2001 02:25:08 +0000 (02:25 +0000)
committerJames Troup <james@nocrew.org>
Mon, 21 May 2001 02:25:08 +0000 (02:25 +0000)
TODO
rene

diff --git a/TODO b/TODO
index 875c105575e548fc15af44be32e1a553a987fab8..d43c98e6edeb01b87171152bbc7ad12871363a26 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,5 +1,10 @@
 TOFIX
 =====
+
+
+ o doogie's binary -> source
+
+ o ANIAS should be done in katie ?
  
  o natalie doesn't warn when lisitng invalid components!
 
diff --git a/rene b/rene
index 52d0ee1c1d5a4cc9562f6f969ad6ed2bbbac3205..696729102daa50fd73aeed330f1f17f3bbc9c2d1 100755 (executable)
--- a/rene
+++ b/rene
@@ -2,7 +2,7 @@
 
 # Check for obsolete binary packages
 # Copyright (C) 2000, 2001  James Troup <james@nocrew.org>
-# $Id: rene,v 1.3 2001-04-13 20:17:35 troup Exp $
+# $Id: rene,v 1.4 2001-05-21 02:25:08 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
@@ -33,66 +33,6 @@ import apt_pkg;
 Cnf = None;
 projectB = None;
 
-def bar():
-
-    suite = "unstable";
-    suite_id = db_access.get_suite_id(suite);
-
-    components = Cnf.SubTree("Suite::%s::Components" % (suite)).List();
-    for component in components:
-        filename = "%s/dists/%s/%s/source/Sources.gz" % (Cnf["Dir::RootDir"], suite, component);
-        print "Processing %s..." % (filename);
-        # apt_pkg.ParseTagFile needs a real file handle and can't handle a GzipFile instance...
-        temp_filename = tempfile.mktemp();
-        fd = os.open(temp_filename, os.O_RDWR|os.O_CREAT|os.O_EXCL, 0700);
-        os.close(fd);
-        (result, output) = commands.getstatusoutput("gunzip -c %s > %s" % (filename, temp_filename));
-        if (result != 0):
-            sys.stderr.write("Gunzip invocation failed!\n%s\n" % (output));
-            sys.exit(result);
-        sources = utils.open_file(temp_filename, 'r');
-        Sources = apt_pkg.ParseTagFile(sources);
-        while Sources.Step():
-            source = Sources.Section.Find('Package');
-            architecture = Sources.Section.Find('Architecture');
-            if architecture == "any" or architecture == "all":
-                continue;
-            architectures = {};
-            for arch in string.split(architecture):
-                architectures[string.strip(arch)] = "";
-            binaries = Sources.Section.Find('Binary');
-            for binary in string.split(binaries, ','):
-                binary = string.strip(binary);
-                q = projectB.query("SELECT a.arch_string, b.version FROM binaries b, bin_associations ba, architecture a WHERE ba.suite = %s AND ba.bin = b.id AND b.architecture = a.id AND b.package = '%s'" % (suite_id, binary));
-                ql = q.getresult();
-                if ql == []:
-                    utils.warn("%s lists %s as a binary, but it doesn't seem to exist in %s?" % (source, binary, suite));
-                # Loop around twice; first to get the latest 'valid' version
-                versions = [];
-                for i in q.getresult():
-                    arch = i[0];
-                    version = i[1];
-                    if architectures.has_key(arch):
-                        versions.append(version);
-                versions.sort(apt_pkg.VersionCompare);
-                if versions != []:
-                    latest_version = versions.pop()
-                else:
-                    latest_version = None;
-                # ... then to check for 'invalid' architectures
-                for i in q.getresult():
-                    arch = i[0];
-                    version = i[1];
-                    if not architectures.has_key(arch):
-                        print "[%s]: %s appears for %s (vs. '%s')" % (source, binary, arch, architecture),
-                        if apt_pkg.VersionCompare(latest_version, version) != -1:
-                            print "- out of date.", 
-                        else:
-                            print "- current.",
-                        print "[%s vs %s (%s)]" % (latest_version, version, arch);
-        sources.close();
-        os.unlink(temp_filename);
-
 ################################################################################
 
 def main ():
@@ -120,11 +60,11 @@ def main ():
     source_binaries = {};
 
     suite = "unstable";
+    suite_id = db_access.get_suite_id(suite);
 
     components = Cnf.SubTree("Suite::%s::Components" % (suite)).List();
     for component in components:
         filename = "%s/dists/%s/%s/source/Sources.gz" % (Cnf["Dir::RootDir"], suite, component);
-        print "Processing %s..." % (filename);
         # apt_pkg.ParseTagFile needs a real file handle and can't handle a GzipFile instance...
         temp_filename = tempfile.mktemp();
         fd = os.open(temp_filename, os.O_RDWR|os.O_CREAT|os.O_EXCL, 0700);
@@ -137,17 +77,56 @@ def main ():
         Sources = apt_pkg.ParseTagFile(sources);
         while Sources.Step():
             source = Sources.Section.Find('Package');
+            architecture = Sources.Section.Find('Architecture');
+            binaries = Sources.Section.Find('Binary');
+
+            # Check for packages built on architectures they shouldn't be.
+            if architecture != "any" and architecture != "all":
+                architectures = {};
+                for arch in string.split(architecture):
+                    architectures[string.strip(arch)] = "";
+                for binary in string.split(binaries, ','):
+                    binary = string.strip(binary);
+                    q = projectB.query("SELECT a.arch_string, b.version FROM binaries b, bin_associations ba, architecture a WHERE ba.suite = %s AND ba.bin = b.id AND b.architecture = a.id AND b.package = '%s'" % (suite_id, binary));
+                    ql = q.getresult();
+                    if ql == []:
+                        utils.warn("%s lists %s as a binary, but it doesn't seem to exist in %s?" % (source, binary, suite));
+                    # Loop around twice; first to get the latest 'valid' version
+                    versions = [];
+                    for i in q.getresult():
+                        arch = i[0];
+                        version = i[1];
+                        if architectures.has_key(arch):
+                            versions.append(version);
+                    versions.sort(apt_pkg.VersionCompare);
+                    if versions != []:
+                        latest_version = versions.pop()
+                    else:
+                        latest_version = None;
+                    # ... then to check for 'invalid' architectures
+                    for i in q.getresult():
+                        arch = i[0];
+                        version = i[1];
+                        if not architectures.has_key(arch):
+                            print "[%s]: %s appears for %s (vs. '%s')" % (source, binary, arch, architecture),
+                            if apt_pkg.VersionCompare(latest_version, version) != -1:
+                                print "- out of date.", 
+                            else:
+                                print "- current.",
+                            print "[%s vs %s (%s)]" % (latest_version, version, arch);
+            
+            # Check for duplicated packages and build indices for checking "no source" later
             source_index = component + '/' + source;
             if src_pkgs.has_key(source):
                 print " %s is a duplicated source package (%s and %s)" % (source, source_index, src_pkgs[source]);
             src_pkgs[source] = source_index;
-            binaries = Sources.Section.Find('Binary');
             for binary in string.split(binaries, ','):
                 binary = string.strip(binary);
                 if bin_pkgs.has_key(binary):
                     print " %s is duplicated in %s and %s" % (binary, source, bin_pkgs[binary]);
                 bin_pkgs[binary] = source;
             source_binaries[source] = binaries;
+
         sources.close();
         os.unlink(temp_filename);
 
@@ -157,7 +136,6 @@ def main ():
             if [ "source", "all" ].count(architecture) != 0:
                 continue;
             filename = "%s/dists/%s/%s/binary-%s/Packages" % (Cnf["Dir::RootDir"], suite, component, architecture);
-            print "Processing %s..." % (filename);
             packages = utils.open_file(filename, 'r');
             Packages = apt_pkg.ParseTagFile(packages);
             while Packages.Step():