]> err.no Git - dak/commitdiff
2004-04-17 James Troup <james@nocrew.org> * docs/madison.1.sgml: document -b/-...
authorJames Troup <james@nocrew.org>
Mon, 19 Apr 2004 15:59:12 +0000 (15:59 +0000)
committerJames Troup <james@nocrew.org>
Mon, 19 Apr 2004 15:59:12 +0000 (15:59 +0000)
docs/madison.1.sgml
madison

index e51a0675904e820f9e22387196aa7e56e6b7ceae..7ebd6f36422fa947be69f612e4c657998ad87433 100644 (file)
        </LISTITEM>
       </VarListEntry>
 
+      <VarListEntry><term><option>-b/--binary-type=<replaceable>binary type</replaceable></option></>
+       <ListItem>
+         <Para>Only show package information for the binary type ('deb' or 'udeb').</PARA>
+       </LISTITEM>
+      </VarListEntry>
+
       <varlistentry><term><option>-c/--component=<replaceable>component</replaceable></option></term>
        <listitem>
          <para>Only list package information for the listed component(s).</para>
        </listitem>
       </varlistentry>
 
+      <varlistentry>
+       <term><option>-g/--greaterorequal</option></term>
+       <term><option>-G/--greaterthan</option></term>
+       <listitem>
+         <para>Determine the highest version of each package in the target suite (which is forced to just unstable if one was not specificed) and, in addition to the normal output, also print a line suitable for sending in a reply to a buildd as a 'dep-wait' command.  For <option>-g/--greaterorequal</option>, the versioned dependency is a >= one, e.g. <literallayout>dep-retry libgdbm-dev (>= 1.8.3-2)</literallayout></para>
+         <para>And for <option>-G/--greaterthan</option>, the versioned dependency is a >> one, e.g. <literallayout>dep-retry libflac-dev (>> 1.1.0-10)</literallayout></para>
+       </listitem>
+      </varlistentry>
+
       <varlistentry>
        <term><option>-r/--regex</option></term>
        <listitem>
diff --git a/madison b/madison
index 58c7463356a6cdcaa3fb16abd5257912f0dea9fd..145bb8c7ec3872894764734af9aa6bac11a4a44d 100755 (executable)
--- a/madison
+++ b/madison
@@ -2,7 +2,7 @@
 
 # Display information about package(s) (suite, version, etc.)
 # Copyright (C) 2000, 2001, 2002, 2003, 2004  James Troup <james@nocrew.org>
-# $Id: madison,v 1.29 2004-01-21 03:20:13 troup Exp $
+# $Id: madison,v 1.30 2004-04-19 15:59:12 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
@@ -43,8 +43,10 @@ def usage (exit_code=0):
 Display information about PACKAGE(s).
 
   -a, --architecture=ARCH    only show info for ARCH(s)
-  -b, --binary-type=TYPE     only show info for binary TYPE(s)
+  -b, --binary-type=TYPE     only show info for binary TYPE
   -c, --component=COMPONENT  only show info for COMPONENT(s)
+  -g, --greaterorequal       show buildd 'dep-wait pkg >= {highest version}' info
+  -G, --greaterthan          show buildd 'dep-wait pkg >> {highest version}' info
   -h, --help                 show this help and exit
   -r, --regex                treat PACKAGE as a regex
   -s, --suite=SUITE          only show info for this suite
@@ -65,12 +67,15 @@ def main ():
                  ('b', "binarytype", "Madison::Options::BinaryType", "HasArg"),
                  ('c', "component", "Madison::Options::Component", "HasArg"),
                  ('f', "format", "Madison::Options::Format", "HasArg"),
+                 ('g', "greaterorequal", "Madison::Options::GreaterOrEqual"),
+                 ('G', "greaterthan", "Madison::Options::GreaterThan"),
                  ('r', "regex", "Madison::Options::Regex"),
                  ('s', "suite", "Madison::Options::Suite", "HasArg"),
                  ('S', "source-and-binary", "Madison::Options::Source-And-Binary"),
                  ('h', "help", "Madison::Options::Help")];
-    for i in [ "architecture", "binarytype", "component", "format", "regex",
-               "suite", "source-and-binary", "help" ]:
+    for i in [ "architecture", "binarytype", "component", "format",
+               "greaterorequal", "greaterthan", "regex", "suite",
+               "source-and-binary", "help" ]:
        if not Cnf.has_key("Madison::Options::%s" % (i)):
            Cnf["Madison::Options::%s" % (i)] = "";
 
@@ -89,6 +94,13 @@ def main ():
     if os.path.exists(os.path.join(Cnf["Dir::Root"], "Archive_Maintenance_In_Progress")):
         utils.warn("Archive maintenance is in progress; database inconsistencies are possible.");
 
+    # Handle buildd maintenance helper options
+    if Options["GreaterOrEqual"] or Options["GreaterThan"]:
+        if Options["GreaterOrEqual"] and Options["GreaterThan"]:
+            utils.fubar("-g/--greaterorequal and -G/--greaterthan are mutually exclusive.");
+        if not Options["Suite"]:
+            Options["Suite"] = "unstable";
+
     # Parse -a/--architecture, -c/--component and -s/--suite
     (con_suites, con_architectures, con_components, check_source) = \
                  utils.parse_args(Options);
@@ -125,6 +137,7 @@ def main ():
             q = projectB.query("SELECT s.source, s.version, 'source', su.suite_name, m.name FROM source s, suite su, src_associations sa, maintainer m WHERE s.source %s '%s' AND su.id = sa.suite AND s.id = sa.source AND s.maintainer = m.id %s" % (comparison_operator, package, con_suites));
             ql.extend(q.getresult());
         d = {};
+        highver = {};
         for i in ql:
             results += 1;
             pkg = i[0];
@@ -133,8 +146,11 @@ def main ():
             suite = i[3];
             if not d.has_key(pkg):
                 d[pkg] = {};
+            highver.setdefault(pkg,"");
             if not d[pkg].has_key(version):
                 d[pkg][version] = {};
+                if apt_pkg.VersionCompare(version, highver[pkg]) > 0:
+                    highver[pkg] = version;
             if not d[pkg][version].has_key(suite):
                 d[pkg][version][suite] = [];
             d[pkg][version][suite].append(architecture);
@@ -157,6 +173,10 @@ def main ():
                     elif Options["Format"] == "heidi":
                         for arch in arches:
                             sys.stdout.write("%s %s %s\n" % (pkg, version, arch));
+            if Options["GreaterOrEqual"]:
+                print "\ndep-retry %s (>= %s)" % (pkg, highver[pkg])
+            if Options["GreaterThan"]:
+                print "\ndep-retry %s (>> %s)" % (pkg, highver[pkg])
 
     if not results:
         sys.exit(1);