From 4b41dc06229eed89f52f397fc7df5d665fa092cf Mon Sep 17 00:00:00 2001 From: James Troup Date: Tue, 16 Jan 2001 21:52:37 +0000 Subject: [PATCH] sync --- THANKS | 2 +- TODO | 10 ++- alyson | 19 ++++-- apt.conf | 4 +- apt.conf-non-US | 4 +- charisma | 6 +- cindy | 124 ++++++++++++++++++++++++++++++++++++ contrib/hack.1 | 6 +- cron.daily | 7 +- cron.daily-non-US | 9 +++ cron.weekly | 5 -- denise | 7 +- docs/.cvsignore | 1 + docs/katie.ent | 19 ++++++ docs/melanie.1.sgml | 123 +++++++++++++++++++++++++++++++++++ jenna | 8 +-- katie | 26 +++++++- katie.conf | 22 +++++-- katie.conf-non-US | 88 ++++++++++++++++++++++++- melanie | 8 ++- pseudo-packages.description | 5 ++ pseudo-packages.maintainers | 5 ++ tea | 52 ++++++++++++--- utils.py | 13 ++-- vars-non-US | 2 +- 25 files changed, 503 insertions(+), 72 deletions(-) create mode 100755 cindy create mode 100644 docs/.cvsignore create mode 100644 docs/katie.ent create mode 100644 docs/melanie.1.sgml diff --git a/THANKS b/THANKS index cee3b67d..62a9dd7d 100644 --- a/THANKS +++ b/THANKS @@ -15,8 +15,8 @@ Guy Maor Jason Gunthorpe Joey Hess Mark Brown +Martin Michlmayr Michael Beattie Michael Mattice Robert Bihlmeyer Roland Bauerschmidt - diff --git a/TODO b/TODO index 28567aa2..4f7cd505 100644 --- 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 5e602ecd..c6c40198 100755 --- a/alyson +++ b/alyson @@ -2,7 +2,7 @@ # Sync the ISC configuartion file and the SQL database # Copyright (C) 2000 James Troup -# $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"); diff --git a/apt.conf b/apt.conf index d1b6336e..361cdbc7 100644 --- 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" diff --git a/apt.conf-non-US b/apt.conf-non-US index da7f5d44..65b64da1 100644 --- a/apt.conf-non-US +++ b/apt.conf-non-US @@ -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" diff --git a/charisma b/charisma index a9fc2005..e46e1e15 100755 --- 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 -# $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 index 00000000..af437038 --- /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 +# $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() + diff --git a/contrib/hack.1 b/contrib/hack.1 index 6a123fdf..473784c4 100755 --- a/contrib/hack.1 +++ b/contrib/hack.1 @@ -2,7 +2,7 @@ # Quick hack to import override files # Copyright (C) 2000 James Troup -# $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); ####################################################################################### diff --git a/cron.daily b/cron.daily index 4ce8f617..0acd0b96 100755 --- a/cron.daily +++ b/cron.daily @@ -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 diff --git a/cron.daily-non-US b/cron.daily-non-US index bfcb880f..4c0a6966 100755 --- a/cron.daily-non-US +++ b/cron.daily-non-US @@ -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 diff --git a/cron.weekly b/cron.weekly index bafca02e..949f5054 100755 --- a/cron.weekly +++ b/cron.weekly @@ -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 9e8eebb5..bde3776f 100755 --- a/denise +++ b/denise @@ -2,7 +2,7 @@ # Output override files for apt-ftparchive and indices/ # Copyright (C) 2000 James Troup -# $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 index 00000000..a423dbea --- /dev/null +++ b/docs/.cvsignore @@ -0,0 +1 @@ +manpage.* diff --git a/docs/katie.ent b/docs/katie.ent new file mode 100644 index 00000000..b7abf4d9 --- /dev/null +++ b/docs/katie.ent @@ -0,0 +1,19 @@ + + + + +
james@nocrew.org
+ James Troup + 2000-2001 James Troup + 15 January 2001 + +"> + + +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 index 00000000..4a23f089 --- /dev/null +++ b/docs/melanie.1.sgml @@ -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 + There are 3 methods for selecting packages. + + + Source + Binary. (default) + In this mode melanie 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. + + + Binary only. + Only binary packages are searched; source packages are ignored. This mode is chosen by use of the switch. + + + Source only. + Only source packages are searched; binary packages are ignored. This mode is chosen by use of the switch. + + + + + + Examples + + + + 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 b186ff78..d2c8e17c 100755 --- 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 7ce746c5..ebb52958 100755 --- 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: diff --git a/katie.conf b/katie.conf index 06511d79..d3c169f4 100644 --- a/katie.conf +++ b/katie.conf @@ -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"; }; }; diff --git a/katie.conf-non-US b/katie.conf-non-US index a1b7f362..c2172f94 100644 --- a/katie.conf-non-US +++ b/katie.conf-non-US @@ -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 a4ec6b09..dfaaa12e 100755 --- 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. diff --git a/pseudo-packages.description b/pseudo-packages.description index 62c924bb..0cf69e48 100644 --- a/pseudo-packages.description +++ b/pseudo-packages.description @@ -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 diff --git a/pseudo-packages.maintainers b/pseudo-packages.maintainers index 99d8f705..7f09115c 100644 --- a/pseudo-packages.maintainers +++ b/pseudo-packages.maintainers @@ -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 c8ca3ae6..dc8aade0 100755 --- 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)); ####################################################################################### diff --git a/utils.py b/utils.py index 122b8dd7..8a8c8e93 100644 --- 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 = "-" diff --git a/vars-non-US b/vars-non-US index 96bf71c9..291cec96 100644 --- a/vars-non-US +++ b/vars-non-US @@ -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 -- 2.39.2