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>
-
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
===================================================================================================
# 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
################################################################################
-import pg, sys
+import pg, sys, string
import utils, db_access
import apt_pkg;
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");
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"
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"
# 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
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:
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:
--- /dev/null
+#!/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()
+
# 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
continue;
else:
component = x[2];
- if suite == "woody":
+ if suite == "sid":
suite = "unstable";
elif suite == "potato":
suite = "stable";
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);
#######################################################################################
################################################################################
-# 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 | \
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
# 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
################################################################################
-# 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
# 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
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);
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;
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():
--- /dev/null
+<!-- -*- 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>
+">
--- /dev/null
+<!-- -*- 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>
# 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
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:
# 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
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:
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"):
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
# 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":
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:
};
+Tea
+{
+
+ Options
+ {
+ Debug "";
+ Help "";
+ Version "";
+ };
+
+};
+
Jenna
{
Component "";
Done "";
No-Action "";
- Orphan "";
Partial "";
Reason "";
Source-Only "";
};
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
};
// 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";
};
Description "Proposed Updates for Debian 2.2r3 - Not Released";
CodeName "proposed-updates";
OverrideCodeName "potato";
+ OverrideSuite "stable";
Priority "2";
};
Version "2.3-testing";
Origin "Debian";
Description "Debian 2.3 Testing distribution - Not Released";
- OverrideCodeName "testing";
+ OverrideCodeName "woody";
Priority "3";
};
/org/ftp.debian.org/ftp/pool/
{
Archive "ftp-master";
- Type "pool"
+ Type "pool";
};
};
};
+Tea
+{
+
+ Options
+ {
+ Debug "";
+ Help "";
+ Version "";
+ };
+
+};
+
Jenna
{
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
{
Version "2.3-testing";
Origin "Debian";
Description "Debian 2.3 Testing distribution - Not Released";
+ OverrideCodeName "woody";
Priority "3";
};
Version "2.3";
Origin "Debian";
Description "Debian 2.3 Unstable - Not Released";
- CodeName "woody";
- OverrideCodeName "woody";
+ CodeName "sid";
+ OverrideCodeName "sid";
Priority "4";
};
};
+Section
+{
+
+ "non-US" "";
+
+};
+
+Priority
+{
+
+ "required" 1;
+ "important" 2;
+ "standard" 3;
+ "optional" 4;
+ "extra" 5;
+ "source" 0; // i.e. unused
+
+};
+
+OverrideType
+{
+
+ "deb" "";
+ "udeb" "";
+ "dsc" "";
+
+};
+
Location
{
{
Stable "";
Unstable "";
- };
+ };
Type "legacy";
};
# 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
('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"),
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.
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
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
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>
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
# 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
################################################################################
-import pg, sys, os
+import pg, sys, os, string, stat
import utils, db_access
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));
#######################################################################################
# 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
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 = "-"
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