]> err.no Git - dak/commitdiff
add changelog back
authorAnthony Towns <aj@azure.humbug.org.au>
Mon, 14 Nov 2005 07:29:17 +0000 (07:29 +0000)
committerAnthony Towns <aj@azure.humbug.org.au>
Mon, 14 Nov 2005 07:29:17 +0000 (07:29 +0000)
ChangeLog [new file with mode: 0644]

diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..6c5f73f
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,3715 @@
+2005-05-28  James Troup  <james@nocrew.org>
+
+       * helena (process_changes_files): use MTIME rather than CTIME (the
+       C's not for 'creation', stupid).
+       * lisa (sort_changes): likewise.
+
+       * jennifer (check_distributions): use has_key rather than an 'in'
+       test which doesn't work with python2.1.  [Probably by AJ]
+
+2005-03-19  James Troup  <james@nocrew.org>
+
+       * rene (main): use Suite::<suite>::UdebComponents to determine
+       what components have udebs rather than assuming only 'main' does.
+
+2005-03-18  James Troup  <james@nocrew.org>
+
+       * utils.py (rfc2047_encode): use codecs.lookup() rather than
+       encodings.<encoding>.Codec().decode() as encodings.utf_8 no longer
+       has a Codec() module in python2.4.  Thanks to Andrew Bennetts
+       <andrew@ubuntu.com>.
+
+2005-03-06  Joerg Jaspert  <ganneff@debian.org>
+
+       * helena: add -n/--new HTML output option and improved sorting
+       options.
+
+2005-03-06  Ryan Murray  <rmurray@debian.org>
+
+       * shania(main): use Cnf::Dir::Reject instead of REJECT
+
+2005-02-08  James Troup  <james@nocrew.org>
+
+       * rene (main): add partial NBS support by checking that binary
+       packages are built by their real parent and not some random
+       stranger.
+       (do_partial_nbs): likewise.
+
+2005-01-18  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.build_summaries): avoid leaking file handle when
+       extracting package description.
+       (Katie.force_reject): remember and close each file descriptor we
+       use.
+       (Katie.do_reject): s/file/temp_fh/ to avoid pychecker warning.
+       s/reason_file/reason_fd/ because it's a file descriptor.
+       (Katie.check_dsc_against_db): avoid leaking file handle whenever
+       invoking apt_pkg.md5sum().
+
+       * jennifer (check_deb_ar): new function: sanity check the ar
+       contents of a .deb.
+       (check_files): use it.
+       (check_timestamps): check for data.tar.bz2 if data.tar.gz can't be
+       found.
+       (check_files): accept 'raw-installer' as an alias for 'byhand'.
+
+2005-01-14  Anthony Towns  <ajt@debian.org>
+
+       * kelly: when UNACCEPTing, don't double up the "Rejecting:"
+
+       * propup stuff (thanks to Andreas Barth)
+       * katie.conf: add stable MustBeOlderThan testing, add -security
+         propup
+       * jennifer: set distribution-version in .katie if propup may be needed
+       * katie.py: add propogation to cross_suite_version_check
+
+2004-11-27  James Troup  <james@nocrew.org>
+
+       * nina: new script to split monolithic queue/done into date-based
+       hierarchy.
+
+       * rene (usage): document -s/--suite.
+       (add_nbs): use .setdefault().
+       (do_anais): likewise.
+       (do_nbs): don't set a string to "" and then += it.
+       (do_obsolete_source): new function - looks for obsolete source
+       packages (i.e source packages whose binary packages are ALL a)
+       claimed by someone else and b) newer when built from the other
+       source package).
+       (main): support -s/--suite.  Add 'obsolete source' to both 'daily'
+       and 'full' check modes.  Check for obsolete source packages.
+       linux-wlan-ng has been fixed - remove hideous bodge.
+
+       * jennifer (check_distributions): support 'reject' suite map type.
+
+       * utils.py (validate_changes_file_arg): s/file/filename/.
+       s/fatal/require_changes/.  If require_changes is -1, ignore errors
+       and return the .changes filename regardless.
+       (re_no_epoch): s/\*/+/ as there must be a digit in an epoch.
+       (re_no_revision): don't escape '-', it's not a special character.
+       s/\*/+/ as there must be at least one non-dash character after the
+       dash in a revision.  Thanks to Christian Reis for noticing both of
+       these.
+
+       * ashley (main): pass require_changes=-1 to
+       utils.validate_changes_file_arg().
+
+       * pseudo-packages.maintainers (kernel): switch to 'Debian Kernel
+       Team <debian-kernel@lists.debian.org>'.
+
+       * katie.py (Katie.in_override_p): fix .startswith() usage.
+
+       * katie.conf (Dinstall::DefaultSuite): add as 'unstable'.
+       (Lauren::MoreInfoURL): update to 3.0r3.
+       (Suite::Stable::Version): likewise.
+       (Suite::Stable::Description): likewise.
+
+       * cron.daily: disable automatic task override generation.
+
+       * cindy (process): restrict "find all packages" queries by
+       component.  Respect Options["No-Action"].
+       (main): add -n/--no-action support.  Only run on unstable.  Rename
+       type to otype (pychecker).
+
+2004-11-27  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * katie.conf (Billie::BasicTrees): add all architectures.
+       (Billie::CombinationTrees): remove 'welovehp' and 'embedded', add
+       'everything'.
+
+       * cron.daily: Update a 'current' symlink when creating the
+       post-daily-cron-job database backup to aid mirroring to merkel.
+       Run billie.
+
+       * billie (BillieTarget.poolish_match): handle .udeb too.
+
+2004-10-13  Ryan Murray  <rmurray@debian.org>
+
+       * amber (do_upload): Sort changes files in "katie" order so that
+         source always arrives before binary-only rebuilds
+       
+2004-10-05  James Troup  <james@nocrew.org>
+
+       * jennifer (check_dsc): correct reject message on invalid
+       Maintainer field.
+
+2004-09-20  James Troup  <james@nocrew.org>
+
+       * alicia: remove unused 'pwd' import.
+
+       * tea (check_override): underline suite name in output properly.
+
+       * rene (main): read a compressed Packages file.
+       * tea (validate_packages): likewise.
+
+       * katie.py (re_fdnic): add 'r' prefix.
+       (re_bin_only_nmu_of_mu): likewise.
+       (re_bin_only_nmu_of_nmu): likewise.
+
+       * madison (main): retrieve component information too and display
+       it if it's not 'main'.
+       * melanie (reverse_depends_check): likewise.
+
+       * utils.py (pp_dep): renamed...
+       (pp_deps): ... to this.
+       * jeri (check_dep): update calls to utils.pp_deps().
+       * melanie (reverse_depends_check): likewise.
+
+       * jennifer (check_changes): move initalization of email variables
+       from here...
+       (process_it): ...to here as we no longer always run
+       check_changes().  Don't bother to initialize
+       changes["architecture"].
+
+       * denise (list): renamed to...
+       (do_list): ...this to avoid name clash with builtin 'list'.
+       Similarly, s/file/output_file/, s/type/otype/.  Use .setdefault()
+       for dictionaries.
+       (main): Likewise for name clash avoidance and also
+       s/override_type/suffix/.  Adjust call to do_list().
+
+2004-09-01  Ryan Murray  <rmurray@debian.org>
+
+       * tea (check_files): check the pool/ directory instead of dists/
+
+2004-08-04  James Troup  <james@nocrew.org>
+
+       * jenna (cleanup): use .setdefault() for dictionaries.
+       (write_filelists): likewise.
+
+       (write_filelists): Use utils.split_args() not split() to split
+       command line arguments.
+       (stable_dislocation_p): likewise.
+
+       (write_filelists): Add support for mapping side of suite-based
+       "Arch: all mapping".
+       (do_da_do_da): ensure that if we're not doing all suites that we
+       process enough to be able correct map arch: all packages.
+
+       * utils.py (cant_open_exc): correct exception string,
+       s/read/open/, s/.$//.
+
+       * templates/amber.advisory: update to match reality a little
+       better.
+
+       * melanie (reverse_depends_check): read Packages.gz rather than
+       Packages.
+
+       * jennifer (check_files): check for unknown component before
+       checking for NEWness.
+
+       * katie.py (Katie.in_override_p): use .startswith in favour of a
+       slice.
+
+       * docs/melanie.1.sgml: document -R/--rdep-check.
+
+2004-07-12  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * billie (main): Make the verbatim lists include all the README
+         elements.
+       * docs/README.names: Add billie in (correcting oversight)
+
+2004-07-01  James Troup  <james@nocrew.org>
+
+       * emilie (main): handle woody's case-sensitive python-ldap,
+       s/keyfingerprint/keyFingerPrint/.
+
+2004-06-25  James Troup  <james@nocrew.org>
+
+       * debian/control (Depends): add dpkg-dev since jennifer uses
+       dpkg-source.
+
+2004-06-24  James Troup  <james@nocrew.org>
+
+       * melanie (main): s/file/temp_file/ and close file handle before
+       removing the temporary file.
+       (main): don't warn about needing a --carbon-copy if in no-action
+       mode.
+
+       * rene (do_nbs): pcmcia-cs has been fixed - remove hideous bodge.
+       (main): likewise.
+
+       * test/006/test.py (main): check bracketed email-only form.
+
+       * utils.py (fix_maintainer): if the Maintainer string is bracketed
+       email-only, strip the brackets so we don't end up with
+       <<james@nocrew.org>>.
+
+2004-06-20  James Troup  <james@nocrew.org>
+
+       * jennifer (process_it): only run check_changes() if
+       check_signature() returns something.  (Likewise)
+
+       * utils.py (changes_compare): if there's no changes["version"] use
+       "0" rather than None.  (Avoids a crash on unsigned changes file.)
+
+2004-06-17  Martin Michlmayr  <tbm@cyrius.com>
+
+       * jeri (pp_dep): moved from here to ...
+       * utils.py (pp_dep): here.
+
+       * melanie (main): add reverse dependency checking.
+
+2004-06-17  James Troup  <james@nocrew.org>
+
+       * jennifer (check_dsc): s/dsc_whitespace_rules/signing_rules/.
+       * tea (check_dscs): likewise.
+
+       * utils.py (parse_changes): s/dsc_whitespace_rules/signing_rules/,
+       change from boolean to a variable with 3 possible values, 0 and 1
+       as before, -1 means don't require a signature.  Makes
+       parse_changes() useful for parsing arbitary RFC822-style files,
+       e.g. 'Release' files.
+       (check_signature): add support for detached signatures by passing
+       the files the signature is for as an optional third argument.
+       s/filename/sig_filename/g.  Add a fourth optional argument to
+       choose the keyring(s) to use.  Don't os.path.basename() the
+       sig_filename before checking it for taint.
+       (re_taint_free): allow '/'.
+
+2004-06-11  James Troup  <james@nocrew.org>
+
+       * tea (check_files): make override.unreadable optional.
+       (validate_sources): close the Sources file handle.
+
+       * docs/README.first: clarify that 'alyson' and running
+       add_constraints.sql by hand is something you only want to do if
+       you're not running 'neve'.
+
+       * docs/README.config (Location::$LOCATION::Suites): document.
+
+       * db_access.py (do_query): also print out the result of the query.
+
+2004-06-10  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.cross_suite_version_check): post-woody versions
+       of python-apt's apt_pkg.VersionCompare() function apparently
+       returns variable integers for less than or greater than results -
+       update our result checking to match.
+       * jenna (resolve_arch_all_vs_any): likewise.
+       * charisma (main): likewise.
+
+2004-06-09  James Troup  <james@nocrew.org>
+
+       * jennifer (process_it): s/changes_valid/valid_changes_p/.  Add
+       valid_dsc_p and don't run check_source() if check_dsc() failed.
+       (check_dsc): on fatal failures return 0 so check_source() isn't
+       run (since it makes fatal assumptions about the presence of
+       mandatory .dsc fields).  
+       Remove unused and obsolete re_bad_diff and re_is_changes regexps.
+
+2004-05-07  James Troup  <james@nocrew.org>
+
+       * katie.conf (Rhona::OverrideFilename): unused and obsolete, remove.
+       * katie.conf-non-US (Rhona::OverrideFilename): likewise.
+
+       * katie.conf (Dir::Override): remove duplicate definition.
+
+       * neve (get_or_set_files_id): add an always-NULL last_used column
+       to output.
+
+2004-04-27  James Troup  <james@nocrew.org>
+
+       * apt.conf-security (tree "dists/stable/updates"): add
+       ExtraOverride - noticed by Joey Hess (#246050).
+       (tree "dists/testing/updates"): likewise.
+
+2004-04-20  James Troup  <james@nocrew.org>
+
+       * jennifer (check_files): check for existing .changes or .katie
+       files of the same name in the Suite::<suite>::Copy{Changes,Katie}
+       directories.
+
+2004-04-19  James Troup  <james@nocrew.org>
+
+       * jennifer (check_source): handle failure to remove the temporary
+        directory (used for source tree extraction) better, specifically:
+        if we fail with -EACCES, chmod -R u+rwx the temporary directory
+        and try again and if that works, REJECT the package.
+
+2004-04-17  James Troup  <james@nocrew.org>
+
+       * docs/madison.1.sgml: document -b/--binary-type,
+       -g/--greaterorequal and -G/--greaterthan.
+
+       * madison (usage): -b/--binary-type only takes a single argument.
+       Document -g/--greaterorequal and -G/--greaterthan.
+       (main): add support for -g/--greaterorequal and -G/--greaterthan.
+
+2004-04-12  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * billie: Cleaned up a load of comments, added /README.non-US to
+         the verbatim matches list.
+
+2004-04-07  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * utils.py (size_type): Make it use real binary megabytes and
+         kilobytes, instead of the marketing terms used before.
+
+2004-04-07  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.check_dsc_against_db): in the case we're
+       ignoring an identical-to-existing orig.tar.gz remember the path to
+       the existent version in pkg.orig_tar_gz.  Adjust query to grab
+       location.path too to be able to do so.
+
+2004-04-03  James Troup  <james@nocrew.org>
+
+       * debian/control (Depends): add python2.1-email | python (>= 2.2)
+       needed for new utils.rfc2047_encode() function.
+
+       * utils.py (re_parse_maintainer): allow whitespace inside the
+       email address.
+       (Error): new exception base class.
+       (ParseMaintError): new exception class.
+       (force_to_utf8): new function.
+       (rfc2047_encode): likewise.
+       (fix_maintainer): rework.  use force_to_utf8() to force name and
+       rfc822 return values to always use UTF-8.  use rfc2047_encode() to
+       return an rfc2047 value.  Validate the address to catch missing
+       email addresses and (some) broken ones.
+
+       * katie.py (nmu_p.is_an_nmu): adapt for new utils.fix_maintainer()
+       by adopting foo2047 return value.
+       (Katie.dump_vars): add changedby2047 and maintainer2047 as
+       mandatory changes fields.  Promote changes and maintainer822 to
+       mandatory fields.
+       (Katie.update_subst): default maintainer2047 rather than
+       maintainer822.  User foo2047 rather than foo822 when setting
+       __MAINTAINER_TO__ or __MAINTAINER_FROM__.
+
+       * jennifer (check_changes): set default changes["maintainer2047"]
+       and changes["changedby2047"] values rather than their 822
+       equivalents.  Makes changes["changes"] a mandatory field.  Adapt
+       to new utils.fix_maintainer() - reject on exception and adopt
+       foo2047 return value.
+       (check_dsc): if a mandatory field is missing don't do any further
+       checks and as a result reduce paranoia about dsc[var] existence.
+       Validate the maintainer field by calling new
+       utils.fix_maintainer().
+
+       * ashley (main): add changedby2047 and maintainer2047 to mandatory
+       changes fields.  Promote maintainer822 to a mandatory changes
+       field.  add "pool name" to files fields.
+
+       * test/006/test.py: new file - tests for new
+       utils.fix_maintainer().
+
+2004-04-01  James Troup  <james@nocrew.org>
+
+       * templates/lisa.prod (To): use __MAINTAINER_TO__ not __MAINTAINER__.
+
+       * jennifer (get_changelog_versions): create a symlink mirror of
+       the source files in the temporary directory.
+       (check_source): if check_dsc_against_db() couldn't find the
+       orig.tar.gz bail out.
+
+       * katie.py (Katie.check_dsc_against_db): if the orig.tar.gz is not
+       part of the upload store the path to it in pkg.orig_tar_gz and if
+       it can't be found set pkg.orig_tar_gz to -1.
+
+       Explicitly return the second value as None in the (usual) case
+       where we don't have to reprocess.  Remove obsolete diagnostic
+       logs.
+
+       * lisa (prod_maintainer): don't return anything, no one cares. (pychecker)
+
+       * utils.py (temp_filename): new helper function that wraps around
+       tempfile.mktemp().
+
+       * katie.py (Katie.do_reject): use it and don't import tempfile.
+       * lisa (prod_maintainer): likewise.
+       (edit_note): likewise.
+       (edit_new): likewise.
+       * lauren (reject): likewise.
+       * melanie (main): likewise.
+       * neve (do_sources): likewise.
+       * rene (main): likewise.
+       * tea (validate_sources): likewise.
+
+2004-03-31  James Troup  <james@nocrew.org>
+
+       * tea (validate_sources): remove unused 's' temporary variable.
+
+2004-03-15  James Troup  <james@nocrew.org>
+
+       * jennifer (check_dsc): check changes["architecture"] for
+       source before we do anything else.
+
+2004-03-21  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * billie: Added
+       * katie.conf (Billie): Added sample Billie stanza to katie.conf
+
+2004-03-12  James Troup  <james@nocrew.org>
+
+       * docs/README.config (Dir::Queue::BTSVersionTrack): document.
+
+       * katie.conf (Dir::Queue::BTSVersionTrack): define.
+
+       * katie.py (Katie.accept): add support for DebBugs Version
+       Tracking by writing out .versions (generated in jennifer's
+       get_changelog_versions()) and .debinfo (mapping of binary ->
+       source) files.
+
+       * ashley (main): add dsc["bts changelog"].
+
+       * katie.py (Katie.dump_vars): store dsc["bts changelog"] too.
+
+       * jennifer (check_diff): obsoleted by check_source(), removed.
+       (check_source): new function: create a temporary directory and
+       move into it and call get_changelog_versions().
+       (get_changelog_versions): new function: extract the source package
+       and optionally parse debian/changelog to obtain the version
+       history for the BTS.
+       (process_it): call check_source() rather than check_diff().
+
+2004-03-08  James Troup  <james@nocrew.org>
+
+       * lisa (edit_index): Fix logic swapo from 'use "if varfoo in
+       listbar" rather than "if listbar.count(varfoo)"' change on
+       2004-02-24.
+
+2004-03-05  James Troup  <james@nocrew.org>
+
+       * alicia (main): don't warn about not closing bugs - we don't
+       manage overrides through the BTS.
+
+2004-02-27  Martin Michlmayr  <tbm@cyrius.com>
+
+       * docs/README.config: lots of updates and corrections.
+       * docs/README.first: likewise.
+
+       * docs/README.config: drop unused Dir::Queue::Root.
+       * katie.conf-non-US: likewise.
+       * katie.conf: likewise.
+       * katie.conf-security: likewise.
+
+2004-02-27  James Troup  <james@nocrew.org>
+
+       * rose (process_tree): use 'if var in [ list ]' rather than long
+       'if var == foo or var == bar or var == baz'.  Suggested by Martin
+       Michlmayr.
+
+       * jennifer (check_files): reduce 'if var != None' to 'if var' as
+       suggested by Martin Michlmayr.
+       * catherine (poolize): likewise.
+       * charisma (main): likewise.
+       * halle (check_changes): likewise.
+       * heidi (main): likewise.
+       (process_file): likewise.
+       * kelly (install): likewise.
+       (stable_install): likewise.
+       * utils.py (fix_maintainer): likewise.
+
+       * apt.conf: add support for debian-installer in testing-proposed-updates.
+       * katie.conf (Suite::Testing-Proposed-Updates::UdebComponents):
+       add - set to main.
+
+       * mkmaintainers: add "-T15" option to wget of non-US packages file
+       so that we don't hang cron.daily if non-US is down.
+
+       * templates/lisa.prod (Subject): Prefix with "Comments regarding".
+
+       * templates/jennifer.bug-close: add Source and Source-Version
+       pseudo-headers that may be used for BTS Version Tracking someday
+       [ajt@].
+
+       * rene (do_nbs): special case linux-wlan-ng like we do for pcmcia.
+       (main): likewise.
+
+       * cron.unchecked: it's /org/ftp.debian.org not ftp-master.
+
+2004-02-25  James Troup  <james@nocrew.org>
+
+       * katie.conf (SuiteMappings): don't map testing-security to
+       proposed-updates.
+
+2004-02-24  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.__init__): remove unused 'values' field.
+
+       * utils.py (extract_component_from_section): use 's.find(c) != -1'
+       rather than 's.count(c) > 0'.
+
+       * katie.py (Katie.source_exists): use "if varfoo in listbar"
+       rather than "if listbar.count(varfoo)".
+       * halle (check_joey): likewise.
+       * jeri (check_joey): likewise.
+       * lisa (edit_index): likewise.
+       * jenna (stable_dislocation_p): likewise.
+
+       * jennifer (main): remove unused global 'nmu'.
+
+2004-02-03  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * pseudo-packages.maintainers (ftp.debian.org): Changed the maintainer
+         to be ftpmaster@ftp-master.debian.org to bring it into line with how
+         the dak tools close bugs.
+
+2004-02-02  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * katie.conf (Alicia): Added an Alicia section with email address
+       * templates/alicia.bug-close: Added
+       * docs/alicia.1.sgml: Added the docs for the -d/--done argument
+       * alicia (main): Added a -d/--done argument
+
+2004-02-02  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * templates/lisa.prod: Oops, missed a BITCH->PROD conversion
+
+2004-01-29  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * lisa (prod_maintainer): Added function to prod the maintainer without
+         accepting or rejecting the package
+       * templates/lisa.prod: Added this template for the prodding mail
+
+       * .cvsignore: Added neve-files which turns up in new installations
+
+2004-01-30  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * alicia (usage): Fixed usage message to offer section and priority
+         as seperately optional arguments.
+       * alicia (main): Added a % (arg) interpolation needed when only
+         one of section or priority is provided and it cannot be found.
+
+2004-01-29  Daniel Silverstone  <dsilvers@digital-scurf.org>
+
+       * alicia: Added
+       * docs/alicia.1.sgml: Added
+       * docs/Makefile: Added alicia to the list of manpages to build
+       * docs/README.names: Noted what alicia does
+       * docs/README.first: Noted where alicia is useful
+
+2004-01-21  James Troup  <james@nocrew.org>
+
+       * madison (main): add -b/--binary-type.
+       (usage): likewise.
+
+       * denise (main): generate debian-installer overrides for testing
+       too.
+       * apt.conf: add support for debian-installer in testing.
+       * katie.conf (Suite::Testing::UdebComponents): set to main.
+
+       * katie.conf (Dinstall::SigningKeyIds): 2004 key.
+       * katie.conf-non-US (Dinstall::SigningKeyIds): likewise.
+       * katie.conf-security (Dinstall::SigningKeyIds): likewise.
+
+       * utils.py (parse_changes): don't process data not inside the
+       signed data.  Thanks to Andrew Suffield <asuffield@debian.org> for
+       pointing this out.
+       * test/005/test.py (main): new test to test for above.
+
+2004-01-04  James Troup  <james@nocrew.org>
+
+       * jenna (write_filelists): correct typo, s/Components/Component/
+       for Options.
+
+2004-01-04  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd: move update of overrides and Packages file...
+       * cron.unchecked: to here.
+       * katie.conf-non-US: (Dinstall::SingingKeyIds) update for 2003v2 key
+       * katie.conf-security: likewise
+
+2003-11-20  James Troup  <james@nocrew.org>
+
+       * jenna (main): don't use utils.try_with_debug(), it produces way
+       too much output.
+
+       * halle (check_changes): don't error out if a .changes refers to a
+       non-existent package, just warn and skip the file.
+
+       * docs/README.stable-point-release: mention halle and .changes
+       obsoleted by removal through melanie.  Update for 3.0r2.
+
+       * katie.conf (Suite::Stable::Version): bump to 3.0r2.
+       (Suite::Stable::Description): update for 3.0r2.
+       (Lauren::MoreInfoURL): likewise.
+       * katie.conf-non-US (Suite::Stable::Version): likewise.
+       (Suite::Stable::Description): likewise.
+       (Lauren::MoreInfoURL): likewise.
+
+       * apt.conf.stable (Default): don't define MaxContentsChange.
+       * apt.conf.stable-non-US (Default): likewise.
+
+       * lauren (reject): hack to work around partial replacement of an
+       upload, i.e. one or more binaries superseded by another source
+       package.
+
+2003-11-17  James Troup  <james@nocrew.org>
+
+       * pseudo-packages.maintainers: point installation-reports at
+       debian-boot@l.d.o rather than debian-testing@l.d.o at jello@d.o's
+       request.
+
+       * utils.py (parse_changes): calculate the number of lines once
+       with len() rather than max().
+
+       * jennifer (check_dsc): handle the .orig.tar.gz disappearing from
+       files, since check_dsc_against_db() deletes the .orig.tar.gz
+       entry.
+
+2003-11-13  Ryan Murray  <rmurray@debian.org>
+
+       * apt.conf: specify a src override file for debian-installer
+
+2003-11-10  James Troup  <james@nocrew.org>
+
+       * fernanda.py (strip_pgp_signature): new function - strips PGP
+       signature from a file and returns the modified contents of the
+       file in a string.
+       (display_changes): use it.
+       (read_dsc): likewise.
+
+2003-11-09  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd: export accepted_autobuild table for unstable, and use
+       it to generate the incoming Packages/Sources rather than having apt
+       walk the directory.
+       * apt.conf.buildd: use exported table from cron.buildd to generate
+       Packages/Sources
+
+2003-11-07  James Troup  <james@nocrew.org>
+
+       * kelly: import errno.
+
+       * katie.py (Katie.build_summaries): sort override disparities.
+
+       * kelly (install): set dsc_component based on the .dsc's component
+       not a random binaries.
+
+2003-10-29  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.build_summaries): don't assume changes["source"]
+       exists since it might not.
+
+2003-10-20  James Troup  <james@nocrew.org>
+
+       * pseudo-packages.maintainers: update security.d.o to use
+       team@s.d.o at joy@'s request.
+
+2003-10-17  James Troup  <james@nocrew.org>
+
+       * jennifer (check_dsc): use .startswith rather than .find() == 0.
+
+2003-10-17  Martin Michlmayr  <tbm@cyrius.com>
+
+       * tea (chk_bd_process_dir): use .endswith rather than slice.
+
+2003-10-14  James Troup  <james@nocrew.org>
+
+       * tea (check_build_depends): new function.
+       (chk_bd_process_dir): likewise.  Validates build-depends in .dsc's
+       in the archive.
+       (main): update for new function.
+       (usage): likewise.
+
+       * katie.py (Katie.do_reject): sanitize variable names,
+       s/reject_filename/reason_filename/, s/fd/reason_fd/.  Move shared
+       os.close() to outside if clause.
+
+       * jennifer (check_dsc): check build-depends and
+       build-depends-indep by running them past apt_pkg.ParseSrcDepends.
+       Fold the ARRAY check into the same code block and tidy up it's
+       rejection message.
+       (check_changes): ensure that the Files field is non-empty.
+       Suggested by Santiago Vila <sanvila@unex.es>
+       (check_changes): normalize reject messages.
+       (check_dsc): instead of doing most of the checks inside a for loop
+       and an if, find the dsc_filename in a short loop over files first
+       and then do all the checks.  Add check for more than one .dsc in a
+       .changes which we can't handle.  Normalize reject messages.
+
+2003-10-13  James Troup  <james@nocrew.org>
+
+       * katie.conf (Dinstall::Reject::NoSourceOnly): set to true.
+       * katie.conf-non-US (Dinstall::Reject::NoSourceOnly): likewise.
+
+       * jennifer (check_files): Set 'has_binaries' and 'has_source'
+       variables while iterating over 'files'.  Don't regenerate it when
+       checking for source if source is mentioned.
+
+       Reject source only uploads if the config variable
+       Dinstall::Reject::NoSourceOnly is set.
+
+2003-10-03  James Troup  <james@nocrew.org>
+
+       * rene (main): add nasty hardcoded reference to debian-installer
+       so we detect NBS .udebs.
+
+2003-09-29  James Troup  <james@nocrew.org>
+
+       * apt.conf (old-proposed-updates): remove.
+       * apt.conf-non-US (old-proposed-updates): likewise.
+
+2003-09-24  James Troup  <james@nocrew.org>
+
+       * tea (check_files_not_symlinks): new function, ensure files
+       mentioned in the database aren't symlinks.  Includes code to
+       update any files that are like this to their real filenames +
+       location; commented out by though.
+       (usage): update for new function.
+       (main): likewise.
+
+2003-09-24  Anthony Towns  <ajt@debian.org>
+
+       * vars: external-overrides variable added
+       * cron.daily: Update testing/unstable Task: overrides from joeyh
+       managed external source.
+
+2003-09-22  James Troup  <james@nocrew.org>
+
+       * kelly (install): if we can't move the .changes into queue/done,
+       fail don't warn and carry on.  The old behaviour pre-dates NI and
+       doesn't make much sense now since jennifer checks both
+       queue/accepted and queue/done for any .changes files she's
+       processing.
+
+       * utils.py (move): don't throw exceptions on existing files or
+       can't overwrite, instead just fubar out.
+
+       * jennifer (check_dsc): also check Build-Depends-Indep for
+       ARRAY-lossage.  Noticed by Matt Zimmerman <mdz@debian.org>.
+
+2003-09-18  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.close_bugs): only log the bugs we've closed
+       once.
+
+       * kelly (main): log as 'kelly', not 'katie'.
+
+2003-09-16  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.check_binary_against_db): likewise noramlize.
+
+       * jennifer (check_changes): normalize reject message for "changes
+       file already exists" to be %s: <foo>.
+       (check_dsc): add a check for 'Build-Depends: ARRAY(<hex>)'
+       produced by broken dpkg-source in 1.10.11.  Tone down and
+       normalize rejection message for incompatible 'Format' version
+       numbers.
+       (check_diff): likewise tone down and normalize.
+
+2003-09-07  James Troup  <james@nocrew.org>
+
+       * utils.py (parse_changes): if dsc_whitespace_rules is false,
+       don't bomb out on bogus empty lines.
+       (build_file_list): check for changes["files"] earlier.  use Dict
+       to create files[name] dictionary.
+       (send_mail): don't bother validating arguments.
+       (check_signature): minor improvements to some of the rejection
+       messages including listing the key id of the key that wasn't found
+       in the keyring.
+       (wrap): new function.
+
+       * tea: add new check 'validate-indices' that ensures all files
+       mentioned in indices (Packages, Sources) files do in fact exist.
+
+       * catherine (poolize): use a local re_isadeb which handles legacy
+       (i.e. no architecture) style .deb filenames.
+
+       * rosamund: new script.
+
+       * rhona (check_binaries): when checking for binary packages not in
+       a suite, don't bother selecting files that already have a
+       last_used date.
+       (check_sources): likewise.
+
+       * rhona: change all SQL EXISTS sub-query clauses to use the
+       postgres suggested convention of "SELECT 1 FROM".
+       * andrea (main): likewise.
+       * tea (check_override): likewise.
+       * catherine (main): likewise.
+
+       * katie.conf (Suite): remove OldStable and Old-Proposed-Updates
+       entries and in other suites MustBeNewerThan's.
+       (SuiteMappings): likewise
+       * katie.conf-non-US: likewise.
+       * katie.conf-security: likewise.
+
+       * apt.conf-security: remove oldstable.
+       * apt.conf.stable: likewise.
+       * apt.conf.stable-non-US: likewise.
+       * cron.buildd-security: likewise.
+       * cron.daily-security: likewise.
+       * vars-security (suites): likewise.
+       * wanna-build/trigger.daily: likewise.
+
+       * claire.py (clean_symlink): move...
+       * utils.py (clean_symlink): here.
+
+       * claire.py (find_dislocated_stable): update accordingly.
+
+2003-08-16  Anthony Towns  <ajt@debian.org>
+
+       * katie.py (source_exists): expand the list of distributions
+       the source may exist in to include any suite that's mapped to
+       the destination suite (even transitively (a->b->c)). This should
+       unbreak binary uploads to *-proposed-updates.
+
+2003-08-09  Randall Donald  <rdonald@debian.org>
+
+       * lisa (recheck): change changes["distribution"].keys() to
+       Katie.pkg.changes...
+
+2003-08-08  Randall Donald  <rdonald@debian.org>
+
+       * katie.py: only tag bugs as fixed-in-experimental for
+       experimental uploads
+
+2003-07-26  Anthony Towns  <ajt@debian.org>
+
+       * katie.py (source_exists): add an extra parameter to limit the
+       distribution(s) the source must exist in.
+       * kelly, lisa, jennifer: update to use the new source_exists
+
+2003-07-15  Anthony Towns  <ajt@debian.org>
+
+       * ziyi: quick hack to support a FakeDI line in apt.conf to generate
+       checksums for debian-installer stuff even when it's just a symlink to
+       another suite
+
+       * apt.conf: add the FakeDI line
+
+2003-06-09  James Troup  <james@nocrew.org>
+
+       * kelly (check): make sure the 'file' we're looking for in 'files'
+       hasn't been deleted by katie.check_dsc_against_db().
+
+2003-05-07  James Troup  <james@nocrew.org>
+
+       * helena (time_pp): fix s/years/year/ typo.
+
+2003-04-29  James Troup  <james@nocrew.org>
+
+       * madison (usage): document -c/--component.
+
+       * madison (usage): Fix s/seperated/separated/.
+       * melanie (usage): likewise.
+       * jenna (usage): likewise.
+
+2003-04-24  James Troup  <james@nocrew.org>
+
+       * cron.daily-non-US: if there's nothing for kelly to install, say
+       so.
+
+       * jennifer (check_timestamps): print sys.exc_value as well as
+       sys.exc_type when capturing exceptions.  Prefix 'timestamp check
+       failed' with 'deb contents' to make it clearer what timestamp(s)
+       are being checked.
+
+2003-04-15  James Troup  <james@nocrew.org>
+
+       * cron.daily-non-US: only run kelly if there are some .changes
+       files in accepted.
+
+       * rene: add -m/--mode argument which can be either daily (default)
+       or full.  In daily mode only 'nviu' and 'nbs' checks are run.
+       Various changes to make this possible including a poor attempt at
+       splitting main() up a little.  De-hardcode suite numbers from SQL
+       queries and return quietly from do_nviu() if experimental doesn't
+       exist (i.e. non-US).  Hardcode pcmcia-cs as dubious NBS since it
+       is.
+
+       * debian/control (Depends): remove python-zlib as it's obsolete.
+
+       * charisma (main): don't slice the \n off strings when we're
+       strip()-ing it anyway.
+       * heidi (set_suite): likewise.
+       (process_file): likewise.
+       * natalie (process_file): likewise.
+
+2003-04-08  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.check_dsc_against_db): improve the speed of two
+       slow queries by using one LIKE '%foo%' and then matching against
+       '%s' or '/%s$' in python.  Also only join location when we need it
+       (i.e. the .orig.tar.gz query).  On auric, this knocks ~3s of each
+       query, so 6s for each sourceful package.
+
+       * cron.daily: invoke rene and send the report to ftpmaster.
+       * cron.daily-non-US: likewise.
+
+2003-03-14  James Troup  <james@nocrew.org>
+
+       * utils.py (send_mail): default filename to blank.
+       * amber (make_advisory): adapt.
+       * jennifer (acknowledge_new): likewise.
+       * katie.py (Katie.close_bugs): likewise.
+       (Katie.announce): likewise.
+       (Katie.accept): likewise.
+       (Katie.check_override): likewise.
+       (Katie.do_reject): likewise.
+       * kelly (do_reject): likewise.
+       (stable_install): likewise.
+       * lisa (do_bxa_notification): likewise.
+       * lauren (reject): likewise.
+       * melanie (main): likewise.
+
+       * rene (add_nbs): check any NBS packages against unstable to see
+       if they haven't been removed already.
+
+       * templates/katie.rejected: remove paragraph about rejected files
+       since they're o-rwx due to c-i-m and the uploader can't do
+       anything about them and shania will take care of them anyway.
+
+       * madison (usage): update usage example to use comma seperation.
+       * melanie (usage): likewise.
+
+       * utils.py (split_args): new function; splits command line
+       arguments either by space or comma (whichever is used).  Also has
+       optional-but-default DWIM spurious space detection to avoid
+       'command -a i386, m68k' problems.
+       (parse_args): use it.
+       * melanie (main): likewise.
+
+       * melanie (main): force the admin to tell someone if we're not
+       doing a rene-led removal (or closing a bug, which counts as
+       telling someone).
+
+2003-03-05  James Troup  <james@nocrew.org>
+
+       * katie.conf (Section): add embedded, gnome, kde, libdevel, perl
+       and python sections.
+       * katie.conf-security (Section): likewise.
+
+       * add_constraints.sql: add uid and uid_id_seq to grants.
+
+       * lisa (determine_new): also warn about adding overrides to
+       oldstable.
+
+       * madison (main): make the -S/--source-and-binary query obey
+       -s/--suite restrictions.
+
+2003-03-03  James Troup  <james@nocrew.org>
+
+       * madison (main): if the Archive_Maintenance_In_Progress lockfile
+       exists, warn the user that our output might seem strange.  (People
+       get confused by multiple versions in a suite which happens
+       post-kelly but pre-jenna.)
+
+2003-02-21  James Troup  <james@nocrew.org>
+
+       * kelly (main): we don't need to worry about StableRejector.
+
+       * melanie (main): sort versions with apt_pkg.VersionCompare()
+       prior to output.
+
+       * lauren: new script to manually reject packages from
+       proposed-updates.  Updated code from pre-NI kelly (nee katie).
+
+2003-02-20  James Troup  <james@nocrew.org>
+
+       * kelly (init): remove unused -m/--manual-reject argument.
+
+       * katie.py (Katie.force_reject): renamed from force_move to make
+       it more explicit what this function does.
+       (Katie.do_reject): update to match.
+
+       * utils.py (prefix_multi_line_string): add an optional argument
+       include_blank_lines which defaults to 0.  If non-zero, blank lines
+       will be includes in the output.
+
+       * katie.py (Katie.do_reject): don't add leading space to each line
+       of the reject message.  Include blank lines when showing the
+       message to the user.
+
+2003-02-19  Martin Michlmayr  <tbm@cyrius.com>
+
+       * utils.py (fix_maintainer): replace pointless re.sub() with
+       simple string format.
+
+2003-02-11  James Troup  <james@nocrew.org>
+
+       * lisa (edit_overrides): only strip-to-one-char and upper-case
+       non-numeric answers.  Fixes editing of items with indices >= 10;
+       noticed by Randall.
+       (edit_overrides): correct order of arguments to "not a valid
+       index" error message.
+
+       * jenna (cleanup): call resolve_arch_all_vs_any() rather than
+       remove_duplicate_versions(); thanks to aj for the initial
+       diagnosis.
+       (remove_duplicate_versions): correct how we return
+       dominant_versions.
+       (resolve_arch_all_vs_any): arch_all_versions needs to be a list of
+       a tuple rather than just a tuple.
+
+2003-02-10  James Troup  <james@nocrew.org>
+
+       * emilie: new script - sync fingerprint and uid tables with a
+       debian.org LDAP DB.
+
+       * init_pool.sql: new table 'uid'; contains user ids.  Reference it
+       in 'fingerprint'.
+
+       * db_access.py (get_or_set_uid_id): new function.
+
+       * jennifer (main): update locking to a) not used FCNTL (deprecated
+       in python >= 2.2) and b) acknowledge upstream's broken
+       implementation of lockf (see Debian bug #74777), c) try to acquire
+       the lock non-blocking.
+       * kelly (main): likewise.
+
+       * contrib/python_1.5.2-fcntl_lockf.diff: obsolete, removed.
+
+       * madison (main): only append the package to new_packages if it's
+       not already in there; fixes -S/--source-and-binary for cases where
+       the source builds a binary package of the same name.
+
+2003-02-10  Anthony Towns  <ajt@debian.org>
+
+       * madison (main): use explicit JOIN syntax for
+       -S/--source-and-binary queries to reduce the query's runtime from
+       >10 seconds to negligible.
+
+2003-02-08  James Troup  <james@nocrew.org>
+
+       * rene (main): in the NVIU output, append items to lists, not
+       extend them; fixes amusing suggestion that "g n u m e r i c" (sic)
+       should be removed.
+
+2003-02-07  James Troup  <james@nocrew.org>
+
+       * apt.conf (tree "dists/unstable"): Add bzip2-ed Packages and
+       Sources [aj].
+
+       * pseudo-packages.maintainers (bugs.debian.org): s/Darren
+       O. Benham/Adam Heath/.
+
+       * katie.conf (Suite::Stable::Version): bump to 3.0r1a.
+       (Suite::Stable::Description): update for 3.0r1a.
+       (Dinstall::SigningKeyIds): update for 2003 key [aj].
+
+       * utils.py (gpgv_get_status_output): rename from
+       get_status_output().
+
+       * neve (check_signature): use gpgv_get_status_output and Dict from
+       utils().  Add missing newline to error message about duplicate tokens.
+
+       * saffron (per_arch_space_use): also print space used by source.
+       (output_format): correct string.join() invocation.
+
+       * jennifer (check_signature): ignored duplicate EXPIRED tokens.
+
+2003-02-04  James Troup  <james@nocrew.org>
+
+       * cron.buildd: correct generation of Packages/Sources and grep out
+       non-US/non-free as well as non-free.
+
+2003-02-03  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd: generate quinn-diff output with full Packages/Sources
+         files to get out-of-date vs. uncompiled right.
+       * apt.conf.buildd: no longer generate uncompressed files, as they
+         are generated in cron.buildd instead
+       * add -i option to quinn-diff to ignore binary-all packages
+       * apt.conf.buildd: remove and readd udeb to extensions.  If the udebs
+         aren't in the packages file, the arch that uploaded them will build
+         them anyways...
+
+2003-01-30  James Troup  <james@nocrew.org>
+
+       * rene (main): only print suggested melanie command when there's
+       some NBS to remove.
+
+2003-01-30  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd: fix incorrectly inverted lockfile check
+
+2003-01-29  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd: generate override.sid.all3.src
+       * apt.conf.buildd: use generated override.sid.all3.src
+
+2003-01-27  Martin Michlmayr  <tbm@cyrius.com>
+
+       * utils.py (get_status_output): moved from jennifer.
+       (Dict): likewise.
+       (check_signature): likewise.
+
+       * jennifer (get_status_output): moved to utils.py.
+       (Dict): likewise.
+       (check_signature): likewise.
+
+       * utils.py (check_signature): add an argument to specifiy which
+       function to call when an error was found.
+       (check_signature): document this function better.
+
+       * jennifer (check_files): pass the reject function as an argument
+       to utils.check_signature.
+       (process_it): likewise.
+
+2003-01-20  James Troup  <james@nocrew.org>
+
+       * rene (main): lots of changes to improve the output and make it
+       more useful.
+
+       * katie.py (Katie.check_override): make the override messages
+       clearer (hopefully).
+
+2002-12-26  James Troup  <james@nocrew.org>
+
+       * ziyi (usage): document the ability to pass suite(s) as
+       argument(s).
+       (main): read apt.conf after checking for -h/--help.
+
+       * tea (main): take the check to run as an argument.
+
+       * saffron.R: R script to graph daily install runs.
+
+       * saffron: new script; various stats functions.
+
+       * rhona (main): connect to the database after checking for -h/--help.
+
+       * neve (do_da_do_da): if no -a/--action option is given, bail out.
+
+       * melanie (main): sort versions with utils.arch_compare_sw().
+
+       * madison (usage): alphabetize order of options.
+       * melanie (usage): likewise.
+
+       * kelly (usage): fix usage short description (we aren't dinstall).
+
+       * julia (usage): fix usage description and alphabetize order of
+       options.
+
+       * jeri (usage): fix usage short description.
+
+       * jennifer (main): move --help and --version checks from here...
+       (init): to here so that they work with an empty katie.conf.
+       * kelly: likewise.
+
+       * alyson (usage): new function.
+       (main): use it.
+       * andrea: likewise.
+       * ashley: likewise.
+       * cindy: likewise.
+       * denise: likewise.
+       * helena: likewise.
+       * neve: likewise.
+       * rene: likewise.
+       * rose: likewise.
+       * tea: likewise.
+
+       * apt.conf.stable (tree "dists/stable"): add missing ExtraOverride
+       entry that caused tasks to be omitted from 3.0r1.
+
+2002-12-10  James Troup  <james@nocrew.org>
+
+       * jennifer (check_files): sanity check the Depends field to ensure
+       it's non-empty if present since apt chokes on an empty one.
+       Thanks to Ryan Murray for the idea.
+
+2002-12-08  James Troup  <james@nocrew.org>
+
+       * katie.conf-security (Helena::Directories): new; include accepted
+       in addition to byhand and new.
+
+       * helena (process_changes_files): use utils.arch_compare_sw().
+       Justify things based on the longest [package, version,
+       architecture].  Reduce '[note]' to '[N]' to save space, and remove
+       the commas in architecture and version lists for the same reason.
+       (main): make directories we process configurable through
+       Helena::Directories in the config file; if that doesn't exist
+       default to the old hardcoded values (byhand & new).
+
+       * utils.py (arch_compare_sw): moved here from madison.
+       * madison (main): adjust to compensate.
+
+2002-12-06  James Troup  <james@nocrew.org>
+
+       * ziyi (main): fix "suite foo not in apt.conf" msg to use the
+       right filename.
+
+2002-12-05  James Troup  <james@nocrew.org>
+
+       * katie.conf-non-US (Julia::KnownPostgres): add 'udmsearch'.
+
+2002-11-28  Randall Donald  <rdonald@debian.org>
+
+       * fernanda.py (read_control): fix typo of 'Architecture'.
+
+2002-11-26  James Troup  <james@nocrew.org>
+
+       * lisa (check_pkg): call less with '-R' so we see the colour from
+       Randall's fernanda changes.
+
+       * neve (process_sources): if Directory points to a legacy location
+       but the .dsc isn't there; assume it's broken and look in the pool.
+       (update_section): new, borroed from alyson.
+       (do_da_do_da): use it.
+       (process_packages): add suite_it to the cache key used for
+       arch_all_cache since otherwise we only add a package to the first
+       suite it's in and ignore any subsequent ones.
+
+       * katie.conf-non-US (Location): fixed to reflect reality (all
+       suites, except old-proposed-updates (which is legacy-mixed)) are
+       pool.
+
+       * utils.py (try_with_debug): wrapper for print_exc().
+       * jenna (main): use it.
+       * neve (main): likewise.
+
+2002-11-25  Randall Donald  <rdonald@debian.org>
+
+       * fernanda.py (main): added -R to less command line for raw control
+       character support to print colours
+       (check_deb): Instead of running dpkg -I on deb file, call
+       output_deb_info, the new colourized control reporter.
+       (check_dsc): add call to colourized dsc info reader, read_dsc, instead
+       of printing out each .dsc line.
+       (output_deb_info): new function. Outputs each key/value pair from
+       read_control except in special cases where we highlight section,
+       maintainer, architecture, depends and recommends.
+       (create_depends_string): new function. Takes Depends tree and looks
+       up it's compontent via projectb db, colourizes and constructs a
+       depends string in original order.
+       (read_dsc): new function. reads and parses .dsc info via
+       utils.parse_changes. Build-Depends and Build-Depends-Indep are
+       colourized.
+       (read_control): new function. reads and parses control info via
+       apt_pkg. Depends and Recommends are split in to list structures,
+       Section and Architecture are colourized. Maintainer is colourized
+       if it has a localhost.localdomain address.
+       (split_depends): new function. Creates a list of lists of
+       dictionaries of depends (package,version relation). Top list is
+       colected from comma delimited items. Sub lists are | delimited.
+       (get_comma_list): new function. splits string input among commas
+       (get_or_list): new function. splits string input among | delimiters
+       (get_depends_parts): new function. Creates dictionary of package name
+       and version relation from dependancy string.
+       Colours for section and depends are per component. Unfound depends
+       are in bold. Lookups using version info is not supported yet.
+
+2002-11-22  James Troup  <james@nocrew.org>
+
+       * katie.conf-security (Julia::KnownPostgres): add 'www-data' and
+       'udmsearch'.
+
+       * amber (make_advisory): string.atol() is deprecated and hasn't
+       been ported to string methods.  Use long() instead.
+
+       * init_pool.sql: explicitly specify the encoding (SQL_ASCII) when
+       creating the database since we'll fail badly if it's created with
+       e.g. UNICODE encoding.
+
+       * rose (main): AptCnf is a global.
+
+       * neve (get_location_path): new function determines the location
+       from the the first (left-most) directory of a Filename/Directory.
+       (process_sources): don't need 'location' anymore.  Use
+       utils.warn().  Use the Directory: field for each package to find
+       the .dsc.  Use get_location_path() to determine the location for
+       each .dsc.
+       (process_packages): do't need 'location' anymore.  Use
+       utils.warn().  Use get_location_path().
+       (do_sources): don't need 'location', drop 'prefix' in favour of
+       being told the full path to the Sources file, like
+       process_packages().
+       (do_da_do_da): main() renamed, so that main can call us in a
+       try/except.  Adapt for the changes in do_sources() and
+       process_packages() above.  Assume Sources and Packages file are in
+       <root>/dists/<etc.>.  Treat pool locations like we do legacy ones.
+
+       * katie.conf-security (Location): fixed to reflect reality (all
+       suites are pool, not legacy).
+
+       * utils.py (print_exc): more useful (i.e. much more verbose)
+       traceback; a recipe from the Python cookbook.
+       * jenna (main): use it.
+       * neve (main): likewise.
+
+2002-11-19  James Troup  <james@nocrew.org>
+
+       * kelly (install): fix brain-damaged CopyChanges/CopyKatie
+       handling which was FUBAR for multi-suite uploads.  Now we just
+       make a dictionary of destinations to copy to and iterate over
+       those.
+
+       * fernanda.py (check_deb): run linda as well as lintian.
+
+2002-10-21  James Troup  <james@nocrew.org>
+
+       * melanie (main): change X-Melanie to X-Katie and prefix it with
+       'melanie '.
+
+       * lisa (main): prefix X-Katie with 'lisa '.
+
+       * jennifer (clean_holding): fix typo in string method changes;
+       s/file.find(file/file.find(/.
+
+       * cron.daily: invoke helena and send the report to ftpmaster.
+       * cron.daily-non-US: likewise.
+
+2002-10-16  James Troup  <james@nocrew.org>
+
+       * kelly (check): call reject() with a blank prefix when parsing
+       the return of check_dsc_against_db() since it does its own
+       prefix-ing.
+
+       * rose: new script; only handles directory creation initally.
+
+       * katie.conf (Dinstall::NewAckList): obsolete, removed.
+       * katie.conf-non-US (Dinstall::NewAckList): likewise.
+
+2002-10-06  James Troup  <james@nocrew.org>
+
+       * rene (main): remove bogus argument handling.
+
+       * kelly: katie, renamed.
+       * cron.daily: adapt for katie being renamed to kelly.
+       * cron.daily-non-US: likewise.
+       * amber (main): likewise.
+
+       * Changes for python 2.1.
+
+       * kelly: time.strftime no longer requires a second argument of
+       "time.localtime(time.time())".
+       * logging.py: likewise.
+       * rhona: likewise.
+       * shania (init): likewise.
+
+       * amber: use augmented assignment.
+       * catherine (poolize): likewise.
+       * claire.py (fix_component_section): likewise.
+       * halle (check_changes): likewise.
+       * helena: likewise.
+       * jenna: likewise.
+       * jennifer: likewise.
+       * jeri: likewise.
+       * katie.py: likewise.
+       * kelly: likewise.
+       * lisa: likewise.
+       * madison (main): likewise.
+       * melanie: likewise.
+       * natalie: likewise.
+       * neve: likewise.
+       * rhona: likewise.
+       * tea: likewise.
+       * utils.py: likewise.
+       * ziyi: likewise.
+
+       * amber: use .endswith.
+       * fernanda.py: likewise.
+       * halle (main): likewise.
+       * jennifer: likewise.
+       * jeri: likewise.
+       * katie.py: likewise.
+       * kelly: likewise.
+       * lisa: likewise.
+       * neve: likewise.
+       * shania (main): likewise.
+       * utils.py: likewise.
+
+       * alyson: use string methods.
+       * amber: likewise.
+       * andrea: likewise.
+       * ashley: likewise.
+       * catherine: likewise.
+       * charisma: likewise.
+       * claire.py: likewise.
+       * db_access.py: likewise.
+       * denise: likewise.
+       * halle: likewise.
+       * heidi: likewise.
+       * helena: likewise.
+       * jenna: likewise.
+       * jennifer: likewise.
+       * jeri: likewise.
+       * julia: likewise.
+       * katie.py: likewise.
+       * kelly: likewise.
+       * lisa: likewise.
+       * logging.py: likewise.
+       * madison: likewise.
+       * melanie: likewise.
+       * natalie: likewise.
+       * neve: likewise.
+       * rene: likewise.
+       * tea: likewise.
+       * utils.py: likewise.
+       * ziyi: likewise.
+
+2002-09-20  Martin Michlmayr  <tbm@cyrius.com>
+
+       * utils.py (parse_changes): use <string>.startswith() rather than
+       string.find().
+
+2002-08-27  Anthony Towns  <ajt@debian.org>
+
+       * katie.py (in_override_p): when searching for a source override,
+       and the dsc query misses, search for both udeb and deb overrides
+       as well. Should fix the UNACCEPT issues with udebs.
+
+2002-08-24  James Troup  <james@nocrew.org>
+
+       * melanie (main): remove gratuitous WHERE EXISTS sub-select from
+       source+binary package finding code which was causing severe
+       performance degradation with postgres 7.2.
+
+2002-08-14  James Troup  <james@nocrew.org>
+
+       * julia (main): use the pwd.getpwall() to get system user info
+       rather than trying to read a password file.  Add a -n/--no-action
+       option.
+
+       * cron.hourly: julia no longer takes any arguments.
+       * cron.hourly-non-US: likewise.
+
+2002-08-07  James Troup  <james@nocrew.org>
+
+       * katie (install): handle multi-suite uploads when CopyChanges
+       and/or CopyKatie are in use, ensuring we only copy stuff once.
+
+2002-08-01  Ryan Murray  <rmurray@debian.org>
+
+       * wanna-build/trigger.daily: initial commit, with locking
+       * cron.buildd: add locking against daily run
+
+2002-07-30  James Troup  <james@nocrew.org>
+
+       * melanie (main): readd creation of suite_ids_list so melanie is
+       remotely useful again.
+
+       * katie.conf: adopt for woody release; diable
+       StableDislocationSupport, add oldstable, adjust other suites and
+       mappings, fix up location.
+       * katie.conf-non-US: likewise.
+       * katie.conf-security: likewise.
+
+       * apt.conf.stable: adapt for woody release; add oldstable, adjust
+       stable.
+       * apt.conf.stable-non-US: likewise.
+
+       * apt.conf-security: adapt for woody release; adding oldstable,
+       oldstable, adjust stable and testing.
+       * cron.daily-security: likewise.
+       * cron.buildd-security: likewise.
+
+       * apt.conf: adapt for woody release; rename woody-proposed-updates
+       to testing-proposed-updates and proposed-updates to
+       old-proposed-updates.
+       * apt.conf-non-US: likewise.
+
+       * vars-non-US (copyoverrides): add sarge.
+       * vars (copyoverrides): likewise.
+
+       * vars-security (suites): add oldstable.
+
+2002-07-22  Ryan Murray  <rmurray@debian.org>
+
+       * apt.conf.security-buildd: use suite codenames instead of
+         distnames.
+
+2002-07-16  James Troup  <james@nocrew.org>
+
+       * denise (main): fix filenames for testing override files.
+
+2002-07-14  James Troup  <james@nocrew.org>
+
+       * jennifer (process_it): call check_md5sums later so we can check
+       files in the .dsc too
+       (check_md5sums): check files in the .dsc too.  Check both md5sum
+       and size.
+
+       * melanie (main): use parse_args() and join_with_commas_and() from
+       utils.  If there's nothing to do, say so and exit, don't ask for
+       confirmation etc.
+
+       * amber (join_with_commas_and): moved from here to ...
+       * utils.py (join_with_commas_and): here.
+
+2002-07-13  James Troup  <james@nocrew.org>
+
+       * madison (main): use parse_args() from utils.  Support
+       -c/--component.
+
+       * jenna (parse_args): moved from here to ...
+       * utils.py (parse_args): here.
+
+       * katie.conf (Architectures): minor corrections to the description
+       for arm, mips and mipsel.
+       * katie.conf-non-US (Architectures): likewise.
+       * katie.conf-security (Architectures): likewise.
+
+       * cron.daily-security: use natalie's new -a/--add functionality to
+       flesh out the security overrides.
+
+2002-07-12  James Troup  <james@nocrew.org>
+
+       * cron.buildd (ARCHS): add arm.
+
+       * katie.conf: 2.2r7 was released.
+       * katie.conf-non-US: likewise.
+
+       * utils.py (parse_changes): handle a multi-line field with no
+       starting line.
+
+2002-06-25  James Troup  <james@nocrew.org>
+
+       * templates/amber.advisory (To): add missing email address since
+       __WHOAMI__ is only a name.
+
+       * katie.conf-security (Melane::LogFile): correct to go somewhere
+       katie has write access to.
+       (Location::/org/security.debian.org/ftp/dists/::Suites): add
+       Testing.
+
+       * natalie: add support for -a/-add which adds packages only
+       (ignoring changes and deletions).
+
+       * katie.py (Katie.announce): Dinstall::CloseBugs is a boolean so
+       use FindB, not get.
+
+2002-06-22  James Troup  <james@nocrew.org>
+
+       * jennifer (check_files): validate the package name and version
+       field.  If 'Package', 'Version' or 'Architecture' are missing,
+       don't try any further checks.
+       (check_dsc): likewise.
+
+       * utils.py (re_taint_free): add '~' as a valid character.
+
+2002-06-20  Anthony Towns  <ajt@debian.org>
+
+       * katie.conf-non-US: add OverrideSuite for w-p-u to allow uploads
+
+2002-06-09  James Troup  <james@nocrew.org>
+
+       * jennifer (check_files): reduce useless code.
+
+       * cron.daily-security: run symlinks -dr on $ftpdir.
+
+       * vars-security (ftpdir): add.
+
+2002-06-08  James Troup  <james@nocrew.org>
+
+       * neve (update_override_type): transaction is handled higher up in
+       main().
+       (update_priority): likewise.
+       (process_sources): remove code that makes testing a duplicate of
+       stable.
+       (process_packages): likewise.
+
+       * templates/amber.advisory: add missing mail headers.
+
+       * cron.daily-security: also call apt-ftparchive clean for
+       apt.conf.buildd-security.
+       * cron.weekly: likewise.
+
+       * amber (do_upload): write out a list of source packages (and
+       their version) uploaded for testing.
+       (make_advisory): add more Subst mappings for the mail headers.
+       (spawn): check for suspicious characters in the command and abort
+       if their found.
+
+2002-06-07  James Troup  <james@nocrew.org>
+
+       * ziyi (main): remove the 'nonus'/'security' hacks and use
+       Dinstall::SuiteSuffix (if it exists) instead.  Always try to write
+       the lower level Release files, even if they don't exist.  fubar
+       out if we can't open a lower level Release file for writing.
+
+       * katie.conf-non-US (Dinstall): add SuiteSuffix, used to simplify
+       ziyi.
+       * katie.conf-security (Dinstall): likewise.
+
+       * amber (do_upload): renamed from get_file_list().  Determine the
+       upload host from the original component.
+       (init): Add a -n/--no-action option.  Fix how we get changes_files
+       (i.e. from the return value of apt_pkg.ParseCommandLine(), not
+       sys.argv).  Add an Options global.
+       (make_advisory): support -n/--no-action.
+       (spawn): likewise.
+       (main): likewise.
+       (usage): document -n/--no-action.
+
+       * cron.buildd-security: fix path to Packages-arch-specific in
+       quinn-diff invocation.
+
+       * katie.conf-security (Dinstall::AcceptedAutoBuildSuites): change
+       to proper suite names (i.e. stable, testing) rather than codenames
+       (potato, woody).
+       (Dinstall::DefaultSuite): likewise.
+       (Suite): likewise.
+       (Location::/org/security.debian.org/ftp/dists/::Suites): likewise.
+       * vars-security (suites): likewise.
+       * apt.conf-security: likewise.
+
+       * katie.conf-security (Component): add "updates/" prefix.
+       (Suite::*::Components): likewise.
+       (ComponentMappings): new; map all {ftp-master,non-US} components
+       -> updates/<foo>.
+
+       * katie.conf-security (Natalie): removed; the options have
+       defaults and ComponentPosition is used by alyson which doesn't
+       work on security.d.o.
+       (Amber): replace UploadHost and UploadDir with ComponentMappings
+       which is a mapping of components -> URI.
+       (Suite::*::CodeName): strip bogus "/updates" suffix hack.
+       (SuiteMappings): use "silent-map" in preference to "map".
+
+       * cron.unchecked-security: fix call to cron.buildd-security.
+
+       * cron.daily-security: map local suite (stable) -> override suite
+       (potato) when fixing overrides.  Correct component in natalie call
+       to take into account "updates/" prefix.  Fix cut'n'waste in
+       override.$dist.all3 generation, the old files weren't being
+       removed, so they were endlessly growing.
+
+       * neve (main): don't use .Find for the CodeName since we require
+       it.  Location::*::Suites is a ValueList.
+       (check_signature): ignore duplicate SIGEXPIRED tokens.  Don't bomb
+       out on expired keys, just warn.
+       (update_override_type): new function; lifted from alyson.
+       (update_priority): likewise.
+       (main): use update_{override_type,priority}().
+
+       * jennifer (check_distributions): remove redunant test for
+       SuiteMappings; ValueList("does-not-exist") returns [] which is
+       fine.  Add support for a "silent-map" type which doesn't warn
+       about the mapping to the user.
+       (check_files): add support for ComponentMappings, similar to
+       SuiteMappings, but there's no type, just a source and a
+       destination and the original component is stored in "original
+       component".
+       * katie.py (Katie.dump_vars): add "original component" as an
+       optionsal files[file] dump variable.
+
+       * claire.py (find_dislocated_stable): dehardcode 'potato' in SQL
+       query.  Add support for section-less legacy locations like current
+       security.debian.org through YetAnotherConfigBoolean
+       'LegacyStableHasNoSections'.
+       * katie.conf-security (Dinstall): LegacyStableHasNoSections is true.
+
+       * utils.py (real_arch): moved here from ziyi.
+       * ziyi (real_arch): moved to utils.py.
+       * ziyi (main): likewise.
+
+       * claire.py (find_dislocated_stable): use real_arch() with
+       filter() to strip out source and all.
+       * neve (main): likewise.
+       * rene (main): likewise.
+       * jeri (parse_packages): likewise.
+
+2002-06-06  James Troup  <james@nocrew.org>
+
+       * tea (check_missing_tar_gz_in_dsc): modifed patch from Martin
+       Michlmayr <tbm@cyrius.com> to be more verbose about what we're
+       doing.
+
+2002-05-23  Martin Michlmayr  <tbm@cyrius.com>
+
+       * jeri (check_joey): check if the line contains two elements
+       before accessing the second.  Also, strip trailing spaces as well
+       as the newline.
+       * halle (check_joey): likewise.
+
+2002-06-05  James Troup  <james@nocrew.org>
+
+       * cron.unchecked-security: new file; like cron.unchecked but if
+       there's nothing to do exit so we don't call cron.buildd-security.
+
+       * apt.conf.buildd-security: new file.
+
+       * vars (archs): alphabetize.
+       * vars-non-US (archs): likewise.
+
+       * vars-security: add unchecked.
+
+       * madison (main): reduce rather bizarrely verbose and purposeless
+       code to print arches to a simple string.join.
+
+       * katie.conf (Suites::Unstable): add UdebComponents, a new
+       valuelist of suites, used by jenna to flesh out the list of
+       <suite>_main-debian-installer-binary-<arch>.list files generated.
+       (Dinstall): add StableDislocationSupport, a new boolean used by
+       jenna to enable or disable stable dislocation support
+       (i.e. claire), as true.
+
+       * katie.conf (Dinstall): add StableDislocationSupport, a new
+       boolean used by jenna to enable or disable stable dislocation
+       support (i.e. claire), as true.
+       * katie.conf-non-US: likewise.
+       * katie.conf-security: likewise.
+
+       * cron.daily-security: generate .all3 overrides for the buildd
+       support.  Freshen a local copy of Packages-arch-specific from
+       buildd.debian.org.
+
+       * claire.py (find_dislocated_stable): disable the support for
+       files in legacy-mixed locations since none of the Debian archives
+       have any anymore.
+
+       * helena: new script; produces a report on NEW and BYHAND
+       packages.
+
+       * jenna: rewritten from scratch to fix speed problems.  Run time
+       on auric goes down from 31.5 minutes to 3.5 minutes.  Of that 3.5
+       minutes, 105 seconds are the monster query and 70 odd seconds is
+       claire.
+
+       * apt.conf.buildd (Default): remove MaxContentsChange as it's
+       irrelevant.
+
+2002-06-05  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd-security: new file.
+
+2002-06-05  Matt Kraai  <kraai@alumni.cmu.edu>
+
+       * denise (list): take a file argument and use it.
+       (main): don't abuse sys.stdout, just write to the file.
+
+       * claire.py (usage): Fix misspelling.
+       (clean_symlink): Simplify.
+       (find_dislocated_stable): Avoid unnecessary work.
+
+2002-05-29  James Troup  <james@nocrew.org>
+
+       * cameron: removed; apt-ftparchive can simply walk the directory.
+
+2002-05-26  Anthony Towns  <ajt@debian.org>
+
+       * katie.conf{,-non-US}: Map testing to testing-proposed-updates
+       for the autobuilders.
+
+2002-05-24  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd: update override files before running apt-ftparchive
+
+2002-05-23  Martin Michlmayr  <tbm@cyrius.com>
+
+       * amber (main): remove extra space in prompt.
+
+       * utils.py (validate_changes_file_arg): use original filename in
+       error messages.
+
+       * jeri (check_joey): close file after use.
+       (parse_packages): likewise.
+       (main): setup debug option properly.
+
+       * melanie (main): remove unused packages variable and simplify the
+       code to build up con_packages by using repr().
+
+2002-05-23  James Troup  <james@nocrew.org>
+
+       * lisa (recheck): when we reject, also return 0 so the package is
+       skipped.
+       (sg_compare): fix note sorting.
+       (recheck): remove the .katie file after rejection.
+
+       * katie.py (Katie.accept): accepted auto-build support take 3;
+       this time adding support for security.  Security needs a) non-pool
+       files copied rather than symlinked since accepted is readable only
+       by katie/security and www-data needs to be able to see the files,
+       b) needs per-suite directories.  SpecialAcceptedAutoBuild becomes
+       AcceptedAutoBuildSuites and is a ValueList containing the suites.
+       SecurityAcceptedAutoBuild is a new boolean which controls whether
+       or not normal or security style is used.  The unstable_accepted
+       table was renamed to accepted_autobuild and a suite column added.
+       Also fix a bug noticed by Ryan where an existent orig.tar.gz
+       didn't have it's last_used/in_accepted flags correctly updated.
+       * katie (install): likewise.
+       * rhona (clean_accepted_autobuild): likewise.
+
+2002-05-22  James Troup  <james@nocrew.org>
+
+       * lisa (sort_changes): new function; sorts changes properly.
+       Finally.
+       (sg_compare): new function; helper for sort_changes().  Sorts by
+       have note and time of oldest upload.
+       (indiv_sg_compare): new function; helper for sort_changes().
+       Sorts by source version, have source and filename.
+       (main): use sort_changes().
+       (changes_compare): obsoleted; removed.
+
+2002-05-20  James Troup  <james@nocrew.org>
+
+       * rhona (clean_accepted_autobuild): don't die if a file we're
+       trying to remove doesn't exist.  Makes rhona more friendly to
+       katie/katie.py crashes/bugs without any undue cost.
+
+2002-05-19  James Troup  <james@nocrew.org>
+
+       * lisa (main): if sorting a large number of changes give some
+       feedback.
+       (recheck): new function, run the same checks (modulo NEW,
+       obviously) as katie does, if they fail do the standard
+       reject/skip/quit dance.
+       (do_pkg): use it.
+
+       * katie (install): don't try to unlink the symlink in the
+       AcceptedAutoBuild support if the destination is not a symlink (or
+       doesn't exist).  Avoids unnecessary bombs on previous partial
+       accepts and will still bomb hard if the file exists and isn't a
+       symlink.
+
+       * utils.py: blah, commands _is_ used when the mail stuff isn't
+       commented out like it is in my test environment.
+
+       * lisa (changes_compare): "has note" overrides everything else.
+       Use .katie files rather than running parse_changes, faster and
+       allows "has note" to work.  Correct version compare, it was
+       reversed.  Ctime check should only kick in if the source packages
+       are not the same.
+       (print_new): print out and return any note.  Rename 'ret_code' to
+       'broken'.
+       (edit_new): renamed from spawn_editor.  Don't leak file
+       descriptors.  Clean up error message if editor fails.
+       (edit_note): new function, allows one to edit notes.
+       (do_new): add note support, editing and removing.
+       (init): kill -s/--sort; with notes we always want to use our
+       sorting method.
+       (usage): likewise.
+
+       * katie.py (Katie.dump_vars): add "lisa note" as an optional
+       changes field.
+
+       * utils.py (build_file_list): rename 'dsc' to 'is_a_dsc' and have
+       it default to 0.  Adapt tests to assume it's boolean.
+       * fernanda.py (check_changes): adjust call appropriately.
+       * halle (check_changes): likewise.
+       * jennifer (check_changes): likewise.
+       * jeri (check_changes): likewise.
+       * shania (flush_orphans): likewise.
+
+       * jennifer (check_dsc): pass is_a_dsc by name when calling
+       build_file_list() for clarity.
+       * shania (flush_orphans): likewise.
+       * tea (check_missing_tar_gz_in_dsc): likewise.
+
+       * jennifer (check_dsc): pass dsc_whitespace_rules by name when
+       calling parse_changes() for clarity.
+       * tea (check_dscs): likewise.
+
+       * utils.py (parse_changes): make dsc_whitespace_rules default to
+       not true.
+       * halle (check_changes): adjust call appropriately.
+       * jennifer (check_changes): likewise.
+       * jeri (check_changes): likewise.
+       * lisa (changes_compare): likewise.
+       * utils.py (changes_compare): likewise.
+       * melanie (main): likewise.
+       * shania (flush_orphans): likewise.
+       * fernanda.py (check_changes): likewise.
+
+2002-05-18  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.dump_vars): make the .katie file unreadable,
+       it's not useful and by and large a duplication of information
+       available in readable format in other files.
+
+2002-05-16  Ryan Murray  <rmurray@debian.org>
+
+       * melanie: Dir::TemplatesDir -> Dir::Templates
+
+2002-05-15  Ryan Murray  <rmurray@debian.org>
+
+       * cameron: correct the use of os.path.join
+
+2002-05-15  Anthony Towns  <ajt@debian.org>
+
+       * ziyi: Update to match the new format for Architectures/Components
+       in katie.conf.
+
+2002-05-14  James Troup  <james@nocrew.org>
+
+       * amber: new script; 'installer' wrapper script for the security
+       team.
+
+       * katie.py (Katie.announce): remove unused 'dsc' local
+       variable. (pychecker)
+
+       * ziyi: pre-define AptCnf and out globals to None. (pychecker)
+
+       * neve: don't import sys, we don't use it. (pychecker)
+       (check_signature): fix return type mismatch. (pychecker)
+
+       * utils.py: don't import commands, we don't use it.  (pychecker)
+
+       * katie (install): SpecialAcceptedAutoBuild is a boolean.
+
+       * katie.py (Katie.dump_vars): don't store "oldfiles", it's
+       obsoleted by the change to "othercomponents" handling in jennifer
+       detailed below.
+       (Katie.cross_suite_version_check): new function; implements
+       cross-suite version checking rules specified in the conf file
+       while also enforcing the standard "must be newer than target
+       suite" rule.
+       (Katie.check_binary_against_db): renamed, since it's invoked once
+       per-binary, "binaries" was inaccurate.  Use
+       cross_suite_version_check() and don't bother with the "oldfiles"
+       rubbish as jennifer works out "othercomponents" herself now.
+       (Katie.check_source_against_db): use cross_suite_version_check().
+
+       * katie (check): the version and file overwrite checks
+       (check_{binary,source,dsc}_against_db) are not per-suite.
+
+       * jennifer (check_files): less duplication of
+       'control.Find("Architecture", "")' by putting it in a local
+       variable.
+       (check_files): call check_binary_against_db higher up since it's
+       not a per-suite check.
+       (check_files): get "othercomponents" directly rather than having
+       check_binary_against_db do it for us.
+
+       * heidi (main): 'if x:', not 'if x != []:'.
+       * katie.py (Katie.in_override_p): likewise.
+       (Katie.check_dsc_against_db): likewise.
+       * natalie (main): likewise.
+       * rene (main): likewise.
+       * ziyi (real_arch): likewise.
+
+       * alyson (main): Suite::%s::Architectures, Suite::%s::Components
+       and OverrideType are now value lists, not lists.
+       * andrea (main): likewise.
+       * cindy (main): likewise.
+       * claire.py (find_dislocated_stable): likewise.
+       * denise (main): likewise.
+       * jenna (main): likewise.
+       * jennifer (check_distributions): likewise.
+       (check_files): likewise.
+       (check_urgency): likewise (Urgency::Valid).
+       * jeri (parse_packages): likewise.
+       * neve (main): likewise (and Location::%s::Suites).
+       * rene (main): likewise.
+
+2002-05-13  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.check_source_against_db): correct case of reject
+       message to be consistent with binary checks.
+
+       * jennifer (get_status_output): don't leak 2 file descriptors per
+       invocation.
+       (check_signature): add missing '\n' to "duplicate status token"
+       error message.
+
+2002-05-09  James Troup  <james@nocrew.org>
+
+       * utils.py (validate_changes_file_arg): new function; validates an
+       argument which should be a .changes file.
+       * ashley (main): use it.
+       * lisa (main): likewise.
+
+       * katie.py (Katie.check_dsc_against_db): since there can be more
+       than one .orig.tar.gz make sure we don't assume the .orig.tar.gz
+       entry still exists in files.
+
+       * jennifer (check_dsc): handle the .orig.tar.gz disappearing from
+       files, since check_dsc_against_db() deletes the .orig.tar.gz
+       entry.
+
+       * cameron: cleanups.
+
+       * utils.py (changes_compare): change sort order so that source
+       name and source version trump 'have source'; this should fix
+       UNACCEPT problems in katie where -1 hppa+source & i386, -2
+       i386&source & hppa lead to -1 i386 unaccept.  Problem worked out
+       by Ryan.
+
+       * lisa (main): allow the arguments to be .katie files too.
+
+2002-05-07  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd: add s390 to arch list again
+
+2002-05-05  Ryan Murray  <rmurray@debian.org>
+
+       * cron.buildd: new script, update w-b database from unstable_accepted
+       table
+       * cameron: new script, take list in unstable_accepted and write out
+       a file list for apt-ftparchive
+       * apt.conf.buildd: new apt configuration for Packages/Sources for
+       unstable_accepted
+       * vars: add s390 to arch list.
+
+2002-05-03  James Troup  <james@nocrew.org>
+
+       * neve (main): don't hard code the calling user as that doesn't
+       work with modern postgres installs.  Fix psql invocation for
+       init_pool.sql (database name required).  Dont' hard code the
+       database name.
+       (process_sources): add support for fingerprint and install_date.
+       (process_packages): add support for fingerprint.
+       (do_sources): pass in the directory, fingerprint support needs it.
+       (get_status_output): borrowed from jennifer.
+       (reject): likewise.
+       (check_signature): likewise.
+
+       * katie (install): only try to log urgencies if Urgency_Logger is
+       defined.
+       (main): only initialize Urgency_Logger is Dir::UrgencyLog is
+       defined; only close Urgency_Logger if it's defined.
+
+       * catherine (poolize): adapt for Dir rationalization.
+       * claire.py (find_dislocated_stable): likewise.
+       * denise (main): likewise.
+       * halle (check_joey): likewise.
+       * jenna: likewise.
+       * jennifer: likewise.
+       * jeri: likewise.
+       * katie.py: likewise.
+       * katie: likewise.
+       * lisa (do_bxa_notification): likewise.
+       * logging.py (Logger.__init__): likewise
+       * rene (main): likewise.
+       * rhona (clean): likewise.
+       * shania (init): likewise.
+       * tea: likewise.
+       * ziyi: likewise.
+
+       * lisa (add_overrides): Dinstall::BXANotify is a boolean, use
+       FindB, not FindI.
+
+       * rhona (clean_accepted_autobuild): SpecialAcceptedAutoBuild is a
+       boolean, use FindB, not get.
+
+       * katie.py (Katie.check_dsc_against_db): ignore duplicate
+       .orig.tar.gz's which are an exact (size/md5sum) match.
+
+       * ashley (main): really allow *.katie files as arguments too;
+       noticed by aj.
+
+       * sql-aptvc.cpp: postgres.h moved to a "server" subdirectory.
+
+2002-05-03  Anthony Towns  <ajt@debian.org>
+
+       * ziyi: support for security.
+
+2002-05-02  James Troup  <james@nocrew.org>
+
+       * jennifer (accept): call Katie.check_override() unconditional as
+       no-mail check moved into that function.
+       (do_byhand): likewise.
+
+       * katie.py (Katie.check_override): don't do anything if we're a)
+       not sending mail or b) the override disparity checks have been
+       disbled via Dinstall::OverrideDisparityCheck.
+
+       * jennifer (check_files): don't hard code Unstable as the suite
+       used to check for architecture validity; use
+       Dinstall::DefaultSuite instead, if it exists.
+       (accept): conditionalize
+
+       * katie.py (Katie.update_subst): support global maintainer
+       override with Dinstall::OverrideMaintainer.
+
+       * jennifer (check_distributions): new function, Distribution
+       validation and mapping.  Uses new SuiteMappings variable from
+       config file to abstract suite mappings.
+       (check_changes): call it.
+
+       * natalie: renamed; nothing imports or likely will for some time.
+
+       * denise (main): remove unused natalie import and init().
+
+       * natalie.py (init): removed.
+       (main): initalize here instead and don't hardcode the database
+       name.
+
+2002-04-30  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.close_bugs): new function, split out from
+       announce().
+       (Katie.announce): only call close_bugs() if Dinstall::CloseBugs is
+       true.
+       (Katie.close_bugs): new function, split out
+       (Katie.close_bugs): return immediately if there are no bugs to
+       close.
+
+       * jennifer (acknowledge_new): adapt for new utils.TemplateSubst().
+       * katie (do_reject): likewise.
+       (stable_install): likewise.
+       * katie.py (Katie.announce): likewise.
+       (Katie.accept): likewise.
+       (Katie.check_override): likewise.
+       (Katie.do_reject): likewise.
+       * lisa (do_bxa_notification): likewise.
+       * melanie (main): likewise.
+
+       * utils.py (TemplateSubst): change second argument to be a
+       filename rather than a template since every caller opened a file
+       on the fly which was ugly and leaked file descriptor.
+
+2002-04-29  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.announce): (modified) patch from Raphael Hertzog
+       <hertzog@debian.org> to send 'accepted' announce mails to the
+       PTS. [#128140]
+
+2002-04-24  James Troup  <james@nocrew.org>
+
+       * init_pool.sql (unstable_accepted): add two new fields to
+       unstable_accepted; in_accepted is a boolean indicating whether or
+       not the file is in accepted and last_used is a timestamp used by
+       rhona to determine when to remove symlinks for installed packages.
+
+       * katie.py (Katie.accept): auto-build support take 2.  Create
+       symlinks for all files into a seperate directory.  Add files to
+       unstable_accepted as paths to the new directory; mark them as
+       being in accepted for cameron.  Properly conditionalize it on a
+       configuration variable.
+
+       * katie (install): likewise.  Update symlinks to point into the
+       pool; mark the files for later deletion by rhona and mark them as
+       not being in accepted for cameron.
+
+       * rhona (clean_accepted_autobuild): new function.
+
+2002-04-22  James Troup  <james@nocrew.org>
+
+       * jennifer (check_files): handle db_access.get_location_id()
+       returning -1 properly/better.
+
+       * rhona (clean_fingerprints): new function.
+
+2002-04-21  James Troup  <james@nocrew.org>
+
+       * utils.py (touch_file): unused; remove.
+       (plural): likewise.
+
+       * jennifer (check_files): close file descriptor used to get the
+       control file.
+       (check_md5sums): likewise.
+       (callback): likewise.
+
+       * katie.py (Katie.do_reject): handle manual rejects much better;
+       call the editor first and get confirmation from the user before
+       proceeding.
+
+       * jennifer (check_signature): prefix_multi_line_string() moved to
+       utils.
+
+       * utils.py (prefix_multi_line_string): moved here from jennifer.
+
+2002-04-20  James Troup  <james@nocrew.org>
+
+       * lisa (main): handle non-existent files.
+
+       * ashley (main): allow *.katie files as arguments too.
+
+2002-04-19  James Troup  <james@nocrew.org>
+
+       * katie.py (Katie.accept): add stuff to help auto-building from
+       accepted; if the .orig.tar.gz is not part of the upload (i.e. it's
+       in the pool), create a symlink to it in the accepted directory and
+       add the .dsc and .{u,}deb(s) to a new 'unstable_accepted' table.
+
+       * katie (install): undo the "auto-building from accepted" stuff
+       (i.e. remove the .orig.tar.gz symlink and remove the files from
+       unstable_accepted table).
+
+2002-04-16  James Troup  <james@nocrew.org>
+
+       * jennifer (upload_too_new): fix typo which was causing all
+       timestamp comparisons to be against the .changes file.  Also move
+       back to the original directory so we do the comparisons against
+       accurate timestamps.
+
+       * tea (check_missing_tar_gz_in_dsc): new function.
+
+       * jennifer (check_dsc): add a check to ensure there is a .tar.gz
+       file mentioned in the .dsc.
+
+       * lisa (main): use X-Katie in the mail headers, not X-Lisa; that
+       way mails reach debian-{devel-,}changes@l.d.o.
+
+2002-04-02  Ryan Murray  <rmurray@debian.org>
+
+       * cron.daily: run shania after rhona
+       * cron.daily-non-US: likewise.
+
+2002-04-01  James Troup  <james@nocrew.org>
+
+       * katie: re-add proposed-updates/stable install support.
+
+       * katie.py (Katie.dump_vars): add changes["changes"] as an
+       optional field; should be mandatory later.
+
+2002-03-31  James Troup  <james@nocrew.org>
+
+       * katie (install): support a Suite::<foo>::CopyKatie similar to
+       CopyChanges.  Done seperately because .katie files don't need to
+       be mirrored and will probably be copied to another directory as a
+       result.
+
+       * halle (main): add missing debug to options.
+
+2002-03-29  James Troup  <james@nocrew.org>
+
+       * madison (main): add a -r/--regex option.
+
+2002-03-26  James Troup  <james@nocrew.org>
+
+       * lisa: don't trample on changes["distribution"]; make a copy of
+       it as changes["suite"] instead and use that.
+
+2002-03-16  Anthony Towns  <ajt@debian.org>
+
+       * templates/lisa.bxa_notification: Fix some grammatical errors.
+       Encourage contact via bxa@ftp-master email address.
+
+2002-03-15  James Troup  <james@nocrew.org>
+
+       * jennifer (check_timestamps): remove bogus raise in except.
+
+2002-03-15  Anthony Towns  <ajt@debian.org>
+
+       * cron.monthly: rotate mail/archive/bxamail as well as
+       mail/archive/mail. This is for a complete archive of
+       correspondence with the BXA.
+
+2002-03-14  Anthony Towns  <ajt@debian.org>
+
+       * crypto-in-main changes.
+
+       * utils.py (move, copy): add an optional perms= parameter to let you
+       set the resulting permissions of the moved/copied file
+       * katie.py (force_move): rejected/morgued files should be unreadable
+       * jennifer (do_byhand, acknowledge_new): pending new and byhand files
+       should be unreadable.
+
+2002-03-07  Ryan Murray  <rmurray@debian.org>
+
+       * katie (install): check for existance of "files id" key as well as
+       it being set to a valid value.
+       * katie (install): check for existense and valid value for location
+       id as well
+
+2002-03-05  Ryan Murray  <rmurray@debian.org>
+
+       * katie.py (do_reject): reread the reason file after editing it.
+
+2002-02-25  James Troup  <james@nocrew.org>
+
+       * jennifer (check_changes): don't enforce sanity in .changes file
+       names since it doesn't seem to be possible; pcmica-cs and similar
+       freak show packages in particular cause real problems.
+
+       * katie.py (Katie.check_dsc_against_db): initialize 'found' for
+       each dsc_file since the .orig.tar.gz checking code now uses it as
+       a boolean.  Fixes bizarro rejections which bogusly claimed
+       .diff.gz md5sum/size was incorrect.
+
+2002-02-24  James Troup  <james@nocrew.org>
+
+       * katie (process_it): reset reject_message.
+
+2002-02-22  James Troup  <james@nocrew.org>
+
+       * db_access.py(set_files_id): disable use of
+       currval('files_id_seq') because it was taking 3 seconds on auric
+       which is insane (most calls take < 0.01) and simply call
+       get_files_id() for the return value instead.
+
+       * katie.py (Katie.do_query): convenience function; unused by
+       default, useful for profiling.
+       * db_access.py (do_query): likewise.
+
+       * katie (install): fix insert SQL call when binary has no source.
+
+       * lisa (determine_new): auto-correct non-US/main to non-US.
+       (determine_new): add a warning when adding things to stable.
+       (edit_index): use our_raw_input().
+       (edit_overrides): likewise.
+       (do_new): likewise.  Use re.search() not re.match() since the
+       default answer may not be the first one.
+       (do_byhand): likewise.
+       (do_new): Default to 'S'kip and never 'A'dd.
+
+       * jennifer (action): pass prompt to our_raw_input().
+       * melanie (game_over): likewise.
+       * katie (action): likewise.
+
+       * utils.py (our_raw_input): add an optional prompt argument to
+       make the function more usable as a drop in replacement for
+       raw_input().
+
+       * jennifer (check_files): correct reject() to not double prefix
+       when using katie.py based functions.
+       (check_dsc): likewise.
+
+       * katie.py (Katie.reject): prepend a new line if appropriate
+       rathen than appending one to avoid double new lines when caller
+       adds one of his own.
+
+       * lisa (determine_new): warn if the package is also in other
+       components.
+
+2002-02-20  James Troup  <james@nocrew.org>
+
+       * jennifer (check_files): if .changes file lists "source" in
+       Architecture field, there must be a .dsc.
+
+2002-02-15  James Troup  <james@nocrew.org>
+
+       * ashley (main): add some missing fields.
+
+       * katie.py (Katie.check_dsc_against_db): fix to take into account
+       the fact that the .orig.tar.gz might be in byhand, accepted or
+       new.  Also fix calling of reject().
+       (Katie.check_binaries_against_db): fix calling of reject().
+       (Katie.check_source_against_db): likewise.
+       (Katie.dump_vars): add missing variables used for bug closures.
+
+       * lisa (changes_compare_by_time): sort by reverse time.
+
+       * katie.py (Katie.accept): log.
+       (Katie.dump_vars): missing has_key test for optional changes fields.
+
+       * jennifer (main): print "Accepted blah blah" to stdout, not stderr.
+       (process_it): traceback goes to stderr, not stdout.
+       (acknowledge_new): log.
+       (do_byhand): likewise.
+
+       * katie.py (Katie.update_subst): fix typo (Cnf vs. self.Cnf).
+
+       * add_constraints.sql: add grants for the new fingerprint table.
+
+2002-02-13  James Troup  <james@nocrew.org>
+
+       * katie (do_reject): basename the .changes filename before trying
+       to use it to construct the .reason filename.
+       (process_it): call Katie.update_subst() so do_reject() DTRT with
+       the mail template.
+       (do_reject): setup the mail template correctly.
+
+2002-02-12  James Troup  <james@nocrew.org>
+
+       * tea (process_dir): renamed 'arg' to 'unused' for clarity.
+       (check_files): don't abuse global dictionaries.
+       (Ent): use all variables.
+       (check_timestamps): don't abuse global dictionaries.
+
+       * fernanda.py: renamed to .py so lisa can import it.
+       (check_dsc): remove unused local variables (pychecker).
+       (display_changes): split off from check_changes.
+
+       * katie: rewritten; most of the functionality moves to jennifer;
+       what's left is the code to install packages once a day from the
+       'accepted' directory.
+
+       * jennifer: new program, processes packages in 'unchecked'
+       (i.e. most of the non-install functionality of old katie).
+
+       * katie.py: common functions shared between the clique of
+       jennifer, lisa and katie.
+
+       * lisa: new program; handles NEW and BYHAND packages.
+
+       * jeri (usage): new function.
+       (main): use it.
+       (check_package): remove unused local variable (pychecker).
+
+       * init_pool.sql: new table fingerprint.  Add fingerprint colums to
+       binaries and source.  Add install_date to source.
+
+       * halle (usage): new function.
+       (main): use it.  Remove unused options.
+       (check_changes): remove unused local variable (pychecker).
+
+       * add_constraints.sql: add fingerprint references.
+
+       * db_access.py (get_or_set_fingerprint_id): new function.
+
+       * ashley (main): new program; dumps the contents of a .katie file
+       to stdout.
+
+       * alyson (main): remove option handling since we don't actually
+       support any.
+       * cindy (main): likewise.
+
+       * remove unnecessary imports and pre-define globals (pychecker).
+
+2002-02-11  Anthony Towns  <ajt@debian.org>
+
+       * added installation-report and upgrade-report pseudo-packages
+
+2002-01-28  Martin Michlmayr  <tbm@cyrius.com>
+
+       * katie (update_subst): use Dinstall::TrackingServer.
+       * melanie (main): likewise.
+
+2002-01-27  James Troup  <james@nocrew.org>
+
+       * shania (main): it's IntLevel not IntVal; thanks to tbm@ for
+       noticing, jgg@ for fix.
+
+2002-01-19  James Troup  <james@nocrew.org>
+
+       * utils.py (extract_component_from_section): handle non-US
+       non-main properly.
+
+2002-01-12  James Troup  <james@nocrew.org>
+
+       * madison: add support for -S/--source-and-binary which displays
+       information for the source package and all it's binary children.
+
+2002-01-13  Anthony Towns  <ajt@debian.org>
+
+       * katie.conf: Remove Catherine Limit and bump stable to 2.2r5
+       * katie.conf: Add Dinstall::SigningKeyIds option, set to the 2001
+         and 2002 key ids.
+       * katie.conf-non-US: Likewise.
+       * ziyi: Suppoer Dinstall::SigningKeyIds to sign a Release file with
+         multiple keys automatically. This is probably only useful for
+         transitioning from an expired (or revoked?) key.
+
+2002-01-08  Ryan Murray  <rmurray@debian.org>
+
+       * debian/python-dep: new file that prints out python:Depends for
+         substvars
+       * debian/control: use python:Depends, build-depend on python
+         lower Depends: on postgresql to Suggests:
+       * debian/rules: determine python version, install to the correct
+         versioned dir
+
+2001-12-18  Anthony Towns  <ajt@debian.org>
+
+       * ziyi: unlink Release files before overwriting them (in case they've
+         been merged)
+       * ziyi: always include checksums/sizes for the uncompressed versions
+         of Sources and Packages, even if they're not present on disk
+
+2001-11-26  Ryan Murray  <rmurray@debian.org>
+
+       * ziyi (main): add SigningPubKey config option
+       * katie.conf: use SigningPubKey config option
+       * katie.conf-non-US: likewise
+
+2001-11-24  James Troup  <james@nocrew.org>
+
+       * katie (acknowledge_new): log newness.
+
+2001-11-24  Anthony Towns  <ajt@debian.org>
+
+       * ziyi (real_arch): bail out if some moron forgot to reset
+       untouchable on stable.
+       (real_arch): source Release files.
+
+2001-11-19  James Troup  <james@nocrew.org>
+
+       * claire.py (main): don't use apt_pkg.ReadConfigFileISC and
+       utils.get_conf().
+       * shania (main): likewise.
+
+       * rhona (main): add default options.
+
+       * db_access.py (get_archive_id): case independent.
+
+       * katie (action): sort files so that ordering is consistent
+       between mails; noticed/requested by Joey.
+
+2001-11-17  Ryan Murray  <rmurray@debian.org>
+
+       * utils.py: add get_conf function, change startup code to read all
+         config files to the Cnf that get_conf returns
+         use the component list from the katie conf rather than the hardcoded
+         list.
+       * all scripts: use new get_conf function
+       * shania: fix try/except around changes files
+       * jenna: only do debian-installer if it is a section in Cnf
+
+2001-11-16  Ryan Murray  <rmurray@debian.org>
+
+       * shania (main): Initialize days to a string of a number.
+                (main): Initialize Cnf vars before reading in Cnf
+
+2001-11-14  Ryan Murray  <rmurray@debian.org>
+
+       * shania (main): Initialize days to a number.
+
+2001-11-04  James Troup  <james@nocrew.org>
+
+       * docs/Makefile: use docbook-utils' docbook2man binary.
+
+       * Change all "if foo == []" constructs into "if not foo".
+
+       * katie (check_changes): when installing into stable from
+       proposed-updates, remove all non-stable target distributions.
+       (check_override): don't check for override disparities on stable
+       installs.
+       (stable_install): update install_bytes appropriately.
+       (reject): stable rejection support; i.e. don't remove files when
+       rejecting files in the pool, rather remove them from the
+       proposed-update suite instead, rhona will do the rest.
+       (manual_reject): support for a stable specific template.
+       (main): setup up stable rejector in subst.
+
+2001-11-04  Martin Michlmayr  <tbm@cyrius.com>
+
+       * debian/control (Build-Depends): docbook2man has been superseded
+       by docbook-utils.
+
+       * neve (main): exit with a more useful error message.
+       (update_suites): Suite::<suite>::Version, Origin and Description
+       are not required, so don't fail if they don't exist.
+
+       * db_access.py (get_archive_id): return -1 on error rather than
+       raise an exception.
+       (get_location_id): likewise.
+
+       * madison (main): don't exit on the first not-found package,
+       rather exit with an appropriate return code after processing all
+       packages.
+
+2001-11-03  James Troup  <james@nocrew.org>
+
+       * claire.py (find_dislocated_stable): add per-architecture
+       symlinks for dislocated architecture: all debs.
+
+2001-10-19  Anthony Towns  <ajt@debian.org>
+
+       * apt.conf*, katie.conf*: add mips, mipsel, s390 to testing.
+
+2001-10-10  Anthony Towns  <ajt@debian.org>
+
+       * claire.py (fix_component_section): do _not_ assign to None under
+       any circumstances
+
+2001-10-07  Martin Michlmayr  <tbm@cyrius.com>
+
+       * melanie (main): don't duplicate architectures when removing from
+       more than one suite.
+
+       * heidi (main, process_file, get_list): report suite name not ID.
+
+       * naima (nmu_p): be case insensitive.
+
+       * naima (action): more list handling clean ups.
+
+       * melanie (main): clean up lists handling to use string.join and
+       IN's.
+
+       * madison (main): clean up suite and architecture argument parsing
+       to use slices less and string.join more.
+
+       * utils.py (parse_changes): Use string.find() instead of slices for
+       string comparisons thereby avoid hardcoding the length of strings.
+       * ziyi (main): likewise.
+
+2001-10-07  James Troup  <james@nocrew.org>
+
+       * Remove mode argument from utils.open_files() calls if it's the
+       default, i.e. 'r'.
+
+2001-09-27  James Troup  <james@nocrew.org>
+
+       * katie (init): new function; options clean up.
+       (usage): add missing options, remove obsolete ones.
+       (main): adapt for the two changes above.  If the lock file or
+       new-ack log file don't exist, create them.  Don't try to open the
+       new-ack log file except running in new-ack mode.
+
+       * alyson (main): initialize all the tables that are based on the
+       conf file.
+
+       * utils.py (touch_file): like touch(1).
+       (where_am_i): typo.
+
+       * catherine (usage): new.
+       (main): use it.  options cleanup.
+       * claire.py: likewise.
+       * fernanda: likewise.
+       * heidi: likewise.
+       * jenna: likewise.
+       * shania: likewise.
+       * ziyi: likewise.
+
+       * andrea: options cleanup.
+       * charisma: likewise.
+       * julia: likewise.
+       * madison: likewise.
+       * melanie: likewise.
+       * natalie: likewise.
+       * rhona: likewise.
+       * tea: likewise.
+
+2001-09-26  James Troup  <james@nocrew.org>
+
+       * utils.py: default to sane config file locations
+       (/etc/katie/{apt,katie}.conf.  They can be the actual config files
+       or they can point to the real ones through use of a new Config
+       section.  Based on an old patch by Adam Heath.
+       (where_am_i): use the new default config stuff.
+       (which_conf_file): likewise.
+       (which_apt_conf_file): likewise.
+
+       * charisma (main): output defaults to
+       `Package~Version\tMaintainer'; input can be of either form.  When
+       parsing the new format do version comparisons, when parsing the
+       old format assume anything in the extra file wins.  This fixes the
+       problem of newer non-US packages being overwhelmed by older
+       versions still in stable on main.
+
+2001-09-17  James Troup  <james@nocrew.org>
+
+       * natalie.py (list): use result_join().
+
+       * denise (main): result_join() moved to utils.
+
+       * utils.py (result_join): move to utils; add an optional seperator
+       argument.
+
+2001-09-14  James Troup  <james@nocrew.org>
+
+       * heidi (set_suite): new function; does --set like natalie does,
+       i.e. turns it into a sequence of --add's and --remove's
+       internally.  This is a major win (~20 minute run time > ~20
+       seconds) in the common, everday (i.e. testing) case.
+       (get_id): common code used by set_suite() and process_file().
+       (process_file): call set_suite() and get_id().
+       (main): add logging support.
+
+       * julia: new script; syncs PostgeSQL with (LDAP-generated) passwd
+       files.
+
+       * utils.py (parse_changes): use slices or simple string comparison
+       in favour of regexes where possible.
+
+       * sql-aptvc.cpp (versioncmp): rewritten to take into account the
+       fact that the string VARDATA() points to are not null terminated.
+
+       * denise (result_join): new function; like string.join() but
+       handles None's.
+       (list): use it.
+       (main): likewise.
+
+       * charisma (main): python-pygresql 7.1 returns None not "".
+
+2001-09-14  Ryan Murray  <rmurray@debian.org>
+
+       * natalie.py (list): handle python-pygresql 7.1 returning None.
+
+2001-09-10  Martin Michlmayr  <tbm@cyrius.com>
+
+       * madison (main): return 1 if no package is found.
+
+2001-09-08  Martin Michlmayr  <tbm@cyrius.com>
+
+       * madison (main): better error handling for incorrect
+       -a/--architecture or -s/--suite arguments.
+       (usage): new.
+       (main): use it.
+
+2001-09-05  Ryan Murray  <rmurray@debian.org>
+
+       * charisma, madison, katie: remove use of ROUser
+       * katie.conf,katie.conf-non-US: remove defintion of ROUser
+
+2001-08-26  James Troup  <james@nocrew.org>
+
+       * katie (nmu_p.is_an_nmu): use maintaineremail to check for group
+       maintained packages at cjwatson@'s request.
+
+2001-08-21  James Troup  <james@nocrew.org>
+
+       * madison (main): add -a/--architecture support.
+
+       * jenna: use logging instead of being overly verbose on stdout.
+
+2001-08-11  Ryan Murray  <rmurray@debian.org>
+
+       * melanie: add functional help option
+
+2001-08-07  Anthony Towns  <ajt@debian.org>
+
+       * apt.conf, katie.conf: Add ia64 and hppa to testing.
+
+2001-07-28  James Troup  <james@nocrew.org>
+
+       * katie (check_dsc): ensure source version is >> than existing
+       source in target suite.
+
+2001-07-25  James Troup  <james@nocrew.org>
+
+       * natalie.py: add logging support.
+
+       * utils.py (open_file): make the second argument optional and
+       default to read-only.
+
+       * rene (main): work around broken source packages that duplicate
+       arch: all packages with arch: !all packages (no longer allowed
+       into the archive by katie).
+
+2001-07-13  James Troup  <james@nocrew.org>
+
+       * katie (action): don't assume distribution is a dictionary.
+       (update_subst): don't assume architecture is a dictionary and that
+       maintainer822 is defined.
+       (check_changes): recognise nk_format exceptions.
+       (check_changes): reject on 'testing' only uploads.
+       (check_files): when checking to ensure all packages are newer
+       versions check against arch-all packages too.
+       (check_dsc): enforce the existent of a sane set of mandatory
+       fields.  Ensure the version number in the .dsc (modulo epoch)
+       matches the version number in the .changes file.
+
+       * utils.py (changes_compare): ignore all exceptions when parsing
+       the changes files.
+       (build_file_list): don't UNDEF on a changes file with no format
+       field.
+
+2001-07-07  James Troup  <james@nocrew.org>
+
+       * katie (nmu_p.is_an_nmu): check 'changedby822' for emptiness
+       rather than 'changedbyname' to avoid false negatives on uploads
+       with an email-address-only Changed-By field.
+       (check_dsc): don't overwrite reject_message; append to it.
+       (check_signature): likewise.
+       (check_changes): likewise.
+       (announce): condition logging on 'action'.
+
+       * logging.py: new logging module.
+
+       * katie: Cleaned up code by putting Cnf["Dinstall::Options"]
+       sub-tree into a separate (global) variable.
+       (check_dsc): ensure format is 1.0 to retain backwards
+       compatability with dpkg-source in potato.
+       (main): only try to obtain the lock when not running in no-action
+       mode.
+       Use the new logging module.
+
+       * christina: initial version; only partially usable.
+
+2001-06-28  Anthony Towns  <ajt@debian.org>
+
+       * apt.conf: Add ExtraOverrides to auric.
+
+2001-06-25  James Troup  <james@nocrew.org>
+
+       * katie (nmu_p.is_an_nmu): the wonderful dpkg developers decided
+       they preferred the name 'Uploaders'.
+
+2001-06-23  James Troup  <james@nocrew.org>
+
+       * katie (check_files): fix typo in uncommon rejection message,
+       s/sourceversion/source version/.
+
+       * denise (main): we can't use print because stdout has been
+       redirected.
+
+       * katie (source_exists): new function; moved out of check_files()
+       and added support for binary-only NMUs of earlier sourceful NMUs.
+
+       * rhona (clean): find_next_free has moved.
+
+       * utils.py (find_next_free): new function; moved here from rhona.
+       Change too_many to be an argument with a default value, rather
+       than a hardcoded variable.
+
+       * shania: rewritten to work better; REJECTion reminder mail
+       handling got lost though.
+
+2001-06-22  James Troup  <james@nocrew.org>
+
+       * rhona (main): remove unused override code.
+
+       * fernanda (main): remove extraneous \n's from utils.warn calls.
+       * natalie.py (list): likewise.
+
+       * catherine, cindy, denise, heidi, jenna, katie, neve, rhona, tea:
+       use utils.{warn,fubar} where appropriate.
+
+2001-06-21  James Troup  <james@nocrew.org>
+
+       * katie (nmu_p): new class that encapsulates the "is a nmu?"
+       functionality.
+       (nmu_p.is_an_nmu): add support for multiple maintainers specified
+       by the "Maintainers" field in the .dsc file and maintainer groups.
+       (nmu_p.__init__): read in the list of group maintainer names.
+       (announce): use nmu_p.
+
+2001-06-20  James Troup  <james@nocrew.org>
+
+       * rene (main): hardcode the suite experimental is compared to by
+       name rather than number.
+
+       * katie (check_files): differentiate between doesn't-exist and
+       permission-denied in "can not read" rejections; requested by edd@.
+       (check_dsc): use os.path.exists rather than os.access to allow the
+       above check to kick in.
+
+       * heidi (process_file): read all input before doing anything and
+       use transactions.
+
+2001-06-15  James Troup  <james@nocrew.org>
+
+       * fernanda: new script; replaces old 'check' shell script
+       nastiness.
+
+2001-06-14  James Troup  <james@nocrew.org>
+
+       * katie: actually import traceback module to avoid amusing
+       infinite loop.
+
+2001-06-10  James Troup  <james@nocrew.org>
+
+       * utils.py (extract_component_from_section): fix to handle just
+       'non-free' and 'contrib'.  Also fix to handle non-US in a
+       completely case insensitive manner as a component.
+
+2001-06-08  James Troup  <james@nocrew.org>
+
+       * madison (arch_compare): sort function that sorts 'source' first
+       then alphabetically.
+       (main): use it.
+
+2001-06-05  Jeff Licquia  <jlicquia@progeny.com>
+
+       * catherine (poolize): explicitly make poolized_size a long so it
+       doesn't overflow when poolizing e.g. entire archives.
+
+2001-06-01  James Troup  <james@nocrew.org>
+
+       * utils.py (send_mail): throw exceptions rather than exiting.
+
+       * katie (process_it): catch exceptions and ignore them.
+
+2001-06-01  Michael Beattie  <mjb@debian.org>
+
+       * added update-mailingliststxt and update-readmenonus to update
+       those files, respectively. modified cron.daily{,-non-US} to
+       use them.
+
+2001-05-31  Anthony Towns  <ajt@debian.org>
+
+       * rhona: make StayOfExecution work.
+
+2001-05-31  James Troup  <james@nocrew.org>
+
+       * rhona (find_next_free): fixes to not overwrite files but rename
+       them by appending .<n> instead.
+       (clean): use find_next_free and use dated sub-directories in the
+       morgue.
+
+       * utils.py (move): don't overwrite files unless forced to.
+       (copy): likewise.
+
+2001-05-24  James Troup  <james@nocrew.org>
+
+       * katie (check_files): determine the source version here instead
+       of during install().
+       (check_files): check for existent source with bin-only NMU
+       support.
+       (main): sort the list of changes so that the source-must-exist
+       check Does The Right Thing(tm).
+
+       * utils.py (changes_compare): new function; sorts a list of
+       changes files by 'have-source', source, version.
+       (cc_fix_changes): helper function.
+       (parse_changes): use compiled regexes.
+       (fix_maintainer): likewise.
+
+       * rene (main): warn about packages in experimental that are
+       superseded by newer versions in unstable.
+
+2001-05-21  James Troup  <james@nocrew.org>
+
+       * rene (main): add support for checking for ANAIS (Architecture
+       Not Allowed In Source) packages.
+
+2001-05-17  James Troup  <james@nocrew.org>
+
+       * katie (check_changes): initalize `architecture' dictionary in
+       changes global so that if we can't parse the changes file for
+       whatever reason we don't undef later on.
+
+       * utils.py (parse_changes): fix handling of multi-line fields
+       where the first line did have data.
+
+2001-05-05  Anthony Towns  <ajt@debian.org>
+
+       * ziyi: Add "NotAutomatic: yes" to experimental Release files.
+       (It should always have been there. Ooopsy.)
+
+2001-05-03  Anthony Towns  <ajt@debian.org>
+
+       * jenna: Cleanup packages that move from arch:any to arch:all or
+       vice-versa.
+
+2001-04-24  Anthony Towns  <ajt@debian.org>
+
+       * ziyi: add ``SHA1:'' info to Release files. Also hack them up to
+       cope with debian-installer and boot-floppies' md5sum.txt.
+
+2001-04-16  James Troup  <james@nocrew.org>
+
+       * katie (check_changes): add missing %s format string argument.
+       (stable_install): temporary work around for morgue location to
+       move installed changes files into.
+       (stable_install): helps if you actually read in the template.
+       (manual_reject): fix for editing of reject messages which was
+       using the wrong variable name.
+
+       * jenna (generate_src_list): typo; s/package/source/; fixes undef crash.
+
+2001-04-13  James Troup  <james@nocrew.org>
+
+       * katie (manual_reject): Cc the installer.
+       (reject): don't.
+       (check_changes): remove unused maintainer-determination code.
+       (update_subst): add support for Changed-By when setting the
+       *MAINTAINER* variables.
+
+       * rene (bar): new function to check for packages on architectures
+       when they shouldn't be.
+
+       * natalie.py (main): use fubar() and warn() from utils.
+
+       * utils.py (whoami): new mini-function().
+       * melanie (main): use it.
+       * katie (manual_reject): likewise.
+
+2001-04-03  James Troup  <james@nocrew.org>
+
+       * katie (action): ignore exceptions from os.path.getmtime() so we
+       don't crash on non-existent changes files (e.g. when they are
+       moved between the start of the install run in cron.daily and the
+       time we get round to processing them).
+
+       * madison (main): also list source and accept -s/--suite.
+
+       * jenna (generate_src_list): missing \n in error message.
+
+       * katie (update_subst): add sane defaults for when changes is
+       skeletal.
+
+2001-03-29  James Troup  <james@nocrew.org>
+
+       * melanie (main): use fubar() and warn() from utils.  Remember who
+       the maintainer for the removed packages are and display that info
+       to the user.  Readd support for melanie-specific Bcc-ing that got
+       lost in the TemplateSubst transition.
+
+       * utils.py (fubar): new function.
+       (warn): like wise.
+
+       * db_access.py (get_maintainer): as below.
+
+       * charisma (get_maintainer): moved the bulk of this function to
+       db_access so that melanie can use it too.
+
+       * claire.py (find_dislocated_stable): restrict the override join
+       to those entries where the suite is stable; this avoids problems
+       with packages which have moved to new sections (e.g. science)
+       between stable and unstable.
+
+2001-03-24  James Troup  <james@nocrew.org>
+
+       * catherine (poolize): new function; not really independent of
+       main() fully, yet.
+       (main): use it.
+
+       * katie (stable_install): __SUITE__ needs to be space prefixed
+       because buildd's check for 'INSTALLED$'.
+
+2001-03-22  James Troup  <james@nocrew.org>
+
+       * utils.py (regex_safe): also need to escape '.'; noticed by ajt@.
+
+       * jenna: rewritten; now does deletions on a per-suite level
+       instead of a per-suite-component-architecture-type level.  This
+       allows mutli-component packages to be auto-cleaned (and as a
+       bonus, reduces the code size and duplication).
+
+2001-03-22  Anthony Towns  <ajt@debian.org>
+
+       * ziyi (main): fix ziyi to overwrite existing Release.gpg files
+       instead of just giving a gpg error.
+
+2001-03-21  James Troup  <james@nocrew.org>
+
+       * madison (main): use apt_pkg.VersionCompare to sort versions so
+       that output is correctly sorted for packages like debhlper.
+       Noticed by ajt@.
+
+       * tea (check_source_in_one_dir): actually find problematic source
+       packages.
+
+       * katie (check_dsc): remember the orig.tar.gz's location ID if
+       it's not in a legacy suite.
+       (check_diff): we don't use orig_tar_id.
+       (install): add code to handle sourceful diff-only upload of
+       packages which change components by copying the .orig.tar.gz into
+       the new component, if it doesn't already exist there.
+       (process_it): reset orig_tar_location (as above).
+
+       * melanie (main): use template substiution for the bug closing
+       emails.
+       (main): don't hardcode bugs.debian.org or packages.debian.org
+       either; use configuration items.
+
+       * katie: likewise.
+
+       * natalie.py (init): use None rather than 'localhost' for the
+       hostname given to pg.connect.
+
+       * utils.py (TemplateSubst): new function; lifted from
+       userdir-ldap.
+
+2001-03-21  Ryan Murray  <rmurray@debian.org>
+
+       * katie (announce): fix the case of non-existent
+       Suite::$SUITE::Announce.
+
+2001-03-20  Ryan Murray  <rmurray@debian.org>
+
+       * debian/rules (binary-indep): install melanie into /usr/bin/ not
+       /usr/.
+
+       * alyson (main): use config variable for database name.
+       * andrea (main): likewise.
+       * catherine (main): likewise.
+       * charisma (main): likewise.
+       * cindy (main): likewise.
+       * claire.py (main): likewise.
+       * denise (main): likewise.
+       * heidi (main): likewise.
+       * jenna (main): likewise.
+       * katie (main): likewise.
+       * madison (main): likewise.
+       * melanie (main): likewise.
+       * neve (main): likewise.
+       * rhona (main): likewise.
+       * tea (main): likewise.
+
+2001-03-15  James Troup  <james@nocrew.org>
+
+       * rhona (check_sources): fixed evil off by one (letter) error
+       which was causing only .dsc files to be deleted when cleaning
+       source packages.
+
+       * charisma (get_maintainer_from_source): remove really stupid and
+       gratuitous IN sub-query and replace with normal inner join.
+       (main): connect as read-only user nobody.
+
+       * rhona (clean_maintainers): rewritten to use SELECT and sub-query
+       with EXISTS.
+       (check_files): likewise; still disabled by default though.
+       (clean_binaries): add ' seconds' to the mysterious number in the
+       output.
+       (clean): likewise.
+
+       * tea (check_files): add missing global declaration on db_files.
+
+2001-03-14  James Troup  <james@nocrew.org>
+
+       * rhona: rewritten large chunks. Removed a lot of the silly
+       selecting into dictionaries and replaced it with 'where exists'
+       based sub queries.  Added support for StayOfExecution.  Fix the
+       problem with deleting dsc_files too early and disable cleaning of
+       unattached files.
+
+2001-03-14  Anthony Towns  <ajt@debian.org>
+
+       * katie (announce): also check Changed-By when trying to detect
+       NMUs.
+
+2001-03-06  Anthony Towns  <ajt@debian.org>
+
+       * ziyi (main): Generate Release.gpg files as well, using the key from
+       Dinstall::SigningKey in katie.conf, if present. That key has to be
+       passwordless, and hence kept fairly secretly.
+
+2001-03-02  James Troup  <james@nocrew.org>
+
+       * utils.py (str_isnum): new function; checks to see if the string
+       is a number.
+
+       * shania (main): fix _hideous_ bug which was causing all files > 2
+       weeks old to be deleted from incoming, even if they were part of a
+       valid upload.
+
+2001-02-27  James Troup  <james@nocrew.org>
+
+       * melanie (main): accept new argument -C/--carbon-copy which
+       allows arbitarty carbon-copying of the bug closure messages.
+       Cleaned up code by putting Cnf["Melanie::Options"] sub-tree into a
+       separate variable.
+
+2001-02-27  Anthony Towns  <ajt@debian.org>
+
+       * ziyi: new program; generates Release files.
+
+2001-02-25  James Troup  <james@nocrew.org>
+
+       * katie (reject): add missing '\n' to error message.
+       (manual_reject): likewise.
+       (install): catch exceptions from moving the changes file into DONE
+       and ignore them.
+
+       * tea (check_md5sums): new function.
+
+2001-02-25  Michael Beattie  <mjb@debian.org>
+
+       * melanie: use $EDITOR if available.
+
+2001-02-15  James Troup  <james@nocrew.org>
+
+       * utils.py (parse_changes): don't crash and burn on empty .changes
+       files.  Symptoms noticed by mjb@.
+
+2001-02-15  Adam Heath  <doogie@debian.org>
+
+       * denise (main): use an absolute path for the output filename.
+
+       * sql-aptvc.cpp: don't #include <utils/builtins.h> as it causes
+       compile errors with postgresql-dev >= 7.0.
+
+2001-02-12  James Troup  <james@nocrew.org>
+
+       * rene: initial version.
+
+       * andrea: initial version.
+
+       * catherine (main): remove obsolete assignment of arguments.
+
+2001-02-09  James Troup  <james@nocrew.org>
+
+       * catherine: first working version.
+
+2001-02-06  James Troup  <james@nocrew.org>
+
+       * katie (check_files): validate the priority field; i.e. ensure it
+       doesn't contain a '/' (to catch people prepending the priority
+       with the component rather than the section).
+       (check_override): don't warn about source packages; the only check
+       is on section and we have no GUI tools that would use the Section
+       field for a Sources file.
+       (announce): use tags rather than severities for NMUs.  Requested
+       by Josip Rodin <joy@>. [#78035]
+
+2001-02-04  James Troup  <james@nocrew.org>
+
+       * tea (check_override): new function; ensures packages in suites
+       are also in the override file.  Thanks to bod@ for noticing that
+       such packages existed.
+
+       * katie: move file type compiled regular expressions to utils as
+       catherine uses them too.
+       (check_changes): always default maintainer822 to the installer
+       address so that any bail out won't cause undefs later.
+       (check_files): update file type re's to match above.
+       (stable_install): likewise.
+       (reject): handle any except from moving the changes files.  Fixes
+       crashes on unreadable changes files.
+
+       * melanie (main): add an explanation of why things are not removed
+       from testing.
+
+2001-01-31  James Troup  <james@nocrew.org>
+
+       * melanie (main): ignore a) no message, b) removing from stable or
+       testing when invoked with -n/--no-action.
+
+       * katie (check_override): lower section before checking to see if
+       we're whining about 'non-US' versus 'non-US/main'.
+
+       * sql-aptvc.cpp: new file; wrapper around apt's version comparison
+       function so that we can use inside of PostgreSQL.
+
+2001-01-28  James Troup  <james@nocrew.org>
+
+       * katie: updated to pass new flag to parse_changes() and deal with
+       the exception raised on invalid .dsc's if appropriate.
+       * shania (main): likewise.
+       * melanie (main): likewise.
+
+       * tea (check_dscs): new function to validate all .dsc files in
+       unstable.
+
+       * utils.py (parse_changes): if passed an additional flag, validate
+       the .dsc file to ensure it's extractable by dpkg-source.
+       Requested by Ben Collins <bcollins@>.
+
+2001-01-27  James Troup  <james@nocrew.org>
+
+       * madison (main): connect to the DB as nobody.
+
+       * katie (check_files): remove support for -r/--no-version-check
+       since it makes no sense under katie (jenna will automatically
+       remove the (new) older version) and was evil in any event.
+       (check_changes): add missing new line to rejection message.
+       (check_dsc): likewise.
+       (process_it): reset reject_message here.
+       (main): not here.  Also remove support for -r.
+
+2001-01-26  James Troup  <james@nocrew.org>
+
+       * katie (check_override): don't whine about 'non-US/main' versus
+       'non-US'.
+
+2001-01-26  Michael Beattie  <mjb@debian.org>
+
+       * natalie.py (usage): new function.
+       (main): use it.
+
+2001-01-25  Antti-Juhani Kaijanaho  <gaia@iki.fi>
+
+       * update-mirrorlists: Update README.non-US too (request from Joy).
+
+2001-01-25  James Troup  <james@nocrew.org>
+
+       * katie (reject): catch any exception from utils.move() and just
+       pass, we previously only caught can't-overwrite errors and not
+       can't-read ones.
+
+       * jenna (generate_src_list): use ORDER BY in selects to avoid
+       unnecessary changes to Packages files.
+       (generate_bin_list): likewise.
+
+       * utils.py (extract_component_from_section): separated out from
+       build_file_list() as it's now used by claire too.
+
+       * claire.py (find_dislocated_stable): rewrite the query to extract
+       section information and handle component-less locations properly.
+       Thanks to ajt@ for the improved queries.
+       (fix_component_section): new function to fix components and
+       sections.
+
+2001-01-23  James Troup  <james@nocrew.org>
+
+       * katie (check_files): set file type for (u?)debs first thing, so
+       that if we continue, other functions which rely on file type
+       existing don't bomb out.  If apt_pkg or apt_inst raise an
+       exception when parsing the control file, don't try any other
+       checks, just drop out.
+       (check_changes): new test to ensure there is actually a target
+       distribution.
+
+2001-01-22  James Troup  <james@nocrew.org>
+
+       * katie (usage): s/dry-run/no-action/.  Noticed by Peter Gervai
+       <grin@>.
+       (check_changes): when mapping to unstable, remember to actually
+       add unstable to the suite list and not just remove the invalid
+       suite.
+
+2001-01-21  James Troup  <james@nocrew.org>
+
+       * katie (check_files): catch exceptions from debExtractControl()
+       and reject packages which raise any.
+
+2001-01-19  James Troup  <james@nocrew.org>
+
+       * katie (check_signature): basename() file name in rejection
+       message.
+
+2001-01-18  James Troup  <james@nocrew.org>
+
+       * katie (in_override_p): remember the section and priority from
+       the override file so we can check them against the package later.
+       (check_override): new function; checks section and priority (for
+       binaries) from the package against the override file and mails the
+       maintainer about any disparities.
+       (install): call check_override after announcing the upload.
+
+2001-01-16  James Troup  <james@nocrew.org>
+
+       * utils.py (build_file_list): catch ValueError's from splitting up
+       the files field and translate it into a parse error.
+
+       * tea: add support for finding unreferenced files.
+
+       * katie (in_override_p): add support for suite-aliasing so that
+       proposed-updates uploads work again.
+       (check_changes): catch parses errors from utils.build_file_list().
+       (check_dsc): likewise.
+       (check_diff): yet more dpkg breakage so we require even newer a
+       version.
+
+       * jenna (generate_bin_list): don't do nasty path munging that's no
+       longer needed.
+
+       * denise (main): support for non-US; and rename testing's override
+       files so they're based on testing's codename.
+
+2001-01-16  Martin Michlmayr  <tbm@cyrius.com>
+
+       * melanie: add to the bug closing message explaining what happens
+       (or rather doesn't) with bugs against packages that have been
+       removed.
+
+2001-01-14  James Troup  <james@nocrew.org>
+
+       * charisma (main): fix silly off-by-one error; suite priority
+       checking was done using "less than" rather than "less than or
+       equal to" which was causing weird hesienbugs with wrong Maintainer
+       fields.
+
+2001-01-10  James Troup  <james@nocrew.org>
+
+       * katie (in_override_p): adapted to use SQL-based overrides.
+       read_override_file function disappears.
+
+       * db_access.py: add new functions get_section_id, get_priority_id
+       and get_override_type_id.
+       (get_architecture_id): return -1 if the architecture is not found.
+
+       * heidi: switch %d -> %d in all SQL queries.
+       (get_list): Use string.join where appropriate.
+
+       * rhona (in_override_p): don't die if the override file doesn't
+       exist.
+       (main): warn if the override file doesn't exist.
+
+       * alyson: new script; will eventually sync the config file and the
+       SQL database.
+
+       * natalie.py: new script; manipulates overrides.
+
+       * melanie: new script; removes packages from suites.
+
+2001-01-08  James Troup  <james@nocrew.org>
+
+       * katie (re_bad_diff): whee; dpkg 1.8.1.1 didn't actually fix
+       anything it just changed the symptom.  Recognise the new breakage
+       and reject them too.
+
+2001-01-07  James Troup  <james@nocrew.org>
+
+       * katie (check_dsc): when adding the cwd copy of the .orig.tar.gz
+       to the .changes file, be sure to set up files[filename]["type"]
+       too.
+
+2001-01-06  James Troup  <james@nocrew.org>
+
+       * katie (check_diff): new function; detects bad diff files
+       produced by dpkg 1.8.1 and rejects thems.
+       (process_it): call check_diff().
+       (check_dsc): gar.  Add support for multiple versions of the
+       .orig.tar.gz file in the archive from -sa uploads.  Check md5sum
+       and size against all versions and use one which matches if
+       possible and exclude any that don't from being poolized to avoid
+       file overwrites.  Thanks to broonie@ for providing the example.
+       (install): skip any files marked as excluded as above.
+
+2001-01-05  James Troup  <james@nocrew.org>
+
+       * heidi (process_file): add missing argument to error message.
+
+2001-01-04  James Troup  <james@nocrew.org>
+
+       * heidi (main): fix handling of multiple files by reading all
+       files not just the first file n times (where n = the number of
+       files passed as arguments).
+
+2001-01-04  Anthony Towns  <ajt@debian.org>
+
+       * katie (check_dsc): proper fix for the code which locates the
+       .orig.tar.gz; check for '<filename>$' or '^<filename>$'.
+
+2000-12-20  James Troup  <james@nocrew.org>
+
+       * rhona: replace IN's with EXISTS's to make DELETE time for
+       binaries and source sane on auric.  Add a -n/--no-action flag and
+       make it stop actions if used.  Fixed a bug in binaries deletion
+       with no StayOfExecution (s/</<=/).  Add working -h/--help and
+       -V/--version.  Giving timing info on deletion till I'm sure it's
+       sane.
+
+       * katie (check_changes): map testing to unstable.
+
+       * madison: new script; shows versions in different architectures.
+
+       * katie (check_dsc): ensure size matches as well as md5sum;
+       suggested by Ben Collins <bcollins@debian.org> in Debian Bug
+       #69702.
+
+2000-12-19  James Troup  <james@nocrew.org>
+
+       * katie (reject): ignore the "can't overwrite file" exception from
+       utils.move() and leave the files where they are.
+       (reject): doh! os.access() test was reversed so we only tried to
+       move files which didn't exist... replaced with os.path.exists()
+       test the right way round.
+
+       * utils.py (move): raise an exception if we can't overwrite the
+       destination file.
+       (copy): likewise.
+
+2000-12-18  James Troup  <james@nocrew.org>
+
+       * rhona: first working version.
+
+       * db_access.py (get_files_id): force both sizes to be integers.
+
+       * katie (main): use size_type().
+
+       * utils.py (size_type): new function; pretty prints a file size.
+
+2000-12-17  James Troup  <james@nocrew.org>
+
+       * charisma (main): do version compares so that older packages do
+       not override newer ones and process source first as source wins
+       over binaries in terms of who we think of as the Maintainer.
+
+2000-12-15  James Troup  <james@nocrew.org>
+
+       * katie (install): use the files id for the .orig.tar.gz from
+       check_dsc().
+       (install): limit select for legacy source to a) source in legacy
+       or legacy-mixed type locations and b) distinct on files.id.
+       (install): rather than the bizarre insert new, delete old method
+       for moving legacy source into the pool, use a simple update of
+       files.
+       (process_it): initalize some globals before each process.
+
+2000-12-14  James Troup  <james@nocrew.org>
+
+       * katie (in_override_p): index on binary_type too since .udeb
+       overrides are in a different file.
+       (read_override_file): likewise.
+       (check_files): correct filename passed to get_files_id().
+       (check_dsc): we _have_ to preprend '/' to the filename to avoid
+       mismatches like jabber.orig.tar.gz versus libjabber.orig.tar.gz.
+       (check_dsc): remember the files id of the .orig.tar.gz, not the
+       location id.
+
+2000-12-13  James Troup  <james@nocrew.org>
+
+       * utils.py (poolify): force the component to lower case except for
+       non-US.
+
+       * katie (in_override_p): handle .udeb-specific override files.
+       (check_files): pass the binary type to in_override_p().
+       (check_dsc): remember the location id of the old .orig.tar.gz in
+       case it's not in the pool.
+       (install): use location id from dsc_files; which is where
+       check_dsc() puts it for old .orig.tar.gz files.
+       (install): install files after all DB work is complete.
+       (reject): basename() the changes filename.
+       (manual_reject): likewise.
+
+       * shania: new progam; replaces incomingcleaner.
+
+2000-12-05  James Troup  <james@nocrew.org>
+
+       * katie (check_changes): if inside stable and can't find files
+       from the .changes; assume it's installed in the pool and chdir()
+       to there.
+       (check_files): we are not installing for stable installs, so don't
+       check for overwriting existing files.
+       (check_dsc): likewise.
+       (check_dsc): reorder .orig.tar.gz handling so that we search in
+       the pool first and only then fall back on any .orig.tar.gz in the
+       cwd; this avoids false positives on the overwrite check when
+       people needlessly reupoad the .orig.tar.gz in a non-sa upload.
+       (install): if this is a stable install, bail out to
+       stable_install() immediately.
+       (install): dsc_files handling was horribly broken. a) we need to
+       add files from the .dsc and not the .changes (duh), b) we need to
+       add the .dsc file itself to dsc_files (to be consistent with neve
+       if for no other reason).
+       (stable_install): new function; handles installs from inside
+       proposed-updates to stable.
+       (acknowledge_new): basename changes_filename before doing
+       anything.
+       (process_it): absolutize the changes filename to avoid the
+       requirement of being in the same directory as the .changes file.
+       (process_it): save and restore the cwd as stable installs can
+       potentially jump into the pool to find files.
+
+       * jenna: dislocated_files support using claire.
+
+       * heidi (process_file): select package field from binaries
+       explicitly.
+
+       * db_access.py (get_files_id): fix cache key used.
+
+       * utils.py (build_file_list): fix 'non-US/non-free' case in
+       section/component splitting.
+       (move): use os.path.isdir() rather than stat.
+       (copy): likewise.
+
+       * claire.py: new file; stable in non-stable munger.
+
+       * tea: new file; simply ensures all files in the DB exist.
+
+2000-12-01  James Troup  <james@nocrew.org>
+
+       * katie (check_dsc): use regex_safe().
+       (check_changes): typo in changes{} key:
+       s/distributions/distribution/.
+       (install): use changes["source"], not files[file]["source"] as the
+       latter may not exist and the former is used elsewhere.  Commit the
+       SQL transaction earlier.
+
+       * utils.py (regex_safe): new function; escapes characters which
+       have meaning to SQL's regex comparison operator ('~').
+
+2000-11-30  James Troup  <james@nocrew.org>
+
+       * katie (install): pool_location is based on source package name,
+       not binary package.
+
+       * utils.py (move): if dest is a directory, append the filename
+       before chmod-ing.
+       (copy): ditto.
+
+       * katie (check_files): don't allow overwriting of existing .debs.
+       (check_dsc): don't allow overwriting of existing source files.
+
+2000-11-27  James Troup  <james@nocrew.org>
+
+       * katie (check_signature): don't try to load rsaref; it's
+       obsolete.
+       (in_override_p): don't try to lookup override entries for packages
+       with an invalid suite name.
+       (announce): don't assume the suite name is valid; use Find() to
+       lookup the mailing list name for announcements.
+
+       * utils.py (where_am_i): typo; hostname is in the first element,
+       not second.
+
+       * db_access.py (get_suite_id): return -1 on an unknown suite.
+
+2000-11-26  James Troup  <james@nocrew.org>
+
+       * katie (install): fix CopyChanges handling; typo in in checking
+       Cnf for CopyChanges flag and was calling non-existent function
+       copy_file.
+
+       * utils.py (copy): new function; clone of move without the
+       unlink().
+
+2000-11-25  James Troup  <james@nocrew.org>
+
+       * utils.py (build_file_list): handle non-US prefixes properly
+       (i.e. 'non-US' -> 'non-US/main' and 'non-US/libs' -> 'non-US/main'
+       + 'libs' not 'non-US/libs').
+       (send_mail): add '-odq' to sendmail invocation to avoid DNS lookup
+       delays.  This is possibly(/probably) exim speicifc and (like other
+       sendmail options) needs to be in the config file.
+
+2000-11-24  James Troup  <james@nocrew.org>
+
+       * rhona (check_sources): we need file id from dsc_files; not id.
+       Handle non .dsc source files being re-referenced in dsc_files.
+
+       * katie (in_override_p): strip out any 'non-US' prefix.
+       (check_files): use utils.where_am_i() rather than hardcoding.
+       (check_files): validate the component.
+       (install): use utils.where_am_i() rather than hardcoding.
+       (install): fix mail to go to actual recepient.
+       (reject): likewise.
+       (manual_reject): likewise.
+       (acknowledge_new): likewise.
+       (announce): likewise.
+
+       * db_access.py (get_component_id): ignore case when searching for
+       the component and don't crash if the component can't be found, but
+       return -1.
+       (get_location_id): handle -1 from get_component_id().
+
+       * jenna (generate_src_list): don't bring 'suite' into our big
+       multi-table-joining select as we already know the 'suite_id'.
+       (generate_bin_list): likewise.
+
+       * neve (main): don't quit if not on ftp-master.
+       (process_packages): remove unused variable 'suite_codename'.
+
+       * utils.py (move): actually move the file.
+       (build_file_list): handle non-US prefixes in the section.
+
+       * catherine (main): use which_conf_file().
+       * charisma (main): likewise.
+       * heidi (main): likewise.
+       * jenna (main): likewise.
+       * katie (main): likewise.
+       * neve (main): likewise.
+       * rhona (main): likewise.
+
+       * utils.py (where_am_i): new routine; determines the archive as
+       understood by other 'dak' programs.
+       (which_conf_file): new routine; determines the conf file to read.
+
+2000-11-17  James Troup  <james@nocrew.org>
+
+       * katie (install): fix where .changes files for proposed-updates
+       go.
+
+2000-11-04  James Troup  <james@nocrew.org>
+
+       * jenna (main): handle architecture properly if no
+       -a/--architecture argument is given, i.e. reset architecture with
+       the values for the suite for each suite.
+
+       * Add apt_pkg.init() to the start of all scripts as it's now
+       required by python-apt.
+
+2000-10-29  James Troup  <james@nocrew.org>
+
+       * jenna (generate_bin_list): take an additional argument 'type'
+       and use it in the SELECT.
+       (main): if processing component 'main', process udebs and debs.
+
+       * neve (process_packages): set up 'type' in 'binaries' (by
+       assuming .deb).
+
+       * katie (re_isadeb): accept ".udeb" or ".deb" as a file ending.
+       (check_files): set up files[file]["dbtype"].
+       (install): use files[file]["dbtype"] to set up the 'type' field in
+       the 'binaries' table.
+
+       * init_pool.sql: add a 'type' field to the 'binaries' table to
+       distinguisgh between ".udeb" and ".deb" files.
+
+       * utils.py (move): scrap basename() usage; use a "dir_p(dest) :
+       dest ? dirname(dest)" type check instead.
+
+       * katie (check_dsc): handle the case of an .orig.tar.gz not found
+       in the pool without crashing.  Also handle the case of being asked
+       to look for something other than an .orig.tar.gz in the pool.
+
+2000-10-26  James Troup  <james@nocrew.org>
+
+       * katie (install): fix filenames put into files table during
+       poolification of legacy source.
+
+       * utils.py (move): work around a bug in os.path.basename() which
+       cunningly returns '' if there is a trailing slash on the path
+       passed to it.
+
+       * katie (check_dsc): Remove more cruft.  If we find the
+       .orig.tar.gz in the pool and it's in a legacy (or legacy-mixed)
+       location, make a note of that so we can fix things in install().
+       (install): as above.  Move any old source out of legacy locations
+       so that 'apt-get source' will work.
+       (process_it): reset the flag that indicates to install that the
+       source needs moved.
+
+       * cron.daily: more.  Nowhere near complete yet though.
+
+       * katie (install): don't run os.makedirs, a) utils.move() does
+       this now, b) we weren't removing the user's umask and were
+       creating dirs with SNAFU permissions.
+       (check_dsc): rewrite the .orig.tar.gz handling to take into
+       account, err, package pools.  i.e. look anywhere in the pool
+       rather than faffing around with two simple paths.
+
+       * neve (process_sources): add the .dsc to dsc_files too.
+
+2000-10-25  James Troup  <james@nocrew.org>
+
+       * neve (process_sources): don't duplicate .orig.tar.gz's.
+
+2000-10-23  James Troup  <james@nocrew.org>
+
+       * utils.py (re_extract_src_version): moved here.
+
+       * neve: move re_extract_src_version to utils.
+       (process_packages): reflect change.
+
+       * katie (install): reflect change.
+
+2000-10-19  James Troup  <james@nocrew.org>
+
+       * jenna (generate_src_list): handle locations with null
+       components.
+       (generate_bin_list): likewise.
+