]> git.decadent.org.uk Git - dak.git/commitdiff
sync
authorJames Troup <james@nocrew.org>
Tue, 16 Jan 2001 21:52:37 +0000 (21:52 +0000)
committerJames Troup <james@nocrew.org>
Tue, 16 Jan 2001 21:52:37 +0000 (21:52 +0000)
25 files changed:
THANKS
TODO
alyson
apt.conf
apt.conf-non-US
charisma
cindy [new file with mode: 0755]
contrib/hack.1
cron.daily
cron.daily-non-US
cron.weekly
denise
docs/.cvsignore [new file with mode: 0644]
docs/katie.ent [new file with mode: 0644]
docs/melanie.1.sgml [new file with mode: 0644]
jenna
katie
katie.conf
katie.conf-non-US
melanie
pseudo-packages.description
pseudo-packages.maintainers
tea
utils.py
vars-non-US

diff --git a/THANKS b/THANKS
index cee3b67dc814520d2f762cf643960436d938caa6..62a9dd7d75bdbd717a63c4ba104c0e05b4b08deb 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -15,8 +15,8 @@ Guy Maor                     <maor@debian.org>
 Jason Gunthorpe                       <jgg@debian.org>
 Joey Hess                     <joeyh@debian.org>
 Mark Brown                    <broonie@debian.org>
+Martin Michlmayr              <tbm@debian.org>
 Michael Beattie                       <mjb@debian.org>
 Michael Mattice                       <mattice@debian.org>
 Robert Bihlmeyer              <robbe@orcus.priv.at>
 Roland Bauerschmidt           <rb@debian.org>
-
diff --git a/TODO b/TODO
index 28567aa2b08f1196ca63c67a7d9f0bfa7a1b2a2d..4f7cd505b5e850557b3ff7d269c63e64b1c5942e 100644 (file)
--- a/TODO
+++ b/TODO
@@ -16,25 +16,23 @@ Less Urgent
   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
+  o remove empty directories in the pool in cron.weekly or so
 
   == 
 
-  o jenna: fix the misfeature of handling sid's binary-hurd-i386 brokeness (? still exist ?)
   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 check to see if mutli-component binary packages from a single component source are supported
   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 Should probably use $ in ~ compares for files.
-  o jenna needs to validate arguments!
+  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 db_access' get_files needs to use exceptions not this None, > 0, < 0 return val BS (?)
   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
 
 ===================================================================================================
 
diff --git a/alyson b/alyson
index 5e602ecdc31a9544292d6c51743ff718dee097d0..c6c401985dacb63902e71ea79db2c61fdfed657d 100755 (executable)
--- a/alyson
+++ b/alyson
@@ -2,7 +2,7 @@
 
 # Sync the ISC configuartion file and the SQL database
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: alyson,v 1.1 2001-01-10 05:58:26 troup Exp $
+# $Id: alyson,v 1.2 2001-01-16 21:52:37 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
@@ -20,7 +20,7 @@
 
 ################################################################################
 
-import pg, sys
+import pg, sys, string
 import utils, db_access
 import apt_pkg;
 
@@ -63,12 +63,21 @@ def main ():
     projectB.query("BEGIN WORK");
     projectB.query("DELETE FROM section");
     for component in Cnf.SubTree("Component").List():
-        if component != 'main':
-            prefix = component + '/';
+        if Cnf["Natalie::ComponentPosition"] == "prefix":
+            suffix = "";
+            if component != 'main':
+                prefix = component + '/';
+            else:
+                prefix = "";
         else:
             prefix = "";
+            component = string.replace(component, "non-US/", "");
+            if component != 'main':
+                suffix = '/' + component;
+            else:
+                suffix = "";
         for section in Cnf.SubTree("Section").List():
-            projectB.query("INSERT INTO section (section) VALUES ('%s%s')" % (prefix, section));
+            projectB.query("INSERT INTO section (section) VALUES ('%s%s%s')" % (prefix, section, suffix));
     projectB.query("COMMIT WORK");
 
 
index d1b6336e3a9cda9d1aa5f3edd88368b88ed0fdef..361cdbc75d7c661dd61c62f4f6f95055005d3f6e 100644 (file)
--- a/apt.conf
+++ b/apt.conf
@@ -36,8 +36,8 @@ tree "dists/testing"
    SourceFileList "/org/ftp.debian.org/database/dists/testing_$(SECTION)_source.list";
    Sections "main contrib non-free";
    Architectures "alpha arm i386 m68k powerpc sparc source";
-   BinOverride "override.testing.$(SECTION)";
-   SrcOverride "override.testing.$(SECTION).src";
+   BinOverride "override.woody.$(SECTION)";
+   SrcOverride "override.woody.$(SECTION).src";
 };
 
 tree "dists/unstable"
index da7f5d4457fd673e1faf27ba5b595d00fef83db1..65b64da18928aefe5f1abf7c31c2fc25991e1711 100644 (file)
@@ -47,8 +47,8 @@ tree "dists/unstable/non-US"
    SourceFileList "/org/non-us.debian.org/database/dists/unstable_non-us/$(SECTION)_source.list";
    Sections "main contrib non-free";
    Architectures "alpha arm hppa hurd-i386 i386 mips mipsel m68k powerpc sh sparc source";
-   BinOverride "override.woody.$(SECTION)";
-   SrcOverride "override.woody.$(SECTION).src";
+   BinOverride "override.sid.$(SECTION)";
+   SrcOverride "override.sid.$(SECTION).src";
 };
 
 bindirectory "dists/proposed-updates"
index a9fc2005c96631cd1dcca229046abe19b3010601..e46e1e15a1950401dd77db305b724b9130da3212 100755 (executable)
--- a/charisma
+++ b/charisma
@@ -2,7 +2,7 @@
 
 # Generate Maintainers file used by e.g. the Debian Bug Tracking System
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: charisma,v 1.2 2000-12-17 22:11:12 troup Exp $
+# $Id: charisma,v 1.3 2001-01-16 21:52:37 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
@@ -97,7 +97,7 @@ def main():
             version = source[1];
             maintainer = fix_maintainer(source[2]);
             if packages.has_key(package):
-                if packages[package]["priority"] < suite_priority:
+                if packages[package]["priority"] <= suite_priority:
                     if apt_pkg.VersionCompare(packages[package]["version"], version) == -1:
                         packages[package] = { "maintainer": maintainer, "priority": suite_priority, "version": version };
             else:
@@ -116,7 +116,7 @@ def main():
             else:
                 maintainer = get_maintainer(binary[2]);
             if packages.has_key(package):
-                if packages[package]["priority"] < suite_priority:
+                if packages[package]["priority"] <= suite_priority:
                     if apt_pkg.VersionCompare(packages[package]["version"], version) == -1:
                         packages[package] = { "maintainer": maintainer, "priority": suite_priority, "version": version };
             else:
diff --git a/cindy b/cindy
new file mode 100755 (executable)
index 0000000..af43703
--- /dev/null
+++ b/cindy
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+
+# Output override files for apt-ftparchive and indices/
+# Copyright (C) 2000  James Troup <james@nocrew.org>
+# $Id: cindy,v 1.1 2001-01-16 21:52:37 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
+
+
+# X-Listening-To: Sanitarium / Master of the Puppets - Metallica
+
+################################################################################
+
+import pg, sys, string
+import utils, db_access, natalie
+import apt_pkg;
+
+################################################################################
+
+Cnf = None;
+projectB = None;
+override = {}
+
+################################################################################
+
+def process(suite, component, type):
+    global override;
+    
+    suite_id = db_access.get_suite_id(suite);
+    if suite_id == -1:
+        sys.stderr.write("Suite '%s' not recognised.\n" % (suite));
+        sys.exit(2);
+
+    component_id = db_access.get_component_id(component);
+    if component_id == -1:
+        sys.stderr.write("Component '%s' not recognised.\n" % (component));
+        sys.exit(2);
+
+    type_id = db_access.get_override_type_id(type);
+    if type_id == -1:
+        sys.stderr.write("Type '%s' not recognised. (Valid types are deb, udeb and dsc.)\n" % (type));
+        sys.exit(2);
+    dsc_type_id = db_access.get_override_type_id("dsc");
+
+    if type == "deb" or type == "udeb":
+        packages = {};
+        q = projectB.query("SELECT DISTINCT b.package FROM binaries b, bin_associations ba WHERE b.id = ba.bin AND ba.suite = %s" % (suite_id));
+        for i in q.getresult():
+            packages[i[0]] = "";
+
+    src_packages = {};
+    q = projectB.query("SELECT DISTINCT s.source FROM source s, src_associations sa WHERE s.id = sa.source AND sa.suite = %s" % (suite_id));
+    for i in q.getresult():
+        src_packages[i[0]] = "";
+
+    q = projectB.query("SELECT package, priority, section, maintainer FROM override WHERE suite = %s AND component = %s AND type = %s" % (suite_id, component_id, type_id));
+    projectB.query("BEGIN WORK");
+    for i in q.getresult():
+        package = i[0];
+        if type == "deb" or type == "udeb":
+            if not packages.has_key(package):
+                if not src_packages.has_key(package):
+                    print "DELETING: %s" % (package);
+                    projectB.query("DELETE FROM override WHERE package = '%s' AND suite = %s AND component = %s AND type = %s"
+                                   % (package, suite_id, component_id, type_id));
+                else:
+                    print "MAKING SOURCE: %s" % (package);
+                    projectB.query("DELETE FROM override WHERE package = '%s' AND suite = %s AND component = %s AND type = %s"
+                                   % (package, suite_id, component_id, type_id));
+                    # Then if source doesn't already have a copy, insert it into source
+                    q = projectB.query("SELECT package FROM override WHERE package = '%s' AND suite = %s AND component = %s AND type = %s" % (package, suite_id, component_id, dsc_type_id));
+                    if q.getresult() == []:
+                        projectB.query("INSERT INTO override (package, suite, component, priority, section, type, maintainer) VALUES ('%s', %s, %s, %s, %s, %s, '%s')" % (package, suite_id, component_id, i[1], i[2], dsc_type_id, i[3]));
+        else: # dsc
+            if not src_packages.has_key(package):
+                print "DELETING: %s" % (package);
+                projectB.query("DELETE FROM override WHERE package = '%s' AND suite = %s AND component = %s AND type = %s"
+                               % (package, suite_id, component_id, type_id));
+    projectB.query("COMMIT WORK");
+            
+
+################################################################################
+
+def main ():
+    global Cnf, projectB, override;
+
+    apt_pkg.init();
+    
+    Cnf = apt_pkg.newConfiguration();
+    apt_pkg.ReadConfigFileISC(Cnf,utils.which_conf_file());
+    Arguments = [('D',"debug","Denise::Options::Debug", "IntVal"),
+                 ('h',"help","Denise::Options::Help"),
+                 ('V',"version","Denise::Options::Version")];
+    apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv);
+
+    projectB = pg.connect('projectb', 'localhost');
+    db_access.init(Cnf, projectB);
+
+    for suite in [ "stable", "unstable" ]:
+        sys.stderr.write("Processing %s...\n" % (suite));
+        for component in Cnf.SubTree("Component").List():
+            if component == "mixed":
+                continue; # Ick
+            for type in Cnf.SubTree("OverrideType").List():
+                print "Processing %s [%s - %s]..." % (suite, component, type);
+               process(suite, component, type);
+
+#######################################################################################
+
+if __name__ == '__main__':
+    main()
+
index 6a123fdf07b7fcf761ab0c74614a950a57084b78..473784c48b854673df3e91fa5facd0bfce0158dd 100755 (executable)
@@ -2,7 +2,7 @@
 
 # Quick hack to import override files
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: hack.1,v 1.1 2001-01-10 05:58:26 troup Exp $
+# $Id: hack.1,v 1.2 2001-01-16 21:52:37 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
@@ -56,7 +56,7 @@ def main ():
             continue;
         else:
             component = x[2];
-            if suite == "woody":
+            if suite == "sid":
                 suite = "unstable";
             elif suite == "potato":
                 suite = "stable";
@@ -72,7 +72,7 @@ def main ():
                 else:
                     print "say WHAT?";
                     sys.exit(4);
-        print "cat %s | natalie --set --suite=%s --component=%s --type=%s" % (filename, suite, component, type);
+        print "cat %s | natalie.py --set --suite=%s --component=%s --type=%s" % (filename, suite, component, type);
 
 #######################################################################################
 
index 4ce8f617804867cb9fb17d0710213d7c359e756e..0acd0b9696378521f892181ef27058b4eca45618 100755 (executable)
@@ -38,11 +38,6 @@ update-mirrorlists
 
 ################################################################################
 
-# temporary hack to work around the lack of an apt-utils & python-apt package
-export PYTHONPATH=$PYTHONPATH:/org/ftp.debian.org/scripts/apt/build/bin/
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/org/ftp.debian.org/scripts/apt/build/bin/
-export PATH=$PATH:/org/ftp.debian.org/scripts/apt/build/bin/
-
 cd $incoming
 rm -f REPORT
 katie -pak *.changes | direport | tee REPORT | \
@@ -64,7 +59,7 @@ for i in proposed-updates_-_binary-*; do cat $i >> proposed-updates_-_binary.lis
 cd $overridedir
 denise
 # FIXME
-rm override.potato.all3
+rm -f override.potato.all3
 for i in main contrib non-free; do cat override.potato.$i >> override.potato.all3; done
 
 # Generate Packages and Sources files
index bfcb880fa4086ff7cb9ec88f4a1f075d46bd9c5e..4c0a696681543ed4ed09beb42aabac4d4079134a 100755 (executable)
@@ -53,6 +53,15 @@ jenna
 # FIXME
 cd /org/non-us.debian.org/database/dists/
 for i in proposed-updates_-_binary-*; do cat $i >> proposed-updates_-_binary.list; done
+
+# Generate override files
+cd $overridedir
+denise
+# FIXME
+rm -f override.potato.all3
+for i in main contrib non-free; do cat override.potato.$i >> override.potato.all3; done
+
+# Generate Packages and Sources files
 cd $masterdir
 apt-ftparchive generate apt.conf-non-US
 
index bafca02ecdbc9905429421852112fbff09d945e8..949f50543a1fb7ad2f4b1e71682340c0c2e7f043 100755 (executable)
@@ -13,11 +13,6 @@ pg_dump projectb > /org/ftp.debian.org/backup/dump_$(date +%Y.%m.%d-%H:%M:%S)
 
 ################################################################################
 
-# temporary hack to work around the lack of an apt-utils & python-apt package
-export PYTHONPATH=$PYTHONPATH:/org/ftp.debian.org/scripts/apt/build/bin/
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/org/ftp.debian.org/scripts/apt/build/bin/
-export PATH=$PATH:/org/ftp.debian.org/scripts/apt/build/bin/
-
 cd $masterdir
 shania -v 
 shania -v -m -i $incoming
diff --git a/denise b/denise
index 9e8eebb5ca522bc693e1a3e3f4ac0b2409e69457..bde3776fed0d9d59bdc7ccb9208c640b7c4d4d9b 100755 (executable)
--- a/denise
+++ b/denise
@@ -2,7 +2,7 @@
 
 # Output override files for apt-ftparchive and indices/
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: denise,v 1.1 2001-01-10 05:58:26 troup Exp $
+# $Id: denise,v 1.2 2001-01-16 21:52:37 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
@@ -107,7 +107,7 @@ def main ():
                     override_type = ".debian-installer";
                 elif type == "dsc":
                     override_type = ".src";
-                filename = "override.%s.%s%s" % (override_suite, component, override_type);
+                filename = "override.%s.%s%s" % (override_suite, string.replace(component, "non-US/", ""), override_type);
                 file = utils.open_file(filename, 'w');
                 sys.stdout = file;
                 list(suite, component, type);
@@ -119,6 +119,7 @@ def main ():
     sys.stderr.write("Processing testing...\n");
     suite = "testing";
     suite_id = db_access.get_suite_id(suite);
+    override_suite = Cnf["Suite::%s::OverrideCodeName" % (suite)];
     for component in Cnf.SubTree("Component").List():
         if component == "mixed":
             continue;
@@ -132,7 +133,7 @@ def main ():
                 override_type = ".src";
             elif type == "udeb":
                 continue;
-            filename = "override.testing.%s%s" % (component, override_type);
+            filename = "override.%s.%s%s" % (override_suite, string.replace(component, "non-US/", ""), override_type);
             file = utils.open_file(filename, 'w');
             sys.stdout = file;
             for i in q.getresult():
diff --git a/docs/.cvsignore b/docs/.cvsignore
new file mode 100644 (file)
index 0000000..a423dbe
--- /dev/null
@@ -0,0 +1 @@
+manpage.*
diff --git a/docs/katie.ent b/docs/katie.ent
new file mode 100644 (file)
index 0000000..b7abf4d
--- /dev/null
@@ -0,0 +1,19 @@
+<!-- -*- mode: sgml; mode: fold -*- -->
+
+<!-- Boiler plate docinfo section -->
+<!ENTITY katie-docinfo "
+ <docinfo>
+   <address><email>james@nocrew.org</></address>
+   <author><firstname>James</> <surname>Troup</></>
+   <copyright><year>2000-2001</> <holder>James Troup</></>
+   <date>15 January 2001</>
+ </docinfo>
+"> 
+
+<!-- Boiler plate Author section -->
+<!ENTITY manauthor "
+ <RefSect1><Title>Author</>
+   <para>
+   katie was written by James Troup <email>james@nocrew.org</>.
+ </RefSect1>
+">
diff --git a/docs/melanie.1.sgml b/docs/melanie.1.sgml
new file mode 100644 (file)
index 0000000..4a23f08
--- /dev/null
@@ -0,0 +1,123 @@
+<!-- -*- mode: sgml; mode: fold -*- -->
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
+
+<!ENTITY % katieent SYSTEM "katie.ent">
+%katieent;
+
+]>
+
+<refentry>
+  &katie-docinfo;
+  
+  <refmeta>
+    <refentrytitle>melanie</>
+    <manvolnum>1</>
+  </refmeta>
+  
+  <!-- Man page title -->
+  <refnamediv>
+    <refname>melanie</>
+    <refpurpose>Utility to remove/add packages from suites</>
+  </refnamediv>
+
+  <!-- Arguments -->
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>melanie</>
+      <arg><option><replaceable>options</replaceable></></arg>
+      <arg choice="plain"><replaceable>package</replaceable></arg>
+      <arg><option><replaceable>...</replaceable></option></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  
+  <RefSect1><Title>Description</>
+    <para>   
+      <command>melanie</command> is the command line tool to add and remove packages from suites.
+
+  <RefSect1><Title>Options</>
+    
+    <VariableList>
+      <VarListEntry><term><option>-a/--architecture=<replaceable>architecture</replaceable></option></>
+       <ListItem><Para>
+           Restrict the packages being considered to the architecture(s) listed.
+      </VarListEntry>
+
+      <VarListEntry><term><option>-b/--binary</option></>
+       <ListItem><Para>
+           Only look at binary packages.
+      </VarListEntry>
+
+      <VarListEntry><term><option>-c/--component=<replaceable>component</replaceable></option></>
+       <ListItem><Para>
+           Restrict the packages being considered to those found in the component(s) listed.  The default is <literal>main</literal>.
+      </VarListEntry>
+
+      <VarListEntry><term><option>-d/--done=<replaceable>done</replaceable></option></>
+       <ListItem><Para>
+           Close the bug(s) listed on successful completion.
+      </VarListEntry>
+
+      <VarListEntry><term><option>-m/--reason=<replaceable>reason</replaceable></option></>
+       <ListItem><Para>
+           The reason for the removal or addition of the package(s).  This is a required option; if not provided an editor will be spawned so the reason can be added there.
+      </VarListEntry>
+
+      <VarListEntry><term><option>-n/--no-action</option></>
+       <ListItem><Para>
+           Don't actually do anything; just show what would be done.
+      </VarListEntry>
+
+      <VarListEntry><term><option>-p/--partial</option></>
+       <ListItem><Para>
+           Partial removal of a package, so the package is not removed from the overrides.  This option is implied by <option>-a/--architecture</option>.
+      </VarListEntry>
+
+      <VarListEntry><term><option>-s/--suite=<replaceable>suite</replaceable></option></>
+       <ListItem><Para>
+           Only add/remove the packages from the suite(s) listed.  The default is <literal>unstable</literal>
+      </VarListEntry>
+
+      <VarListEntry><term><option>-S/--source-only</option></>
+       <ListItem><Para>
+           Only look at source packages.
+      </VarListEntry>
+
+    </VariableList>
+  </RefSect1>
+
+    <refsect1>
+      <title>How packages are chosen</title>
+      <para>There are 3 methods for selecting packages.</para>
+      <itemizedlist>
+       <listitem>
+         <para>Source + Binary. (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>
+       </listitem>
+       <listitem>
+         <para>Source only.</para>
+         <para>Only source packages are searched; binary packages are ignored.  This mode is chosen by use of the <option>-S/--source</option> switch.</para>
+       </listitem>
+      </itemizedlist>
+    </refsect1>
+
+  <refsect1>
+    <title>Examples</title>
+    <para></para>
+  </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.
+  </RefSect1>
+
+  &manauthor;
+  
+</refentry>
diff --git a/jenna b/jenna
index b186ff7898a31e880da8136b0ef4a5f43516ba63..d2c8e17cd7bafebc8b0f33c7014fc85655dc3b35 100755 (executable)
--- a/jenna
+++ b/jenna
@@ -2,7 +2,7 @@
 
 # Generate file list which is then fed to apt-ftparchive to generate Packages and Sources files
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: jenna,v 1.2 2000-12-05 04:27:48 troup Exp $
+# $Id: jenna,v 1.3 2001-01-16 21:52:37 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
@@ -104,12 +104,6 @@ def generate_bin_list(suite, component, architecture, output, type, dislocated_f
         if dislocated_files.has_key(file_id):
             filename = dislocated_files[file_id];
         
-        # Hack to handle screwed up sid distro [FIXME: this may have issues, remove ASAP]
-        if not os.path.exists(filename):
-            sid_filename = string.replace(filename, "/woody/", "/potato/");
-            if os.path.exists(sid_filename):
-                filename = sid_filename;
-                
         if os.path.exists(filename):
             if packages.has_key(package):
                 if apt_pkg.VersionCompare(packages[package]["version"], version) == -1:
diff --git a/katie b/katie
index 7ce746c5b0c5fb262e1a98acc532023d74ca4d34..ebb52958bc127c4e7aaf6880980492d7c11ad548 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.17 2001-01-10 06:08:03 troup Exp $
+# $Id: katie,v 1.18 2001-01-16 21:52:37 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
@@ -121,6 +121,10 @@ def in_override_p (package, component, suite, binary_type):
     else:
         type = binary_type;
 
+    # Override suite name; used for example with proposed-updates
+    if Cnf.Find("Suite::%s::OverrideSuite" % (suite)) != "":
+        suite = Cnf["Suite::%s::OverrideSuite" % (suite)];
+
     # Avoid <undef> on unknown distributions
     suite_id = db_access.get_suite_id(suite);
     if suite_id == -1:
@@ -161,7 +165,10 @@ def check_changes(filename):
         return 0;
 
     # Parse the Files field from the .changes into another dictionary [FIXME need to trap errors as above]
-    files = utils.build_file_list(changes, "")
+    try:
+        files = utils.build_file_list(changes, "");
+    except utils.changes_parse_error_exc, line:
+        reject_message = "Rejected: error parsing changes file '%s', can't grok: %s.\n" % (filename, line);
 
     # Check for mandatory fields
     for i in ("source", "binary", "architecture", "version", "distribution","maintainer", "files"):
@@ -439,6 +446,9 @@ def check_dsc ():
             except utils.no_files_exc:
                 reject_message = reject_message + "Rejected: no Files: field in .dsc file.\n";
                 continue;
+            except utils.changes_parse_error_exc, line:
+                reject_message = "Rejected: error parsing .dsc file '%s', can't grok: %s.\n" % (filename, line);
+                continue;
 
             # Try and find all files mentioned in the .dsc.  This has
             # to work harder to cope with the multiple possible
@@ -451,6 +461,16 @@ def check_dsc ():
                     # Check the file does not already exist in the archive
                     if not changes.has_key("stable upload"):
                         q = projectB.query("SELECT f.id FROM files f, location l WHERE (f.filename ~ '/%s$' OR f.filename = '%s') AND l.id = f.location" % (utils.regex_safe(dsc_file), dsc_file));
+
+                        # "It has not broken them.  It has fixed a
+                        # brokenness.  Your crappy hack exploited a
+                        # bug in the old dinstall.
+                        #
+                        # "(Come on!  I thought it was always obvious
+                        # that one just doesn't release different
+                        # files with the same name and version.)"
+                        #                        -- ajk@ on d-devel@l.d.o
+
                         if q.getresult() != []:
                             reject_message = reject_message + "Rejected: can not overwrite existing copy of '%s' already in the archive.\n" % (dsc_file)
                 elif dsc_file[-12:] == ".orig.tar.gz":
@@ -534,7 +554,7 @@ def check_diff ():
             file = gzip.GzipFile(filename, 'r');
             for line in file.readlines():
                 if re_bad_diff.search(line):
-                    reject_message = reject_message + "Rejected: source package was produced by broken dpkg 1.8.1[.1]; please rebuild with later version.\n";
+                    reject_message = reject_message + "Rejected: [dpkg-sucks] source package was produced by a broken version of dpkg-dev 1.8.x; please rebuild with >= 1.8.3 version installed.\n";
                     break;
 
     if string.find(reject_message, "Rejected:") != -1:
index 06511d79ef384782bcb92a74647144c62ad7a3f9..d3c169f44518c523e68d4d60f94485e2c8afa835 100644 (file)
@@ -41,6 +41,18 @@ Heidi
 
 };
 
+Tea
+{
+
+  Options
+  {
+    Debug "";
+    Help "";
+    Version "";
+   };
+
+};
+
 Jenna
 {
 
@@ -106,7 +118,6 @@ Melanie
     Component "";
     Done "";
     No-Action "";
-    Orphan "";
     Partial "";
     Reason "";
     Source-Only "";
@@ -114,7 +125,7 @@ Melanie
    };
 
    MyEmailAddress "Debian Archive Maintenance <ftpmaster@ftp-master.debian.org>";
-   LogFile "/home/troup/public_html/removals.txt";
+   LogFile "/org/ftp.debian.org/web/removals.txt";
 };
 
 Neve
@@ -136,7 +147,7 @@ Rhona
    };
 
   // How long (in seconds) dead packages are left before being killed
-  StayOfExecution 172800; // 2 days
+  StayOfExecution 0; // 0 days
   MorgueSubDir "rhona";
   OverrideFilename "override.source-only";
 };
@@ -219,6 +230,7 @@ Suite
        Description "Proposed Updates for Debian 2.2r3 - Not Released";
        CodeName "proposed-updates";
        OverrideCodeName "potato";
+       OverrideSuite "stable";
        Priority "2";
   };
 
@@ -244,7 +256,7 @@ Suite
        Version "2.3-testing";
        Origin "Debian";
        Description "Debian 2.3 Testing distribution - Not Released";
-       OverrideCodeName "testing";
+       OverrideCodeName "woody";
        Priority "3";
   };
 
@@ -449,7 +461,7 @@ Location
   /org/ftp.debian.org/ftp/pool/
     {
       Archive "ftp-master";
-      Type "pool"
+      Type "pool";
     };
 
 };
index a1b7f3626a26021b584a4a19978ebbab17f6e074..c2172f942fbfbbbd36a795b7333e113318c3b229 100644 (file)
@@ -41,6 +41,18 @@ Heidi
 
 };
 
+Tea
+{
+
+  Options
+  {
+    Debug "";
+    Help "";
+    Version "";
+   };
+
+};
+
 Jenna
 {
 
@@ -75,6 +87,47 @@ Shania
  MorgueSubDir "shania";
 };
 
+Natalie
+{
+
+  Options
+  {
+    Debug "";
+    Help "";
+    Version "";
+    Component "main";
+    List "";
+    Suite "unstable";
+    Set "";
+    Type "deb";
+   };
+
+ ComponentPosition "suffix"; // Whether the component is prepended or appended to the section name
+};
+
+Melanie
+{
+
+  Options
+  {
+    Debug "";
+    Help "";
+    Version "";
+    Architecture "";
+    Binary-Only "";
+    Component "";
+    Done "";
+    No-Action "";
+    Partial "";
+    Reason "";
+    Source-Only "";
+    Suite "unstable";
+   };
+
+   MyEmailAddress "Debian Archive Maintenance <ftpmaster@ftp-master.debian.org>";
+   LogFile "/home/troup/public_html/removals.txt";
+};
+
 Neve
 {
 
@@ -202,6 +255,7 @@ Suite
        Version "2.3-testing";
        Origin "Debian";
        Description "Debian 2.3 Testing distribution - Not Released";
+       OverrideCodeName "woody";
        Priority "3";
   };
 
@@ -233,8 +287,8 @@ Suite
        Version "2.3";
        Origin "Debian";
        Description "Debian 2.3 Unstable - Not Released";
-       CodeName "woody";
-       OverrideCodeName "woody";
+       CodeName "sid";
+       OverrideCodeName "sid";
        Priority "4";
   };
 
@@ -311,6 +365,34 @@ Component
 
 };
 
+Section
+{
+
+  "non-US" "";
+
+};
+
+Priority
+{
+
+  "required" 1;
+  "important" 2;
+  "standard" 3;
+  "optional" 4;
+  "extra" 5;
+  "source" 0; // i.e. unused
+
+};
+
+OverrideType
+{
+
+  "deb" "";
+  "udeb" "";
+  "dsc" "";
+
+};
+
 Location
 {
   
@@ -330,7 +412,7 @@ Location
        {
          Stable "";
          Unstable "";
-       };
+        };
       Type "legacy";
     };
 
diff --git a/melanie b/melanie
index a4ec6b097f3fa0510371a14cba7cb2aaa2e8152a..dfaaa12e8d4fd64fb2be5fe1a335fe25ad058e24 100755 (executable)
--- a/melanie
+++ b/melanie
@@ -2,7 +2,7 @@
 
 # General purpose archive tool for ftpmaster
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: melanie,v 1.1 2001-01-10 05:58:26 troup Exp $
+# $Id: melanie,v 1.2 2001-01-16 21:52:37 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
@@ -63,7 +63,6 @@ def main ():
                  ('d',"done","Melanie::Options::Done", "HasArg"), # Bugs fixed
                  ('m',"reason", "Melanie::Options::Reason", "HasArg"), # Hysterical raisins; -m is old-dinstall option for rejection reason
                  ('n',"no-action","Melanie::Options::No-Action"),
-                 ('o',"orphan", "Melanie::Options::Orphan"),
                  ('p',"partial", "Melanie::Options::Partial"),
                  ('s',"suite","Melanie::Options::Suite", "HasArg"),
                  ('S',"source-only", "Melanie::Options::Source-Only"),
@@ -329,6 +328,11 @@ master archive (ftp-master.debian.org) and will not propagate to any
 mirrors (ftp.debian.org included) until the next cron.daily run at the
 earliest.
 
+Bugs which have been reported against this package are not automatically
+removed from the Bug Tracking System.  Please check all open bugs and
+close them or re-assign them to another package if the removed package
+was superseded by another one.
+
 Thank you for reporting the bug, which will now be closed.  If you
 have further comments please address them to %s@bugs.debian.org.
 
index 62c924bb864ef9be277dd3ee4d81c16fe636bc5b..0cf69e48e43762e32127cf8b3ce84818225f6eb4 100644 (file)
@@ -1,4 +1,8 @@
 base           General bugs in the base system
+install                General bugs in the base system
+installation   General bugs in the base system
+cdrom          General bugs in the base system
+boot-floppy    General bugs in the base system
 spam           Spam (reassign spam to here so we can complain about it)
 press       Press release issues
 kernel         Problems with the Linux kernel, or that shipped with Debian
@@ -6,6 +10,7 @@ project                Problems related to Project administration
 general                General problems (e.g., that many manpages are mode 755)
 dpkg-iwj    The dpkg branch maintained by Ian Jackson
 slink-cd       Slink CD
+potato-cd      Potato CD
 listarchives   Problems with the WWW mailing list archives
 qa.debian.org  The qa group
 ftp.debian.org Problems with the FTP site
index 99d8f705ec9dede282c945ef2013699eff986ee5..7f09115c8625546fae55f3e2805bf6016b5ddd93 100644 (file)
@@ -1,4 +1,8 @@
 base                   Enrique Zanardi <sr1-boot-floppies@debian.org>
+install                        Enrique Zanardi <sr1-boot-floppies@debian.org>
+installation           Enrique Zanardi <sr1-boot-floppies@debian.org>
+cdrom                  Enrique Zanardi <sr1-boot-floppies@debian.org>
+boot-floppy            Enrique Zanardi <sr1-boot-floppies@debian.org>
 press                  press@debian.org
 bugs.debian.org                Darren O. Benham and others <owner@bugs.debian.org>
 ftp.debian.org         James Troup and others <ftpmaster@debian.org>
@@ -12,6 +16,7 @@ kernel                        Herbert Xu <herbert@debian.org>
 lists.debian.org       Martin Schulze and others <listmaster@lists.debian.org>
 spam                   spam@debian.org
 slink-cd               Steve McIntyre <stevem@chiark.greenend.org.uk>
+potato-cd              Steve McIntyre <stevem@chiark.greenend.org.uk>
 dpkg-iwj               Ian Jackson <dpkg-maint@chiark.greenend.org.uk>
 wnpp                   wnpp@debian.org
 cdimage.debian.org     debian-cd@lists.debian.org
diff --git a/tea b/tea
index c8ca3ae647a1399bd2438cc2014a57e62df88cce..dc8aade08447ddd5d25896533c5b780fc14e5c94 100755 (executable)
--- a/tea
+++ b/tea
@@ -2,7 +2,7 @@
 
 # Sanity check the database
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: tea,v 1.2 2001-01-10 06:00:12 troup Exp $
+# $Id: tea,v 1.3 2001-01-16 21:52:37 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
@@ -25,7 +25,7 @@
 
 ################################################################################
 
-import pg, sys, os
+import pg, sys, os, string, stat
 import utils, db_access
 import apt_pkg;
 
@@ -33,34 +33,66 @@ import apt_pkg;
 
 Cnf = None;
 projectB = None;
+db_files = {};
+waste = 0.0;
+excluded = {};
+
+def process_dir (arg, dirname, filenames):
+    global waste, db_files, excluded;
+    
+    if string.find(dirname, '/disks-') != -1 or string.find(dirname, 'upgrade-') != -1: 
+        return;
+    # hack; can't handle .changes files
+    if string.find(dirname, 'proposed-updates') != -1:
+        return;
+    for name in filenames:
+        filename = os.path.abspath(dirname+'/'+name);
+        filename = string.replace(filename, 'potato-proposed-updates', 'proposed-updates');
+        if os.path.isfile(filename) and not os.path.islink(filename) and not db_files.has_key(filename) and not excluded.has_key(filename):
+            waste = waste + os.stat(filename)[stat.ST_SIZE];
+            print filename
 
 ################################################################################
 
 def main ():
-    global Cnf, projectB;
+    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","Claire::Options::Debug", "IntVal"),
-                 ('h',"help","Claire::Options::Help"),
-                 ('v',"version","Claire::Options::Version")];
+    Arguments = [('d',"debug","Tea::Options::Debug", "IntVal"),
+                 ('h',"help","Tea::Options::Help"),
+                 ('v',"version","Tea::Options::Version")];
 
     apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv);
-
     projectB = pg.connect('projectb', 'localhost');
-
     db_access.init(Cnf, projectB);
 
+    print "Building list of Database files...";
+
     q = projectB.query("SELECT l.path, f.filename FROM files f, location l WHERE f.location = l.id")
     ql = q.getresult();
 
+    db_files = {};
     for i in ql:
-       filename = i[0] + i[1];
+       filename = os.path.abspath(i[0] + i[1]);
+        db_files[filename] = "";
         if os.access(filename, os.R_OK) == 0:
-            print filename
+            sys.stderr.write("W: '%s' doesn't exist.\n" % (filename));
+
+    file = utils.open_file(Cnf["Dir::OverrideDir"]+'override.unreferenced','r');
+    for filename in file.readlines():
+        filename = filename[:-1];
+        excluded[filename] = "";
+
+    print "Checking against existent files...";
+
+    os.path.walk(Cnf["Dir::RootDir"]+'dists/', process_dir, None);
+
+    print
+    print "%s wasted..." % (utils.size_type(waste));
 
 #######################################################################################
 
index 122b8dd7ff16ef484450f5aed07a0431915ce1d2..8a8c8e93440a22d4c39b881930dd8a1a515ccb28 100644 (file)
--- a/utils.py
+++ b/utils.py
@@ -1,6 +1,6 @@
 # Utility functions
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: utils.py,v 1.10 2000-12-19 17:23:03 troup Exp $
+# $Id: utils.py,v 1.11 2001-01-16 21:52:37 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
@@ -105,10 +105,13 @@ def build_file_list(changes, dsc):
             break
         s = string.split(i)
         section = priority = component = ""
-        if dsc != "":
-            (md5, size, name) = s
-        else:
-            (md5, size, section, priority, name) = s
+        try:
+            if dsc != "":
+                (md5, size, name) = s
+            else:
+                (md5, size, section, priority, name) = s
+        except ValueError:
+            raise changes_parse_error_exc, i
 
         if section == "": section = "-"
         if priority == "": priority = "-"
index 96bf71c93c0a05cf1e80df6c0414cbabafac52c5..291cec96ba4eed1dea099de28e0628b63669bb91 100644 (file)
@@ -14,7 +14,7 @@ packagesfiles=packagesfiles-non-US
 sourcesfiles=sourcesfiles-non-US
 contentsfiles=contentsfiles-non-US
 
-copyoverrides="potato potato.contrib potato.non-free woody woody.contrib woody.non-free"
+copyoverrides="potato.contrib potato.contrib.src potato.main potato.main.src potato.non-free potato.non-free.src sid.contrib sid.contrib.src sid.main sid.main.src sid.non-free sid.non-free.src testing.contrib testing.contrib.src testing.main testing.main.src testing.non-free testing.non-free.src"
 
 PATH=$masterdir:$PATH
 umask 022