]> git.decadent.org.uk Git - dak.git/commitdiff
sync
authorJames Troup <james@nocrew.org>
Thu, 18 Jan 2001 04:51:10 +0000 (04:51 +0000)
committerJames Troup <james@nocrew.org>
Thu, 18 Jan 2001 04:51:10 +0000 (04:51 +0000)
THANKS
TODO
docs/melanie.1.sgml
katie
katie.conf
katie.conf-non-US

diff --git a/THANKS b/THANKS
index 62a9dd7d75bdbd717a63c4ba104c0e05b4b08deb..5296b3843408d924d3e52d3602b7a7500b91a9a6 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -8,6 +8,7 @@ Anthony Towns                  <ajt@debian.org>
 Antti-Juhani Kaijanaho        <ajk@debian.org>
 Ben Collins                   <bcollins@debian.org>
 Brendan O'Dea                 <bod@debian.org>
+Brian Russo                   <wolfie@debian.org>
 Chris Leishman                <masklin@debian.org>
 Daniel Jacobwitz              <dan@debian.org>
 Drake Diedrich                <dld@debian.org>
diff --git a/TODO b/TODO
index 4f7cd505b5e850557b3ff7d269c63e64b1c5942e..4dfdd1ba049eb9a88b58333aa351aa6a378d719c 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,75 +1,85 @@
+TOFIX
+=====
+
 Urgent
 ------
 
   o Claire needs to know about sections on auric.
+  o maintainers file needs overrides.
+  o jenna needs to use order by to keep aj from going nutzo
+  o fix the silly rhona p-u bug
+  o have cron job symlink -dr properly
+  o need to have process_it run a big try: loop so that individual
+    package screws up don't kill the daily cron run.
+  o Add an 'add' ability to melanie
+  o Make experimental work
 
 Less Urgent
 -----------
 
-  o Need to merge non-non-US and non-US DBs.
-  o need a poolifier that will poolify X mb a day.. (catherine)
-  o Need to vacuum daily
-
-  == 
-
-  o Log files for jenna, rhona and katie.
-  o Optimize all the queries by using EXAMINE and building some INDEXs.
-  o enclose all the setting SQL stuff in transactions (mostly done).
-  o jenna needs to use order by to keep aj from going nutzo
-  o remove empty directories in the pool in cron.weekly or so
-
-  == 
+  o [Hard] Need to merge non-non-US and non-US DBs.
+  o [Easy] Need to vacuum daily
+  o [Easy] remove empty directories in the pool in cron.weekly or so
 
-  o ability to rebuild all other tables from dists _or_ pools (in the event of disaster) (?)
-  o check errors on apt_pkg calls so we don't bomb out on daily runs (?)
-  o Need to finish alyson (a way to sync katie.conf and the DB)
-  o dinstall should remove != stable on stable install, not just f + u
-  o jenna needs to validate arguments
-  o jenna's untochable flag doesn't stop adding new packages
-  o db_access' get_files needs to use exceptions not this None, > 0, < 0 return val BS (?)
+  o Fix dinstall to remove != stable on stable install, not just f + u
   o Fix 'mixed' component handling
   o Fix component handling in overrides (aj)
   o Fix lack of entires in source overrides (aj)
-  o Fix potato files to not regen and sort by in jenna
   o Fix rhona to unconditionally read override file on startup
   o Fix dinstall to warn if not in incoming or p-u
+  o db_access' get_files needs to use exceptions not this None, > 0, < 0 return val BS (?)
+  o check errors on apt_pkg calls (?)
+  o The untouchable flag doesn't stop adding new packages
+  o jenna needs to validate arguments (?)
 
 ===================================================================================================
 
-Packaging TODO
---------------
+TODO
+====
+
+Packaging
+---------
 
   o Install python libraries (db_access and utils)
   o Install config file
   o Fix stuff to look in sensible places for libs and config file in debian package (?)
   o man pages and/or documentation
 
-Future Enhancements
--------------------
+Urgent
+------
+
+  o Secure incoming handling
+  o [Hard] dependency checking
+  o dpkg 1.7 Changed-By field support
+  o Overrides for Maintainers
+  o Possibly disallow binary versions >> source except for bin-only NMUs (Branden Robinson, IWJ & others)
+  o Kill orphaned
+
+Less Urgent
+-----------
+
+  o Need a poolifier that will poolify X mb a day.. (catherine)
+  o Need to optimize all the queries by using EXAMINE and building some INDEXs.
+  o Need to enclose all the setting SQL stuff in transactions (mostly done).
+  o Need to finish alyson (a way to sync katie.conf and the DB)
+  o Need log files for jenna, rhona and katie.
+  o Need the ability to rebuild all other tables from dists _or_ pools (in the event of disaster) (?)
+  o Make the --help and --version options do stuff for all scripts
+  o Need to check for .dsc when source is mentioned
 
-  o possibly disallow binary versions >> source except for bin-only NMUs (Branden Robinson)
-  o project/orphaned should be a timed dist so that things only stay
-    in there temporarily (say 3 months) [aj]
-  o make the --help and --version options do stuff for all scripts
-  o check for .dsc when source is mentioneD?
   o fix parse_changes()/build_file_list() to sanity check filenames
   o saftey check and/or rename debs so they match what they should be
+
   o charisma can't handle whitespace-only lines (for the moment, this is feature)
-  o Fix problems with bad .sig .changes having no Maintainer field to REJECT to
-  o Dep checking
   o Should use $EDITOR, not hardcode vi
-  o should reject timestamp fucked debs
-  o dpkg 1.7 Changed-By field support
-  o Secure incoming handling
-  o revamp NEW package handling so we odn't have to read in the override file
-  o make mkmaintainers obey override changes
-  o Report stuff (? needed ?)
-  o handle the case of 1:1.1 which would overwrite 1.1
+  o Should reject packages with bad timestamps
+  o Replicate old dinstall report stuff (? needed ?)
+  o Handle the case of 1:1.1 which would overwrite 1.1 (?)
   o aj's binary-all stuff (foo-doc depending on foo) (?)
   o heidi should report suite name not ID [aj]
 
-  o fubar and warn/error wrappers like in C
-  o generic way of saying isabinary and isadsc.
+  o fubar and warn/error wrappers like in C (?)
+  o generic way of saying isabinary and isadsc. (?)
   o substitution stuff (cf. userdir-ldap) for announce, reject etc.
 
   o s/distribution/suite/g
index 4a23f0894be8e2b915d083645ab4f2ba189a231e..331efc7c87e28204650918e373eaf95625bbed3e 100644 (file)
@@ -32,7 +32,7 @@
   
   <RefSect1><Title>Description</>
     <para>   
-      <command>melanie</command> is the command line tool to add and remove packages from suites.
+      <command>melanie</command> is the command line tool to add and remove package sets from suites with enforced logging, optional bug closing and override updates.
 
   <RefSect1><Title>Options</>
     
       <para>There are 3 methods for selecting packages.</para>
       <itemizedlist>
        <listitem>
-         <para>Source + Binary. (default)</para>
+         <para>Source + Binaries. (default)</para>
          <para>In this mode <command>melanie</command> will assume each of the package(s) passed as arguments are source packages and will also remove any binary packages built from these source packages.</para>
        </listitem>
        <listitem>
          <para>Binary only.</para>
          <para>Only binary packages are searched; source packages are ignored.  This mode is chosen by use of the <option>-b/--binary</option> switch.</para>
+         <para>This should <emphasis>only</emphasis> be used for orphaned binary packages (i.e. those no longer built by source packages); otherwise, in any system (e.g. Debian) which has auto-building, pointless (and uninstallable) recompiles will be triggered.</para>
        </listitem>
        <listitem>
          <para>Source only.</para>
       </itemizedlist>
     </refsect1>
 
+    <refsect1>
+      <title>Configuration</title>
+      <para><command>melanie</command> uses katie's configuration file. It follows the typical ISC configuration format as seen in ISC tools like bind 8 and dhcpd.  Apart from being able to alter the defaults for command line options, the following configuration items are used:</para>
+      <variablelist>
+       <varlistentry>
+         <term>Melanie::MyEmailAddress</term>
+         <listitem>
+           <para>This is used as the From: line for bug closing mails as per the -d/--done command line switch.  It, obviously, must be a RFC-822 valid email address.</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+         <term>Melanie::LogFile</term>
+         <listitem>
+           <para>This is the (absolute) file name of the logfile that melanie unconditionally writes too.  This can not be empty or an invalid file.</para>
+         </listitem>
+       </varlistentry>
+      </variablelist>
+    </refsect1>
+
   <refsect1>
     <title>Examples</title>
-    <para></para>
+      <para>The first example is of a source+binaries package removal.</para>
+      <informalexample>
+       <literallayout>
+troup@auric| ~ $melanie -d 68136 -m "Requested by tbm@; confirmed with maintainer.  Superseded by libgmp2" gmp1   
+Working... done.
+Will remove the following packages from unstable:
+
+      gmp1 |  1.3.2-8.2 | source, alpha, hppa, arm, i386, m68k, powerpc, sparc
+  gmp1-dev |  1.3.2-8.2 | alpha, hppa, arm, i386, m68k, powerpc, sparc
+
+
+------------------- Reason -------------------
+Requested by tbm@; confirmed with maintainer.  Superseded by libgmp2
+----------------------------------------------
+
+Continue (y/N)? y
+ Deleting... done.
+troup@auric| ~ $
+         </literallayout>
+      </informalexample>
+      <para>The second example is of a binary-only multi-package removal.</para>
+      <informalexample>
+       <literallayout>
+troup@auric| ~ $melanie -d 82562 -m "Requested by paul@; NBS." -b libgtkextra{5,9,10}
+Working... done.
+Will remove the following packages from unstable:
+
+libgtkextra10 |  0.99.10-2 | alpha, i386, m68k, powerpc, sparc
+libgtkextra5 |   0.99.5-1 | alpha, i386, m68k, powerpc, sparc
+libgtkextra9 |   0.99.9-1 | alpha, i386, m68k, powerpc, sparc
+
+Will also close bugs: 82562
+
+------------------- Reason -------------------
+Requested by paul@; NBS.
+----------------------------------------------
+
+Continue (y/N)? y
+ Deleting... done.
+troup@auric| ~ $
+       </literallayout>
+      </informalexample>
   </refsect1>
 
-  <RefSect1><Title>Description</>
-    <para>   
-      <command>melanie</command> is the command line tool to add and remove packages from suites.
-
   <RefSect1><Title>Diagnostics</>
     <para>
       <command>melanie</command> returns zero on normal operation, non-zero on error.
diff --git a/katie b/katie
index ebb52958bc127c4e7aaf6880980492d7c11ad548..df97db7d8796bff4961f4fa4f23874e5658f218d 100755 (executable)
--- a/katie
+++ b/katie
@@ -2,7 +2,7 @@
 
 # Installs Debian packaes
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: katie,v 1.18 2001-01-16 21:52:37 troup Exp $
+# $Id: katie,v 1.19 2001-01-18 04:51:10 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
@@ -113,9 +113,9 @@ def check_signature (filename):
 
 # See if a given package is in the override table
 
-def in_override_p (package, component, suite, binary_type):
-    global overrides;
-
+def in_override_p (package, component, suite, binary_type, file):
+    global files;
+    
     if binary_type == "": # must be source
         type = "dsc";
     else:
@@ -136,15 +136,20 @@ def in_override_p (package, component, suite, binary_type):
     if string.lower(component[:7]) == "non-us/":
         component = component[7:];
 
-    q = projectB.query("SELECT package FROM override WHERE package = '%s' AND suite = %s AND component = %s AND type = %s"
+    q = projectB.query("SELECT s.section, p.priority FROM override o, section s, priority p WHERE package = '%s' AND suite = %s AND component = %s AND type = %s AND o.section = s.id AND o.priority = p.id"
                        % (package, suite_id, component_id, type_id));
     result = q.getresult();
     # If checking for a source package fall back on the binary override type
     if type == "dsc" and not result:
         type_id = db_access.get_override_type_id("deb");
-        q = projectB.query("SELECT package FROM override WHERE package = '%s' AND suite = %s AND component = %s AND type = %s"
+        q = projectB.query("SELECT s.section, p.priority FROM override o, section s, priority p WHERE package = '%s' AND suite = %s AND component = %s AND type = %s AND o.section = s.id AND o.priority = p.id"
                            % (package, suite_id, component_id, type_id));
         result = q.getresult();
+
+    # Remember the section and priority so we can check them later if appropriate
+    if result != []:
+        files[file]["override section"] = result[0][0];
+        files[file]["override priority"] = result[0][1];
         
     return result;
 
@@ -366,7 +371,7 @@ def check_files():
                 continue
 
             # See if the package is NEW
-            if not in_override_p(files[file]["package"], files[file]["component"], suite, files[file].get("dbtype","")):
+            if not in_override_p(files[file]["package"], files[file]["component"], suite, files[file].get("dbtype",""), file):
                 files[file]["new"] = 1
                 
             # Find any old binary packages
@@ -576,6 +581,51 @@ def check_md5sums ():
             if apt_pkg.md5sum(file_handle) != files[file]["md5sum"]:
                 reject_message = reject_message + "Rejected: md5sum check failed for %s.\n" % (file);
 
+def check_override ():
+    # Only check section & priority on sourceful uploads
+    if not changes["architecture"].has_key("source"):
+        return;
+
+    summary = ""
+    for file in files.keys():
+        if not files[file].has_key("new") and (files[file]["type"] == "dsc" or files[file]["type"] == "deb"):
+            section = files[file]["section"];
+            override_section = files[file]["override section"];
+            if section != override_section and section != "-":
+                summary = summary + "%s: section is overridden from %s to %s.\n" % (file, section, override_section);
+            if files[file]["type"] == "deb": # don't do priority for source
+                priority = files[file]["priority"];
+                override_priority = files[file]["override priority"];
+                if priority != override_priority and priority != "-":
+                    summary = summary + "%s: priority is overridden from %s to %s.\n" % (file, priority, override_priority);
+
+    if summary == "":
+        return;
+    
+    mail_message = """Return-Path: %s
+From: %s
+To: %s
+Bcc: troup@auric.debian.org
+Subject: %s override disparity
+
+There are disparities between your recently installed upload and the
+override file for the following file(s):
+
+%s
+Either the package or the override file is incorrect.  If you think
+the override is correct and the package wrong please fix the package
+so that this disparity is fixed in the next upload.  If you feel the
+override is incorrect then please reply to this mail and explain why.
+
+--
+Debian distribution maintenance software
+
+(This message was generated automatically; if you believe that there
+is a problem with it please contact the archive administrators by
+mailing ftpmaster@debian.org)
+""" % (Cnf["Dinstall::MyEmailAddress"], Cnf["Dinstall::MyEmailAddress"], changes["maintainer822"], changes["source"], summary);
+    utils.send_mail (mail_message, "")
+
 #####################################################################################################################
 
 def action (changes_filename):
@@ -805,6 +855,7 @@ Installing:
 %s""" % (Cnf["Dinstall::MyEmailAddress"], Cnf["Dinstall::MyEmailAddress"], changes["maintainer822"], os.path.basename(changes_filename), reject_message, summary, installed_footer)
         utils.send_mail (mail_message, "")
         announce (short_summary, 1)
+        check_override ();
 
 #####################################################################################################################
 
index d3c169f44518c523e68d4d60f94485e2c8afa835..c665c91208acfb0299f4ec1cd17332a084f557c7 100644 (file)
@@ -277,10 +277,12 @@ Suite
          "hppa" "";
          "hurd-i386" "";
          "i386" "";
+         "ia64" "";
          "m68k" "";
          "mips" "";
          "mipsel" "";
          "powerpc" "";
+         "s390" "";
          "sh" "";
          "sparc" "";
        };
@@ -323,10 +325,12 @@ Architectures
   hppa "HP PA RISC";
   arm "Arm";
   i386 "Intel ia32";
+  ia64 "Intel ia64";
   m68k "Motorola Mc680x0";
   mips "SGI MIPS";
   mipsel "SGI MIPS (Little Endian)";
   powerpc "PowerPC";
+  s390 "IBM S/390";
   sh "Hitatchi SuperH";
   sparc "Sun SPARC/UltraSPARC";
 
index c2172f942fbfbbbd36a795b7333e113318c3b229..6af40418b9de3cf819c89d21e512bad9ac96677a 100644 (file)
@@ -276,10 +276,12 @@ Suite
          "hppa" "";
          "hurd-i386" "";
          "i386" "";
+         "ia64" "";
          "m68k" "";
          "mips" "";
          "mipsel" "";
          "powerpc" "";
+         "s390" "";
          "sh" "";
          "sparc" "";
        };
@@ -322,10 +324,12 @@ Architectures
   hppa "HP PA RISC";
   arm "Arm";
   i386 "Intel ia32";
+  ia64 "Intel ia64";
   m68k "Motorola Mc680x0";
   mips "SGI MIPS";
   mipsel "SGI MIPS (Little Endian)";
   powerpc "PowerPC";
+  s390 "IBM S/390";
   sh "Hitatchi SuperH";
   sparc "Sun SPARC/UltraSPARC";