piuparts (1.4.3) unstable; urgency=medium

  [ Nicolas Dandrimont ]
  * Remove use of deprecated configparser.SafeConfigParser (Closes: #1067938)
  * Run autopkgtest on all supported Python versions
  * Add more tar ignore patterns to debian/source/options
  * d/t/all-python-versions: turn on the CPython dev mode
  * run(): ensure that fds are properly closed under all circumstances

  [ Jochen Sprickerhof ]
  * make piuparts.py executable from git

  [ Carlos Henrique Lima Melara ]
  * docs: fix some typos in README.txt (Closes: #1071621)

 -- Nicolas Dandrimont <olasd@debian.org>  Tue, 25 Jun 2024 16:07:49 +0200

piuparts (1.4.2) unstable; urgency=medium

  [ Helmut Grohne ]
  * also fix /bin/sync diversion for bullseye (Closes: #1068312)

  [ Nicolas Dandrimont ]
  * Disable build-path variation from salsa-ci reprotest

 -- Nicolas Dandrimont <olasd@debian.org>  Mon, 06 May 2024 22:52:39 +0200

piuparts (1.4.1) unstable; urgency=medium

  [ Nicolas Dandrimont ]
  * tests: Update unittest asserts to non-deprecated versions (Closes: #1061749)
  * gbp: only use the bare version for debian tags

  [ Helmut Grohne ]
  * also fix /bin/sync diversion for bookworm

 -- Nicolas Dandrimont <olasd@debian.org>  Sat, 23 Mar 2024 10:06:28 +0100

piuparts (1.4) unstable; urgency=medium

  [ Nicolas Dandrimont ]
  * Add grub-efi-*-signed to packages that need allow-remove-essential.
    (Closes: #1062192)
  * .gitlab-ci: Add reference to new salsaci wrap-and-sort job
  * *.py: apply newer black formatting
  * piuparts-from-git-deps: pkg-config is deprecated in favor of pkgconf

  [ Stefano Rivera ]
  * Explicitly set the mode on device nodes created by piuparts, overriding
    umask. (Closes: #1064842)

  [ Helmut Grohne ]
  * /bin/sync moved to /usr, duplicate diversion

 -- Nicolas Dandrimont <olasd@debian.org>  Fri, 15 Mar 2024 09:59:29 +0100

piuparts (1.3) unstable; urgency=medium

  [ Helmut Grohne ]
  * Improvements for running piuparts in unprivileged namespaces:
    - improve compatibility of mount_proc with unprivileged namespaces.
    - make --bindmount recursive.
    - allow using --bindmount with things that are not directories.
    - provide a basic /dev tree even in unprivileged namespaces.
  * Allow using tarballs compressed with non-gzip.

  [ Nicolas Dandrimont ]
  * Codebase quality improvements:
    - Introduce Salsa CI pipeline.
    - Run black and isort on the codebase, introduce basic mypy config.
    - Make the codebase flake8-clean.
  * Remove dependency on python3-six (thanks to Alexandre Detiste for the
    suggestion and initial patch).
  * Pass the same environment variables to docker run as are passed to
    other chroots (thanks to Richard Davis for the suggestion and initial
    patch).

  [ Philipp Hahn ]
  * Improvements to the docker runner:
    - Get container id using --cidfile in docker run.
    - Use `docker inspect` to get the docker overlay path directly.
    - Improve log output.

 -- Nicolas Dandrimont <olasd@debian.org>  Sat, 13 Jan 2024 14:31:20 +0100

piuparts (1.2) unstable; urgency=medium

  [ David Steele ]
  * Doc - don't include oldoldstable in global summary

  [ Cyril Brulebois ]
  * piuparts(1): fix syntax for long options.
  * piuparts(1): fix syntax for bullet lists.

  [ Nicolas Dandrimont ]
  * piuparts(1): fix a lot of ReStructuredText markup issues
  * config: bookworm has been released, trixie is now testing
  * news: Add news for bookworm release
  * Default to merged-/usr chroots (Closes: #1054898)
  * p.conf: the merged-/usr file move moratorium has been repealed
  * p.conf: add --no-merged-usr to config for archived suites
  * p.conf: don't schedule jobs for the sid-merged-usr suite
  * p.conf: clean up the sid-merged-usr tarball
  * custom-scripts: usrmerge and usr-is-merged should be testable now
  * p.conf: Don't reschedule tests for archived suites
  * p.conf: clean up tarball jobs for archived suites
  * p.conf: set max-reserved to 0 for archived suites
  * news: fix date for bookworm news item
  * news: add item for merging test chroots
  * d/source: Update lintian overrides
  * d/control: Update to dh compat level 13

  [ Evgeni Golov ]
  * explicitly state that piuparts needs direct access to docker storage

 -- Nicolas Dandrimont <olasd@debian.org>  Sat, 28 Oct 2023 23:17:21 +0200

piuparts (1.1.7) unstable; urgency=medium

  [ Holger Levsen ]
  * piuparts.py, tests and docs: handle new "non-free-firmware" section in
    Debian. Closes: #1028661.
  * d/control:
    - remove version constraints on the (build-)depends on python3-debianbts,
      debootstrap amd debsums as they are met since (at least) buster.
    - fix cute-field warning, thanks lintian.
    - bump standards version to 4.6.2, no changes needed.
  * Add debian/source/lintian-overrides to override a bunch of very-long-line-
    length-in-source-file warnings.
  * d/piuparts.lintian-overrides: add debian-news-entry-has-unknown-version
    0.45 due to trimmed d/changelog in binary packages.
  * Drop unused d./piuparts-(master|slave).lintian-overrides.

  [ Nicolas Dandrimont ]
  * Makefile: use dpkg-parsechangelog -S instead of sed.

 -- Holger Levsen <holger@debian.org>  Wed, 18 Jan 2023 22:45:04 +0100

piuparts (1.1.6) unstable; urgency=medium

  [ David Steele ]
  * Remove oldold*stable dists from json summary.

  [ Holger Levsen ]
  * custom-scripts/scripts/pre_test_root_password: fix grammar in comment.

  [ Luca Boccassi ]
  * piuparts: detect files moving between / and /usr on upgrade.
  * piuparts: detect files moving between / and /usr on dist-upgrade.
  * p.conf: enable --warn-on-usr-move for bullseye/bookworm.
  * custom_scripts: ensure usr-is-merged/usrmerge does not fail the
    migration test.

  [ David Steele ]
  * Add Stable Release tasks to README_pejacevic.txt.

  [ Nicolas Dandrimont ]
  * piuparts-slave: run isort.
  * piuparts-slave: replace pipes.quote with shlex.quote.
  * piuparts.py: run isort.
  * piuparts.py: replace pipes.quote with shlex.quote.
  * test_piuparts: replace mox3 with unittest.mock (Closes: #1028453)
  * Migrate lintian overrides to pointed hints.
  * Simplify docs install in Makefile.
  * Use sphinxdoc dh plugin.

 -- Nicolas Dandrimont <olasd@debian.org>  Wed, 11 Jan 2023 13:31:41 +0100

piuparts (1.1.5) unstable; urgency=medium

  [ Nicolas Dandrimont ]
  * pejacevic: update enabled suites for bullseye as stable, bookworm as
    testing.
  * Add news for the bullseye update.
  * Fix perjacevic typo in docs.

  [ David Steele ]
  * Remove oldstable results from summary.json.

  [ Athos Ribeiro ]
  * d/rules: set GO111MODULE to auto to maintain pre Go 1.16 behavior.
    Closes: #991970. (MR: debian/piuparts!35)

 -- Holger Levsen <holger@debian.org>  Thu, 14 Oct 2021 15:23:26 +0200

piuparts (1.1.4) unstable; urgency=medium

  [ David Steele ]
  * Make a valid pkgsummary entry for an "invalid" pkg.
  * Remove Python2 support from pkgsummary.
  * Reformat pkgsummary.

  [ Andreas Beckmann ]
  * piuparts.conf, distros.conf:
    - Update for bullseye release.
    - Create bookworm tarballs.
    - Rename stretch-next to stretch-lts.
  * docs/README_server.txt, docs/piuparts/piuparts.1.txt, piuparts.py:
    Update examples for bullseye being stable and bookworm the new testing.
  * piuparts-slave.postinst: Do not fail if no sshd is available on
    localhost:22.
  * scripts/pre_distupgrade_zz_database-server: bullseye/sid has postgresql-13
    and mariadb-10.5.  (Closes: #988704)
  * Add myself to Uploaders.

 -- Andreas Beckmann <anbe@debian.org>  Tue, 03 Aug 2021 13:18:44 +0200

piuparts (1.1.3) unstable; urgency=medium

  [ Michael Prokop ]
  * p: new option --update-retries <num> to re-run apt-get update.
    (MR: debian/piuparts!34)

  [ Holger Levsen ]
  * d/control:
    - add adequate and pkg-config to piuparts-slave-from-git-deps' depends.
      Closes: #893022.
    - add myself back to uploaders.
  * d/copyright: update my copyright years.

  [ Debian Janitor ]
  * Upgrade to newer source format 3.0 (native).

 -- Holger Levsen <holger@debian.org>  Fri, 26 Feb 2021 18:51:48 +0100

piuparts (1.1.2) unstable; urgency=medium

  * Team upload.

  [ Nis Martensen ]
  * piuparts.py:
    - prevent KeyError in diff_meta_data. (Closes: #968842)
    - do not crash on non-utf-8 command output.
  * piuparts-analyze: unbreak sorting of version lists.
  * autopkgtest: add a must-fail test.
  * d/p-[ms].lintian-overrides: update to python3/

  [ Nicolas Dandrimont ]
  * Add exemption for /var/lib/dpkg/cmethopt. (Closes: #953756)
  * piuparts-analyze:
    - print full exceptions when failing.
    - fetch all bugs in bulk instead of package by package.
    - only wait for 60 seconds when a given section is busy.
  * Add myself to uploaders.
  * d/rules: Add workaround for dh-dwz bug #933541.
  * Set Description last when generating a dummy package.
  * Start piuparts-slave automatically after reboots again.
  * Add piu-slave-conova-01.
  * Add news entry for piu-slave-conova-01.
  * Move piu-slave-ubc-01 to deb.d.o.

  [ Ansgar ]
  * piuparts-report.py: fix link to states.png.

  [ Stuart Prescott ]
  * Add timeout when fetching packages files.

  [ Julien Cristau ]
  * Make the summary generation atomic.

  [ Holger Levsen ]
  * Bump standards version to 4.5.1, no changes needed.

  [ Debian Janitor ]
  * Fix day-of-week for changelog entry 0.16-1.

 -- Holger Levsen <holger@debian.org>  Tue, 19 Jan 2021 16:17:25 +0100

piuparts (1.1.1) unstable; urgency=medium

  * Team upload to unstuck python-debianbts migration.

  [ Nis Martensen ]
  * autopkgtest: replace broken stubs with actual tests.
  * Makefile: delete __pycache__ dirs in make clean.
  * piupartslib/dwke: do not error out on non-utf8 logfiles.

 -- Holger Levsen <holger@debian.org>  Tue, 14 Jan 2020 13:48:49 +0100

piuparts (1.1.0) unstable; urgency=medium

  * Team upload.

  [ Herbert Parentes Fortes Neto ]
  * piuparts.py: use Popen with universal_newlines=True. Py2, Py3 compatible.
  * New mail template: add bug-templates/obsolete_conffiles.mail.

  [ Thomas Goirand ]
  * Switch to package to Python 3:
    - Replaced python- with python3- in debian/control.
    - Removed all python2 (>= 2.7) by a ${python3:Depends}.
    - Replaced python2 by python3 in debian/rules.
    - Replaced dh_python2 stuff by dh_python3 in debian/rules.
    - Patched piupartslib/conf.py, piupartslib/dependencyparser.py,
      piupartslib/packagesdb.py, piupartslib/pkgsummary.py, tests/unittests.py
      so that they are Python 3 compatible.
    - Removed python-lzma (build-)depends as it's in standard in Py 3.
    - Add python3-six as (build-)depends.
    - Fix Makefile to use python3 and not python2.
    - d/piuparts-common.install: switch to python 3.
    - d/rules: remove all __pycache__ folder before proceeding to install.
    - Add --shebang=/usr/bin/python3 when calling dh_python3.
    - Do not use -N piuparts-master -N piuparts-slave when calling dh_python3
      for the 2nd time, so that it correctly adds the interpreter as depends.
    - Lintian overrides "python-script-but-no-python-dep": that's ok, because
      piuparts-common already has the dependency.

  [ Bastian Venthur ]
  * piuparts-analyze.py: updates for python-debianbts 2.10.0 deprecating
    some methodcalls, update depends in d/control accordingly.
    Closes: #919170.

  [ Nis Martensen ]
  * piuparts, piuparts-master-backend, piuparts-report,
    detect_well_known_errors, piupartslib/(dependencyparser|packagesdb):
    several fixes and improvements related to porting to python3.

  [ James Clarke ]
  * piuparts: Fix diff_meta_data reporting every file as new and removed.

  [ Mattia Rizzolo ]
  * piuparts-slave.py: port to python3.

  [ David Prévot ]
  * Use the same favicon as the one from www.d.o.

  [ Holger Levsen ]
  * Bump version number to 1.1.x due to the switch to python3.
  * piuparts.conf-template.pejacevic:
    - also test bullseye and bullseye-rcmd. Closes: #933061.
    - increase precedence values for oldstable and older.
  * docs/README_server.txt, docs/piuparts/piuparts.1.txt and piuparts.py:
    update examples for buster being stable and bullseye being the new
    testing.
  * Use /usr/bin/python3 everywhere. Closes: #937293.
  * d/control:
    - bump standards version to 4.4.1, no changes needed.
    - bump debhelper-compat to 12.
  * d/tests: Add simple smoke-test.
  * htdocs/news.tpl:
    - mention new suites bullseye and bullseye-rcmd being tested.
    - mention piuparts.debian.org is running the python3 branch.
    - add farewell note.
  * instances/Makefile: set default mirror to deb.debian.org.
  * d/rules: set GOCACHE to a safely writable directory during build as
    the cache is mandatory with Go 1.12.
  * d/control:
    - bump standards version to 4.4.1, no changes needed.
    - bump debhelper-compat to 12.
    - remove myself from uploaders. It was fun! Policy is your friend. Trust
      the Policy. Love the Policy. Obey the Policy.
  * instances/*, docs/README_pejacevic.txt and htdocs/index: stop mentioning
    piu-slave-bm-a.debian.org.

 -- Holger Levsen <holger@debian.org>  Wed, 08 Jan 2020 20:50:42 +0100

piuparts (1.0.1) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.conf, distros.conf: Update for buster release.
  * piuparts.py:
    - Add '--max-command-output-size' option to allow overriding the default
      of 8 MB for debugging runs.
    - Run pre_remove scripts before computing packages to be removed.
    - Fix spurious failure to remove packages with names ending with '+'.
  * piupartslib/packagesdb.py:
    - Remove stale .kpr files after receiving new logs.
  * piuparts-slave.py:
    - Generate separate tarball names for --merged-usr chroots.
    - Re-exec on SIGUSR1, picking up updated code and new config sections.
  * master-bin/detect_piuparts_issues:
    - Clean up stale temporary and empty files.
  * master-bin/rotate_master_logs: Delete master logs older than 90 days.
  * slave-bin/slave_reexec: New, send SIGUSR1 to all running slaves.
  * custom-scripts: Add and update several exceptions.
  * piuparts.conf.anbe: Add some more example sections.

  [ Holger Levsen ]
  * generate_daily_report: improve statistics.

 -- Holger Levsen <holger@debian.org>  Tue, 18 Jun 2019 14:48:59 +0200

piuparts (1.0.0) unstable; urgency=medium

  [ David Steele ]
  * piuparts-reports.py:
    Revert "Don't add results from outdated binaries to summary.json" from
    0.94. The reverted commit is 62a6b3c438f42480ce3a08996ed4994de1561591.
    The patch was added to avoid incorporating summary.json reporting results
    for binary packages which are no longer part of the source package. It
    stopped Piuparts from blocking the source package from testing migration.
    It has a bug related to "upgrade test" sections, which cause a large
    number of packages to incorrectly be reported in the "waiting" state.

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add '--merged-usr' support when using debootstrap to create the chroot.
    - Add '--distupgrade-to-testdebs-from DIR' as a shorthand for
      '--bindmount DIR --testdebs-repo DIR --distupgrade-to-testdebs'.
  * distros.conf:
    - wheezy* has been archived/removed.
    - jessie* has been partially archived/removed.
    - Add buster-backports.
    - Add bullseye-proposed-updates.
  * piuparts.conf:
    - Add section [sid-merged-usr], using --merged-usr.  (Closes: #848968)
    - Use --warn-on-debsums-errors for tests ending in buster.
    - Rename [stretch2proposed] to [stretch2next]
      and [buster2proposed] to [buster2next].
  * piupartslib/packagesdb.py:
    - Keep recycled pass logs while waiting for new test results, continuing
      to show them as "successfully-tested" instead of "waiting-to-be-tested".
    - Add (hardcoded) list of missing dependencies that resolve to
      "ignore-does-not-exist".
      Used for packages to be skipped via "is_installable_*" scripts to
      exclude them from "dependency-does-not-exist" state.
  * piuparts-slave.py:
    - New option "slave-flush-interval" to flush logs more frequently to the
      master. Set to 30 minutes.
    - New option "chroot-meta-directory" to share reference target chroot
      metadata between slave instances.
  * piuparts-report.py:
    - Omit states with 0 packages from section summaries.
  * scripts/{post_chroot_unpack,pre_distupgrade}_allow_unauthenticated:
    - Disable Check-Valid-Until for wheezy/updates and jessie-backports.
  * scripts/post_distupgrade_exceptions:
    - Handle /var/lib/pam/seen stretch -> buster upgrade by running
      pam-auth-update if needed. Workaround for #920760.
  * scripts/pre_remove_40_find_unowned_lib_links:
    - Handle --merged-usr environments.
  * master-bin/reschedule_piuparts_tests: Do not act on 'bugged/*.log' and
    'affected/*.log' by default. Add --bugged, --affected flags.

  [ Holger Levsen ]
  * Declare this release to be version 1.0.0, finally. May the force be with
    you.
  * htdocs/news.tpl:
    - add news about sid-merged-usr being tested.
    - add news about the 1.0.0 release.
  * piuparts_slave_join.8.txt: update revdate to date of last change.

 -- Holger Levsen <holger@debian.org>  Sat, 04 May 2019 21:37:32 +0200

piuparts (0.98) unstable; urgency=medium

  [ Holger Levsen ]
  * piuparts-reports.py: add link to states graph for each suite.
  * instances/piuparts.conf-template.pejacevic: increase sid-nodoc's
    precedence.
  * Refactor reschedule_piuparts_tests to use new global configuration
    variable 'testing-suite'.
  * generate_daily_report: show failures in sid, $TESTING and testing2sid
    at the top of the report.
  * master-bin/prepare_backup: ignore empty submissions.txt for $TESTING-pu
    and $TESTING-security.
  * Update TODO for bullseye.

  [ Andreas Beckmann ]
  * piuparts.py:
    - If packages were downgraded to restore the reference chroot state
      reinstall the downgraded-to version again to recover potentially lost
      files in case of bad interactions of Breaks/Replaces with downgrading.
  * distros.conf: Add support for buster partial distros.
  * piuparts.conf:
    - Use --warn-on-others for [sid-strict] only.
    - Add sections [buster-security], [buster-pu] and [buster2proposed].
    - Add sections [stretch2Xbuster] and [stretch2Xbuster-rcmd].
    - Add section [sid-broken-symlinks], failing on broken symlinks
  * piuparts-slave.py:
    - Catch IOError while creating tarballs, will be retried later.
  * scripts/is_testable_uninstallable:
    - Refactor handling of known uninstallable packages.
  * scripts-multi-distro-upgrade/: New custom scripts for distupgrade tests
    spanning a series of distros.
  * Add metapackages piuparts-{master,slave}-from-git-deps to ease running
    piuparts-master and piuparts-slave instances from git.

 -- Holger Levsen <holger@debian.org>  Fri, 01 Mar 2019 11:27:47 +0100

piuparts (0.97) unstable; urgency=medium

  [ Andreas Beckmann ]
  * Ignore broken /var/lib/mender symlink.  (Closes: #915680)
  * scripts/pre_distupgrade_zz_database-server: Also act on dist-upgrades
    within a release, e.g. stable -> stable-proposed-updates.
  * piuparts-slave.py:
    - Support prepending a setarch command to the piuparts invocation.
  * piuparts-report.py:
    - Report [cruft] in logfile lists.

  [ David Steele ]
  * instances/piuparts.conf-template.pejacevic:
    - report results of stable2sid to DDPO.
    - swap stable2sid and stable22sid priorities, to promote the one reported
      to DDPO.

  [ Holger Levsen ]
  * slave_bin: on stop, show what's keeping the slaves busy, to identify
    packages with a very long installation time.
  * Makefile: include @sbindir@ in placeholder_substitution.
  * instances/piuparts.conf-template.pejacevic: lower priorities of oldstable
    suites.

  [ Herbert Fortes ]
  * piuparts.py, piuparts-slave.py, piupartslib/pkgsummary.py and
    piuparts-analyze.py: add '()' to print. Py2 and Py3 compatible.
  * piupartslib/dwke.py:
       - class Problem:
           - Class attr instead of instance attr
             Save some memory
       - get_file_dict function:
           - dictionary comprehension. "More readable and
             often faster at the same time".
       - create_problem_list function:
            - list.sort() instead of sorted(list).
              sorted() returns a *new* sorted list. This is
              not necessary here.
              list.sort() sorts the list in place.
              Save some memory
       - make_kprs function: do not concat str, simplify 'if' statement.

 -- Holger Levsen <holger@debian.org>  Mon, 11 Feb 2019 12:30:10 +0100

piuparts (0.96) unstable; urgency=medium

  [ Andreas Beckmann ]
  * bug-templates: Raise severity of "fails to purge" errors to serious.
    (see #918379)
  * distros.conf: Add jessie-lts as a full distro.
  * piuparts.conf:
    - Use jessie-lts as upgrade target and rename section
      [jessie2proposed] => [jessie2lts]
    - Add sections [wheezy2jessie-lts] and [jessie-lts2stretch].
    - [wheezy2bpo2jessie]: Use jessie-lts as final upgrade target.
    - Disable sections [wheezy-pu], [jessie-pu]: not used for lts releases.
  * scripts/post_distupgrade_exceptions:
    - Handle /etc/ca-certificates.conf stretch -> buster upgrade by
      normalizing the file to match fresh installations.  (Closes: #889852)
  * scripts-broken-symlinks: Unbreak more symlinks.

  [ Holger Levsen ]
  * htdocs/index.tpl: stop referring people to the #debian-qa IRC channel, we
    really prefer mail nowadays.
  * instances/piuparts.conf-template.pejacevic:
    - include sid-strict into json outputs.
    - improve sid-strict description. Closes: #918379
  * master-bin/detect_piuparts_issues: ignore files which vanish during run.
  * Bump standards version to 4.3.0, no changes needed.
  * d/copyright: update years.

 -- Holger Levsen <holger@debian.org>  Sun, 13 Jan 2019 16:56:06 +0100

piuparts (0.95) unstable; urgency=medium

  [ Holger Levsen ]
  * piuparts.py: add /var/lib/debian-security-support/ to self.ignored_files.
    (Closes: #749317)
  * Reduce number of mails per day, from 34 down to 1. (Closes: #912591)
    - lib/write_log.sh: new helper to publish logs in htdocs/logs.
    - master-bin/master_shell_runner: new script to run python scripts to
      redirect logs to htdocs/logs.
    - master-bin/generate_daily_report:
      - redirect logs of called scripts to htdocs/logs.
      - include listing of htdocs/logs/$TODAY into daily report.
      - publish dailyreport.txt in htdocs/logs/$TODAY instead of htdocs/.
    - master-bin/detect_archive_issues, detect_piuparts_issues,
      detect_network_issues, reschedule_oldest_logs, rotate_master_logs,
      report_untestable_packages and report_stale_reserved_packages: redirect
      logs to htdocs/logs.
    - conf/crontab-master.in: run detect_well_known_errors, piuparts-report
      and piuparts-analyze through the new master_shell_runner script.
    - master-bin/rotate_master_logs: compress htdocs/logs older than a week.
    - piuparts-report.py: add navigation link to https://piuparts.d.o/logs/
    - htdocs/news.tpl: explain the result of these changes.
  * d/control: use canonical URL for Vcs-Git, thanks lintian.
  * Add d/piuparts.lintian-overrides to override uses-dpkg-database-directly
    warnings, this cannot be avoided without breaking compatibility with
    ancient releases.
  * bug-templates/logrotate_exits_with_error_after_package_removal: clarify
    possibles causes of this problem as well as the solution.

  [ Andreas Beckmann ]
  * Clarify errors from installing objects over existing symlinks.
  * bug-templates: Do not mention ${misc:Pre-Depends} as
    symlink_to_dir/dir_to_symlink are supported by dpkg in oldstable.

 -- Holger Levsen <holger@debian.org>  Sun, 09 Dec 2018 22:27:41 +0100

piuparts (0.94) unstable; urgency=medium

  [ Holger Levsen ]
  * master-bin/detect_well_known_errors.py: suppress output if nothing new is
    found in a section, or section is busy or has been recently processed.
  * master-bin/generate_daily_report: include number of failures in daily mail.
  * slave-bin/detect_slave_problems: increase amount of time (from 30 to 60m)
    a slave has to be inactive before complaining.

  [ Andreas Beckmann ]
  * piuparts.py:
    - Logrotate files can only be placed directly in /etc/logrotate.d/.
  * scripts/post_distupgrade_exceptions:
    - Handle /etc/nsswitch.conf stretch -> buster upgrade if modifications
      from libnss-myhostname and friends are present.

  [ Mathieu Parent ]
  * piuparts.py: Use mknod instead of touch to create missing /dev/ptmx
    mountpoint, working around findutils bug #912180 (Closes: #911334)

  [ Ivo De Decker ]
  * piuparts-reports.py: Don't add results from outdated binaries to
    summary.json.

 -- Holger Levsen <holger@debian.org>  Thu, 08 Nov 2018 12:09:57 +0100

piuparts (0.93) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Report the package that owns a broken symlink.
    - --allow-database now also enables firebird3.0.
  * piuparts.conf: Disable rescheduling tests that end in wheezy.
  * piuparts.conf.anbe: Add some more example sections.
  * piupartslib/packagesdb.py:
    - Add methods Package.source(), Package.source_version().
    - Remove method PackagesDB.get_source().
  * piuparts-report.py:
    - Postpone deletion of old logs after the html pages possibly referencing
      them have been updated, avoiding error 404 while processing a section.
    - Generate missing/outdated .kpr files.
    - Simplify known problem report generation.
    - Mark logs of packages built from an outdated source version as [cruft].
  * scripts/{post_chroot_unpack,pre_distupgrade}_allow_unauthenticated: New
    scripts to handle installation from archived releases with expired signing
    keys (lenny, squeeze). Drop the --no-check-valid-until from *.conf since
    that is active for all steps in a distupgrade test while the new scripts
    only enable it for the distros that actually need it.
  * scripts/post_setup_forbid_home: Use dpkg-divert --no-rename (dpkg 1.19.1).
  * scripts/pre_distupgrade_zz_database-server: sid/buster has postgresql 11.
  * scripts/post_distupgrade_base_cleanup: Remove libcryptsetup4, libprocps6
    from the buster reference chroot.
  * Overhaul some exceptions.
  * Add bug template for logrotate errors after package removal.

  [ Holger Levsen ]
  * piuparts-report.py:
    - Add new page: overview.html
    - Split index.html into about (index.html) and news.html.
    - Shuffle some entries on index.html, explain that piuparts.debian.org
      exists since 2005 (even though that FQDN is younger).
    - Move suite "by uploaders" and "by source packages" links further up in
      navigation menu. Improve structure and headings in navigation menu.
    - Link mail templates for filings from navigation menu.
    - Drop references to "PTS" and use "tracker.d.o" instead.
    - Add link to piuparts source package pages from known problem pages.
    - Minor cleanups.
  * htdocs/bug_howto.tpl: some improvements, it's been some years.
  * htdocs/news.tpl: confirm #582630 has been fixed.
  * Use the new debhelper-compat(=11) notation and drop d/compat.
  * CONTRIBUTING: explain never to directly push to the develop nor master
    branch. Explain to always include a debian/changelog entry with patches.
    Explain to always test patches and to explain that testing has happened.

 -- Holger Levsen <holger@debian.org>  Sun, 21 Oct 2018 13:24:09 +0200

piuparts (0.92) unstable; urgency=medium

  [ Simon McVittie ]
  * piuparts.py:
    - Add to ignored_files:
      + /var/lib/dpkg/lock-frontend (Closes: #909182)

  [ Holger Levsen ]
  * Update several URLs pointing to https://www.debian.org/doc/debian-policy
    to match the new URLs since debian-policy 4.1.0.
  * instances/piuparts.conf-template.pejacevic: reschedule already tested
    packages in sid more often: set reschedule-old-count = 666 and
    reschedule-old-days = 66.
  * Update TODO.

 -- Holger Levsen <holger@debian.org>  Sat, 22 Sep 2018 15:29:49 +0200

piuparts (0.91) unstable; urgency=medium

  * Don't use --skip-logrotatefiles-test when testing sid and buster,
    see #582630. (Closes: #604807)
    Keep it for stretch, jessie, wheezy, squeeze and lenny based tests.
  * piuparts.py:
    - Add to ignored_files:
      + /var/lib/sreview (Closes: #905500)
    - Add alias '--ignore-regexp' for '--ignore-regex' as the former was
      documented since 2005 while the latter was working since then.
      Thanks to Nicolas Braud-Santoni for reporting. (Closes: #906683)
  * Bump standards version to 4.2.1, no changes needed.

 -- Holger Levsen <holger@debian.org>  Fri, 07 Sep 2018 19:35:35 +0200

piuparts (0.90) unstable; urgency=medium

  [ Michael Stapelberg ]
  * debiman-piuparts-distill: also consider --install, fixes
    https://github.com/Debian/debiman/issues/106

  [ Holger Levsen ]
  * Bump standards version to 4.2.0, no changes needed.

 -- Holger Levsen <holger@debian.org>  Mon, 13 Aug 2018 13:37:03 +0200

piuparts (0.89) unstable; urgency=medium

  * scripts/pre_install_exceptions: force cleanup of sympa's spool
    directories. (Closes: #673972)
  * d/control:
    - move Built-Using: to piuparts-master binary package.
    - add Xs-Go-Import-Path: header.

 -- Holger Levsen <holger@debian.org>  Tue, 12 Jun 2018 14:44:37 +0000

piuparts (0.88) unstable; urgency=medium

  * Recycle failed packages in sid after 2 days and force rescheduling them
    2 days later.
  * d/control:
    - shorten Vcs: headers.
    - drop versioned Pre-Depends on dpkg which is even satisfied in
      oldoldstable.
    - drop Breaks and Replaces on versions of piuparts which are older than
      oldoldstable.
    - add "Built-Using: ${misc:Built-Using}" which is needed because we ship
      golang binaries, thanks lintian.

 -- Holger Levsen <holger@debian.org>  Fri, 08 Jun 2018 13:17:44 +0000

piuparts (0.87) unstable; urgency=medium

  [ Philipp Hahn ]
  * piuparts.py: use `apt-cache show --no-all-versions` to prevent generating
    a "piuparts-depends-dummy" package with multiple dependencies on the same
    package with different versions. (Closes: #898606)

  [ Holger Levsen ]
  * Update all occurrences of piuparts-devel@lists.alioth.debian.org with
    piuparts-devel@alioth-lists.debian.net.
  * Drop X-Python-Version header from debian/control.

 -- Holger Levsen <holger@debian.org>  Sat, 02 Jun 2018 11:36:36 +0000

piuparts (0.86) unstable; urgency=medium

  * debian/control: switch packaging to salsa.debian.org. Thanks to the alioth
    admins for providing such a nice service so long!
  * Update several occurrences of anonscm.debian.org and git.debian.org with
    salsa.debian.org URLs.
  * index.tpl: add news entry about the salsa migration.
  * debian/copyright: update years of my contributions.

 -- Holger Levsen <holger@debian.org>  Sat, 28 Apr 2018 14:57:34 -0300

piuparts (0.85) unstable; urgency=medium

  [ Agustin Henze ]
  * piuparts.py:
    - Add docker support, new param is introduced `--docker-image`.
      (Closes: #893731)
    - Deprecate --keep-tmpdir in favor of --keep-env (Closes: #894232)
    - Create ${ENV}/dev/ptmx path if it doesn't exist (Closes: #895380)
    - Create ${ENV}/dev/null if it doesn't exist ASAP (Closes: #895379)
  * Add `docker.io` as suggested package.
  * Reworded documentation for `--keep-env` and `--schroot` parameters.

  [ Holger Levsen ]
  * dwke.py: change logging to make relevant information more visible.
  * detect_*_issues.in: improve output.
  * report_untestable_packages.in: improve output.
  * piuparts.1.txt: improve wording for docker related changes and add
    explaination about the limitations of docker support.
  * Bump standards version to 4.1.4, no changes needed.

 -- Holger Levsen <holger@debian.org>  Sat, 14 Apr 2018 17:39:13 -0300

piuparts (0.84) unstable; urgency=medium

  * debian/control:
    - Add "Rules-Requires-Root: no" to support building as non-root.
      (I've also confirmed that the build output is bit by bit identical with
      and without this.)
    - Bump standards version to 4.1.3, no changes needed.
  * piuparts-report.py: credit Andreas properly.
  * Bump debian/compat to 11 and build-depend on debhelper >= 11~.

 -- Holger Levsen <holger@debian.org>  Fri, 16 Feb 2018 12:34:20 +0000

piuparts (0.83) unstable; urgency=medium

  [ Andreas Beckmann ]
  * distros.conf:
    - Add experimental-debug.
  * piuparts.conf.anbe: Add some more example sections.
  * piupartslib/packagesdb.py:
    - Add new package data accessors name(), version(), test_versions().
    - Use test_versions() in all places referring to a piuparts test.
    - Set test_versions while loading versions from the final target distro.
    - Use the actual package versions for resolving the "outdated" state.
  * piuparts-analyze.py:
    - Merge report_newly_bugged_packages and process all sections.
  * piuparts-report.py, detect_well_known_errors.py, piuparts-analyze.py:
    - Use global locks to allow only one running instance of each script.
    - Acquire section locks to prevent concurrent processing of a section,
      including piuparts-master access.
    - Postpone busy sections and retry them later.
    - Run as three separate cronjobs.
  * conf/crontab-master:
    - Run detect_well_known_errors every three hours to avoid accumulating a
      large backlog of new logfiles.
    - Run piuparts-analyze twice per day.
    - Try piuparts-report every three hours s.t. we start 2-3 runs per day
      even with running times above 8-12 hours.
    - Run detect_{piuparts,network}_issues a short time before trying
      piuparts-report to exclude (most of) these logfiles from the report.
  * master-bin/report_newly_bugged_packages: Remove, merged into
    piuparts-analyze.
  * scripts/pre_distupgrade_zz_database-server: wheezy->jessie: Restart
    postgresql before upgrading the cluster, working around #882409.
  * Update policy references, the permalinks changed with the new toolchain.
  * Add bug template for failing to reinstall a package.
  * Adjust known_problems patterns for dpkg 1.19 message changes.

  [ Holger Levsen ]
  * dwke.py/-analyze.py/-report.py: quietly exit if another process is still
    running.
  * master-bin/detect_well_known_errors.py: compress output.
  * Bump standards version to 4.1.2, no changes needed.

 -- Holger Levsen <holger@debian.org>  Fri, 15 Dec 2017 11:12:13 +0000

piuparts (0.82) unstable; urgency=medium

  * Move xmlto from Build-Depends-Indep to Build-Depends.

 -- Holger Levsen <holger@debian.org>  Sat, 07 Oct 2017 17:30:19 +0200

piuparts (0.81) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /var/log/tallylog  (Closes: #877592)
    - Run post_chroot_unpack scripts before initial apt-get update.
  * piuparts-analyze.py:
    - Add PiupartsBTS, a caching wrapper around debianbts.
  * General python code and style cleanup.
    Consistently use 'with open(...) as ...:' for scoped open files.
  * scripts/{pre,post}_test_exceptions: Add exception to prevent testing
    corekeeper from changing the core file settings in the running kernel.
  * scripts/pre_distupgrade_zz_database-server: sid/buster has postgresql 10.
  * Separate scripts-lenny/ from scripts-squeeze/.
  * scripts-squeeze/post_{setup,distupgrade}_squeeze-fake-essential:
    - Treat install-info as fake-essential for all tests ending in squeeze.
  * scripts-broken-symlinks/post_install_extras_unbreak_symlinks: Unbreak more
    symlinks.  (Closes: #857151)
  * master-bin/detect_piuparts_issues: Detect another way of 'apt-cache show'
    failing.  (Closes: #877417)
  * master-bin/distill_alternatives_log: Parse piuparts.conf to find the
    sections that use scripts-log-alternatives.
  * master-bin/generate_daily_report: Most parts are now separate cronjobs.
  * Add bug template for stable -> sid file overwrite errors.
  * Use copyright notices without FSF street address.

  [ Simon McVittie ]
  * Consider the /usr merge to be acceptable variation. Files that the
    dpkg database considers to be in /bin, /sbin, /lib/**, /lib*/**
    are now allowed to be physically in /usr/bin, etc. due to symlinks in
    the root directory, as created by usrmerge or debootstrap --merged-usr.
    (Closes: #860433)

  [ Holger Levsen ]
  * Fix syntax errors in git snapshot running on piuparts.debian.org, thanks
    to Boud Roukema and Philipp Huebner for the reports.
    (Closes: #875605, #875664)
  * Drop code to support using autopkgtest as a test backend. This code was
    merged in 2008 from Ubuntu, but it's unclear (and unlikely) that it still
    works. Also it never has really been supported. (See #815084)
  * Bump standards version to 4.1.1, no changes needed.
  * Update TODO.

  [ Michael Stapelberg ]
  * piuparts-distill: correctly handle errors.

 -- Holger Levsen <holger@debian.org>  Thu, 05 Oct 2017 15:56:25 +0200

piuparts (0.80) unstable; urgency=medium

  [ Michael Stapelberg ]
  * debiman-piuparts-distill:
    - increase maximum token size.
    - bugfix: wait until all results are collected.
    - don’t print all results.
  * distill_alternatives_log: also process buster.

  [ Holger Levsen ]
  * Move asciidoc to from Build-Depends-Indep to Build-Depends. (Newly needed
    because d697f2991 changed piuparts-master to an arch:any package.) Thanks
    to Adrian Bunk. (Closes: #873825)

 -- Holger Levsen <holger@debian.org>  Thu, 31 Aug 2017 17:38:11 +0200

piuparts (0.79) unstable; urgency=medium

  [ Holger Levsen ]
  * slave-run: properly delete all screenlogs from previous runs.
  * Bump standards version to 4.1.0, change priority from extra to optional.
  * Depend on debhelper >= 10.2.5~ and bump debian/compat to 10.

  [ Andreas Beckmann ]
  * piuparts.py:
    - Do not ignore errors while purging packages.
    - Add post_test_* custom scripts. These are run exactly once at the end
      of each test (before comparing with the reference chroot state).
    - is_testable_* custom scripts can use return value '2' to make a test
      fail without actually installing the package. Use for (unfixable)
      packages that would fail anyway, but are resource hogs or otherwise
      break piuparts.
    - Silence diff_meta_data() for "others" for --warn-on-others.
    - Store the initial package selections in the --save-end-meta meta-data
      and ignore meta-data from --end-meta if these selections don't match,
      e.g. due to different fake-essential package sets.
    - Let debsums always ignore obsolete conffiles.
    - Run debootstrap with --no-merged-usr.
  * distros.conf:
    - Add wheezy-lts as a full distro.
  * piuparts.conf:
    - Use relative expiration ages.
    - Use wheezy-lts as upgrade target and rename sections:
      + [wheezy2proposed] => [wheezy2lts]
      + [squeeze2wheezy-proposed] => [squeeze2wheezy-lts]
    - [squeeze2bpo2wheezy]: Use wheezy-lts as final upgrade target.
  * piuparts.conf.anbe: Add some more example sections.
  * Move some exceptions to scripts/{pre,post}_test_exceptions.
  * scripts/post_distupgrade_base_cleanup: Remove pinentry-curses from the
    stretch (--install-recommends) reference chroot.
  * scripts/is_testable_uninstallable:
    - squeeze: Skip and fail install of mini-buildd-{bld,rep}.
    - jessie->stretch: Skip distupgrade of arden:i386.
  * scripts/pre_distupgrade_zz_database-server: Improve some upgrade paths.
  * scripts/post_purge_exceptions:
    - Restore /usr/lib/sasl2/ disappearing on some jessie->stretch upgrades.
  * Add/update exceptions for some ancient packages.
  * master-bin/reschedule_oldest_logs: Expiration age values starting with "+"
    are relative to the rescheduling age.
  * master-bin/detect_network_issues: Detect appstream metadata errors.
  * master-bin/rotate_master_logs: New daily cronjob to rotate and compress
    (with one day of delay) master logfiles larger than 1 MB.
  * slave_run: Ensure screen is run with SHELL=/bin/bash.
  * Makefile: Split build and install targets between master and slave.
  * Bump debsums dependency to (>= 2.2.2~) for --ignore-obsolete.
  * Depend on mount, no longer essential.

  [ Michael Stapelberg ]
  * helpers/debiman-piuparts-distill: New helper for parsing the output
    generated from scripts-log-alternatives.  (Closes: #863089)
  * master-bin/distill_alternatives_log: Run debiman-piuparts-distill on the
    sections that use scripts-log-alternatives. Runs as a daily cronjob.

 -- Holger Levsen <holger@debian.org>  Wed, 30 Aug 2017 15:31:34 +0200

piuparts (0.78) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Refactor internal handling of reference chroot state.
    - Do not run custom scripts before/after installing fake essential
      packages.
    - Only warn on broken symlinks found between installing the dependencies
      of the package to be tested and installing the package itself.
    - Keep track of md5sums of the list of available packages in the chroot
      to recognize mirror pushes during distupgrade tests and outdated
      --end-meta meta-data.
    - Mount a new devpts instance on /dev/pts and /dev/ptmx inside the chroot
      for better pty separation from the host. Mount the current tty onto
      /dev/console in the chroot. Inspired by pbuilder.
    - Arguments to the --ignore/--ignore-regexp options (and internal
      ignored_files/ignored_patterns settings) that are prefixed with a ':'
      will verbosely log the ignored files if matched.
    - New option --upgrade-before-dist-upgrade for 2-stage upgrades:
      'apt-get upgrade && apt-get dist-upgrade'.
    - Do not ignore errors while removing packages.
    - Run panic handlers before aborting due to an unhandled exception.
  * piuparts.conf:
    - Use more aliases for mapping between releases and codenames to reduce
      the amount of changes needed on "moving targets" (like stable22sid)
      after a stable Debian release.
    - Set keyring for archived distros to debian-archive-removed-keys.gpg.
    - Add new suites: [jessie2Xstretch], [jessie2Xstretch-rcmd] for testing
      two-stage upgrades (apt-get update && apt-get dist-upgrade) from jessie
      to stretch (without and with --install-recommends).
    - Enable [stretch2proposed].  (Closes: #864933)
    - Use --warn-on-debsums-errors for tests ending in stretch.
    - Rotate aliases for testing=buster and stable=stretch.
    - Add new suites: [buster], [buster-rcmd], [stretch2buster],
      [stretch2buster-rcmd] for testing buster.
    - Add new suites: [stretch2bpo], [stretch2bpo2buster] for testing
      stretch-backports.
    - New (per-section) conffile setting: 'exclude-known-problems' can be set
      to a list of known problem iconffile names that should *not* be used for
      this section.
  * piuparts.conf.anbe: Add some more example sections.
  * distros.conf: Add support for buster-debug, buster-proposed-updates.
  * piupartslib/packagesdb.py:
    - Add new state "outdated" to ignore packages if a dependency distro
      already has a newer version.  (Closes: #856846)
    - Resolve packages in "outdated" state after dependency databases are
      initialized.
  * piuparts-slave.py:
    - Run piuparts on dummy package "TARBALL" (but skip tests) to create
      tarballs.
    - Add "chroot-meta-auto" config option to automatically maintain cached
      target chroot meta data (using --end-meta and --save-end-meta) for
      distupgrade tests instead of generating it on-the-fly.
    - Flush pending logfiles upon startup.
  * piuparts-analyze.py:
    - Process newest logfiles first, in case of timeouts.
    - Drop report_packages_with_many_logs(), obsoleted by archiving old logs.
    - Remove support for magic "$DISTRO/None" versions.
  * piuparts-report.py:
    - Plot all states in the graphs.
    - Support new states in plots (varying number of columns in counts.txt).
    - Reorder stacking in the bts_stats plot.
    - Defer rewriting unmodified maintainer and source summaries, refresh them
      once per month.
  * custom-scripts: Check for dummy package "TARBALL" to detect tarball
    creation phase.
  * scripts/is_testable_uninstallable:
    - Add exceptions to skip distupgrades of many buggy ancient packages.
      (Closes: #688250, #696081)
  * scripts/post_setup_dummy_users: Skip regular users when testing dpsyco*.
  * scripts/pre_distupgrade_exceptions:
    - Disable APT::Immediate-Configure on some squeeze->wheezy upgrade paths.
    - Add exceptions for old buggy packages.
  * scripts/post_{setup,distupgrade}_zz_backports: Avoid downgrading
    systemd/udev from jessie-backports to jessie during removal phase.
    (Closes: #856845)
  * scripts/post_distupgrade_exceptions: Add stretch->buster workarounds:
    - Remove empty unowned /etc/dbus-1/, /etc/dbus-1/system.d/.
    - Change permissions from 0755 to 0700 on /var/lib/polkit-1/.
  * scripts-broken-symlinks/post_install_extras_unbreak_symlinks: New script
    for "fixing" some broken symlinks (e.g. by installing selected suggested
    packages) in tests using --fail-on-broken-symlinks.
  * scripts-debug-triggers/: New scripts for enabling dpkg trigger debugging.
  * conf/crontab-*: Set PATH and run scripts without absolute path.
  * master-bin/detect_archive_issues:
    - Look at failed logs older than 24 hours (48 hours previously).
    - Mark logfiles for immediate recycling upon first appearance.
    - Run twice per day, moving new logs to untestable within 24-36 hours.
  * master-bin/detect_network_issues:
    - Report the issues found in each logfile.
    - Detect alternate wording of gpg verification error.
    - Detect master and slave disagreement on the "current" version of a
      package due to using different mirrors and ongoing mirror push.
  * master-bin/detect_piuparts_issues:
    - Report the issues found in each logfile.
    - Recognize more problems caused by a full filesystem.
    - Recognize more failures when connecting to databases.
  * master-bin/detect_well_known_errors: Ignore known_problems conffiles
    listed in 'exclude-known-problems' in piuparts.conf.
  * Add known_problems/trigger_cycle_error.conf to report trigger cycles and
    other trigger problems.
  * Add bug templates for failing to upgrade from stretch to buster.
  * Update bug templates for long grown upgrades ending in buster.

  [ Holger Levsen ]
  * update TODO. Work on buster has begun. \o/
  * generate_daily_report.in: only add runtime to external script output if
    not already included.
  * master-bin/report_untestable_packages.in:
    - also report runtime.
    - only act on sections with precedence < 100.
  * master-bin/detect_network_issues.in:
    - dynamically report detected issues.
    - move check for outdated reference chroot to detect_piuparts_issues.
  * master-bin/detect_piuparts_issues.in:
    - dynamically report detected issues.
  * instances/piuparts.conf-template.pejacevic:
    - Add new suites to be tested:
      - stable2sid, upgrading stretch -> sid (skipping testing/buster) to find
        possible upgrade problems before a package migrates to testing
      - stable22sid, upgrading stretch -> buster -> sid
      - oldstable222sid, upgrading from jessie -> stretch -> buster -> sid
        (Closes: #859620)
    - Adjust precedences for most of the tested suites, set precedence to 100
      for suites which don't change anymore.
    - Set idle-sleep to 3600 seconds, the results pages are only updated twice
      a day anyway.
  * Update README_server.txt.
  * htdocs/index.tpl: announce new suites.

 -- Holger Levsen <holger@debian.org>  Mon, 31 Jul 2017 13:32:50 -0400

piuparts (0.77) unstable; urgency=medium

  [ Andreas Beckmann ]
  * distros.conf:
    - Add aliases for oldstable and oldoldstable.
    - Update aliases for stretch being released as stable.
  * piuparts.py:
    - Add to ignored_files:
      + /etc/rc.local
      + /etc/X11/Xwrapper.config  (Closes: #859929)
      + /var/lib/apt/daily_lock
  * piuparts-analyze.py:
    - Do not ignore Ctrl-C.
  * scripts/post_distupgrade_base_cleanup: Remove (transitional) sysvinit from
    stretch.  (Closes: #860819)
  * scripts/pre_distupgrade_zz_database-server: Do not migrate manually from
    mysql-server to default-mysql-server (aka mariadb-server), there is now a
    transitional mysql-server package in stretch.

  [ Holger Levsen ]
  * piuparts-report.py:
    - update navigation to point to piuparts.conf-template.pejacevic.

 -- Holger Levsen <holger@debian.org>  Sat, 03 Jun 2017 23:08:19 +0200

piuparts (0.76) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /usr/share/texmf/ls-R
    - Remove from ignored_files:
      - /usr/share/keyrings/debian-archive-removed-keys.gpg~
    - Do not require --scriptsdir for proper operation.  (Closes: #855038)
    - Make install_over_symlink tests fail by default, add
      --warn-on-install-over-symlink option to demote this to a warning.
    - Add --install-suggests option.
    - Fall back to generating the reference chroot state on-the-fly if the
      --end-meta file is missing.
    - Make logged command lines shell-safe with pipes.quote().
  * piuparts.conf:
    - Use --warn-on-install-over-symlink for tests ending before stretch.
    - Enable scripts-log-alternatives for [sid] and [stretch].  (See: #850917)
    - Add new suite: oldstable22testing, upgrading wheezy -> jessie -> stretch.
  * piuparts.conf.anbe: Add some more example sections.
  * distros.conf: Add support for sid-debug, stretch-debug.
  * piuparts-slave.py:
    - Replace literal ESC (0x1b) chars with string '[ESC]' for easier
      copy+paste from logfiles.
    - Make logged command lines shell-safe with pipes.quote().
  * piuparts-analyze.py:
    - Also process untestable/*.log.
  * instances/*: Generate the config files piuparts.conf.pejacevic,
    piuparts.conf.piu-slave-bm-a, piuparts.conf.piu-slave-ubc-01 (new) and
    piuparts.conf.piu-slave-1und1-01 (unused) from a common template to keep
    the settings in sync, since they should only differ in mirror and arch.
  * Clean up leftover /etc/piuparts/scripts/post_setup_experimental.
    (Closes: #854317)
  * scripts/post_setup_minimize:
    - Exclude gcc-4.8-base from jessie chroot.
  * scripts/pre_install_database-server: Add/fix some database requirements.
  * scripts/pre_distupgrade_zz_database-server: Switch from mysql-server to
    default-mysql-server (aka mariadb-server) for selected packages on
    upgrades to stretch, otherwise they will lose their database server.
    Try 'dpkg --configure --pending' after failed upgrades in case the
    database server was started too late - after a client tried to access it.
  * scripts/pre_remove_40_find_missing_md5sums: Correctly escape backslashes
    in filenames.
  * scripts/pre_remove_exceptions: Handle removal of more packages pulling in
    'init'.
  * Add/update exceptions for ancient packages in
    scripts/is_testable_uninstallable, scripts/pre_install_exceptions, and
    scripts/post_distupgrade_exceptions.
  * master-bin/detect_piuparts_issues: Recognize more cases of full disks.
  * master-bin/detect_network_issues: Recognize unauthenticated packages.
  * Add known_problems/problems_and_no_force_issue.conf to recognize non-fatal
    failures when attempting to remove essential packages.
  * Add bug template for failing to upgrade from testing to sid.
  * Add bug template for shipping broken symlinks.

  [ Holger Levsen ]
  * piuparts.py:
    - Apply patch from Maxime Lareo to allow usage of --keep-sources-list
      without --basetgz. (Closes: #841157)
    - Add to ignored_patterns:
      + /srv/.* (Closes: #848186)
    - Add my copyright note according to git blame.
  * Add python (>= 2.7) to the depends of piuparts-master and piuparts-slave
    as dh-python has been changed to only add python depends if it finds
    python code in PATH. Thanks lintian.
  * Replace httpredir.debian.org with deb.debian.org everywhere: with deb.d.o
    apt will use SRV records to go directly to the mirror, with httpredir.d.o
    there will be http redirects for every file.
  * slave_run: Fix bug which prevented a different number of slaves to be
    started than defined in the configuration. Also add a check to ensure that
    this optional argument is an integer and within the defined maximum number
    of slaves.
  * slave_stop: New script to stop all piuparts-slaves on a host.
  * slave_stop.8: Add new manpage for this new script, also update slave_run.8
    to mention slave_stop.8.
  * Update README_pejacevic.txt and README_server.txt.
  * Drop instances/piuparts.conf.lamarr and …/piuparts.conf.goldwasser.
  * htdocs/index.tpl:
    - Announce 2nd piuparts-slave, explain this is a three host setup now,
      mention that pejacevic is a four core system and other news.
    - Make "contribute" a link.
  * archive_old_logs: use xargs -P $NUM_CPU and -n 1 to compress old logs in
    parallel.
  * update-piuparts-(master|slave)-setup: touch $PIUPARTS_TMPDIR/.nobackup to
    exclude it from backups made by DSA.
  * conf/crontab-master.in: run piuparts-report twice a day instead of trying
    four times a day, which hasn't worked out for a long time.
  * generate_daily_report.in: measure runtime of this script and the scripts
    started by it.
  * detect_(network|piuparts|archive)_issues.in: measure runtimes too.
  * reschedule_oldest_logs.in: measure runtime.

  [ Michael Stapelberg ]
  * Add support for logging update-alternatives calls using optional
    custom-scripts/scripts-log-alternatives/  (Closes: #850917)

 -- Holger Levsen <holger@debian.org>  Sun, 12 Mar 2017 17:55:07 +0100

piuparts (0.75) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /etc/network/
      + /etc/php/7.0/ and selected subdirs
      + /var/lib/apache2/
    - Run panic handlers in reverse order.
    - Add --shell-on-error option to simplify debugging of piuparts failures.
      Starts an interactive shell in the chroot if an error occurred.
    - Unmount /proc/sys/fs/binfmt_misc only if mounted.
    - Query the apt version in the chroot.  (Closes: #851517)
    - Use apt_pkg.version_compare().
  * piuparts.conf:
    - Add new suite: stretch-rcmd (test with --install-recommends).
    - Add new suite: jessie2stretch-rcmd (test with --install-recommends).
    - Add new suite: stretch-security.
    - Add new suite: stretch-pu (test packages in stretch-proposed-updates).
    - Add new suite: stretch2proposed.
    - Reduce delay before rescheduling untestable packages.
  * piuparts-analyze.py:
    - Adjust debianbts syntax to be compatible with both jessie and stretch.
    - Improve exception handling.
  * Handle more database setup issues.
  * Add/adjust some exceptions for ancient packages.
  * scripts/pre_install_extras: Add examples how to preseed license acceptance
    for non-free and downloader packages.
  * scripts/pre_distupgrade_zz_database-server: Run pg_upgradecluster during
    dist-upgrades.
  * scripts/post_distupgrade_hack_debsums: Limit to squeeze->wheezy and merge
    into scripts/post_distupgrade_exceptions.
  * scripts/{pre,post}_remove_exceptions: Support removal of essential
    packages with apt-get from stretch onwards.
  * known_problems/piuparts-depends-dummy_error.conf: Recognize the failure
    from 'apt-get install piuparts-depends-dummy.deb'.
  * known_problems/problems_and_no_force_error.conf: Recognize the apt 1.1
    message on attempted removal of essential packages.
  * master-bin/detect_piuparts_issues: Recognize more cases of full disks.

 -- Holger Levsen <holger@debian.org>  Wed, 25 Jan 2017 13:19:30 +0100

piuparts (0.74) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /etc/modprobe.d/
    - Add new class of is_testable_* custom scripts: A return value of '1'
      makes the test succeed without actually installing the package. Use for
      packages that cannot be tested with piuparts by design or are broken in
      an unfixable way.  (Closes: #682739)
    - Ensure /etc/resolv.conf in the chroot has permissions 0644 to match a
      possible recreation of that file by resolvconf.  (Closes: #660350)
    - Increase output limit to 8 MB.  (Closes: #794331)
    - Increase single command time limit to 60 minutes.
  * piuparts.conf:
    - New section [sid-strict], testing with --install-remove-install and
      failing on leftover files.  (Closes: #604406)
    - Only warn on leftover files for [sid] and use the same settings for
      both [sid] and [stretch], since these are now used by britney to block
      testing migration in case of regressions.
  * piuparts.conf.anbe: Add some more example sections.
  * piuparts-slave.py:
    - Increase test timeout to 90 minutes.
  * piuparts-analyze.py:
    - Also consider bugs filed against source packages.
  * piuparts-reports.py:
    - Mark arch:all packages with an :all suffix in package lists.
    - Report skipped tests.
  * Makefile: Add check-whitespace target looking for trailing whitespace etc.
  * scripts/pre_install_database-server: Use default-mysql-* from stretch
    onwards.
  * scripts/post-{install,purge}-exceptions: Wait for dkms progress indicator
    to terminate.
  * scripts/post_distupgrade_exceptions: Work around some jessie->stretch
    issues.
  * scripts/is_testable_uninstallable: New custom script to exclude some
    uninstallable (or similarly broken) packages from being tested.
  * scripts/post_setup_minimize: New custom script to minimize chroots.
    - Remove tzdata and lsb-base from sid and stretch.
  * scripts/post_setup_dummy_users: New custom script to create dummy groups
    and users that block ids that are likely being used by the host system.
  * scripts/post_{setup,distupgrade}_experimental: Removed, obsolete since
    restoring the initial package selection supports downgrades (0.64).
  * custom-scripts/scripts-debug-{remove,purge}/: Improved debugging of
    maintainer scripts during package removal.
  * Overhaul some more custom scripts.
  * known_problems/debsums_mismatch_*.conf: Report missing symlinks and
    directories.
  * known_problems/needs_rebuild_issue.conf: Report "called
    emacs-package-install as a new-style add-on, but has no compat file"
  * known_problems/test_was_skipped_issue.conf: New known problem for skipped
    tests.
  * master-bin/detect_network_issues: Detect "E: The repository '.*' does no
    longer have a Release file."
  * master-bin/detect_piuparts_issues: Detect 'invoke-rc.d: initscript mysql,
    action "restart" failed.'
  * master-bin/reschedule_piuparts_tests: New experimental helper script for
    rescheduling piuparts tests based on detected known problems.

  [ Holger Levsen ]
  * Apply patch by Antonio Ospite to workaround #847788 by force-unmounting
    /proc/sys/fs/binfmt_misc - some java packages trigger update-binfmts,
    which mounts /proc/sys/fs/binfmt_misc but never unmounts it.
    (Closes: #704037) - Thanks Antonio!
  * Add build-depends to dh-python, thanks lintian.
  * Bump copyright years.

  [ Sean Whitton ]
  * piuparts.py: use `apt-get install ./foo.deb` instead of `dpkg -i
    ./foo.deb && apt-get install -yf` for more reliable dependency
    resolution. (Closes: #825487)

 -- Holger Levsen <holger@debian.org>  Sun, 15 Jan 2017 11:59:00 +0100

piuparts (0.73) unstable; urgency=medium

  * Add new option, --hard-link, and do *not* use it by default.
    (Closes: #841025)

 -- Holger Levsen <holger@debian.org>  Tue, 06 Dec 2016 18:14:19 +0100

piuparts (0.72) unstable; urgency=medium

  [ Holger Levsen ]
  * instances/piuparts.conf.pejacevic: test jessie2bpo and jessie2bpo2stretch.
  * piuparts.py:
    - Fix devpts mounting to use the correct gid=5,mode=620 mount options.
      Patch taken from Adam Conrad. (Closes: #829146)
    - explain (as a code comment) why /root/.rnd shouldn't be ignored.
      (Closes: #750099)
    - Add /var/log/apt/eipp.log.xz to ignored files. (Closes: #830527)
  * custom-scripts/scripts/pre_remove_exceptions: force removal of usrmerge
    package. (Closes: #798374)

  [ Stefano Rivera ]
  * Don't test the current Debian release status, tracking that is
    distro-info-data's problem. (Closes: #827411)

 -- Holger Levsen <holger@debian.org>  Wed, 03 Aug 2016 11:24:56 +0200

piuparts (0.71) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Define namedtuple FileInfo globally s.t. it can be pickled.
    - New option --no-check-valid-until to set apt option
      Acquire::Check-Valid-Until=false for testing archived releases.
    - Clear all locale settings from the environment before running commands
      in the chroot.
  * piuparts.conf:
    - Use --no-check-valid-until for squeeze.
    - New section [wheezy-security] (also used by wheezy LTS).
    - New section [jessie-security].
  * distros.conf: squeeze-* has been archived/removed.
  * piuparts-analyze.py:
    - Skip logfile on HTTPError while querying the BTS.
  * piuparts-reports.py:
    - Skip section on HTTPError while downloading Packages.
  * post_setup_forbid_home: Adjust for basefiles now shipping /home/
  * Add/adjust some exceptions.

  [ Holger Levsen ]
  * Bump standards version to 3.9.8, no changes needed.

 -- Holger Levsen <holger@debian.org>  Thu, 05 May 2016 14:03:30 +0200

piuparts (0.70) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /etc/sysctl.d/99-sysctl.conf (dangling symlink to ../sysctl.conf)
      + /var/log/btmp
    - Canonicalize mountpoint inside the chroot to avoid mounting over
      symlinks and possibly outside the chroot.
    - --install-remove-install runs 'apt-get install --reinstall $pkg', too.
  * post_distupgrade_base_cleanup: Remove libprocps3 in stretch.
  * pre_remove_40_find_unowned_lib_links: Handle another mpi alternative.
  * Add bug template for maintainer scripts incorrectly complaining about
    being called with unknown arguments.

  [ Holger Levsen ]
  * conf/distros.conf and instances/piuparts.conf.pejacevic: move squeeze to
    archive.debian.org, stop testing squeeze only suites - but keep testing
    upgrades to wheezy suites.
  * Fix typo in piuparts_slave_join.8.txt, thanks lintian.

 -- Holger Levsen <holger@debian.org>  Tue, 08 Mar 2016 13:00:22 +0100

piuparts (0.69) unstable; urgency=medium

  * piuparts.py: add to ignored_files:
    - /var/lib/pkcs11proxyd/ (Closes: #810703)
  * piuparts.1.txt: Fix typos, thanks to Дилян Палаузов and lintian.
  * debian/control:
    - Bump standards version to 3.9.7, no changes needed.
    - Use more secure https URL for Vcs-Git: header, thanks lintian.
    - Use /git/ not /cgit/ in Vcs-* headers.
  * debian/copyright: bump years for my contributions to 2016.

 -- Holger Levsen <holger@debian.org>  Sat, 13 Feb 2016 12:46:10 +0100

piuparts (0.68) unstable; urgency=medium

  * Dedicated to the memory of Ian Murdock.
    Thank you very much for starting and shaping Debian, Ian! The world would
    be very different today without your work and you will never be forgotten.

  [ Andreas Beckmann ]
  * piuparts.py:
    - Simplify mounting/unmounting into the chroot.
    - Mount a 64 MB tmpfs onto /dev/shm in the chroot.  (Closes: #793487)

  [ Sven Haardiek ]
  * Add option "--single-packages" to test every package specified via path or
    package name individually. (Closes: #810237)

  [ Michael Prokop ]
  * piuparts.py:
    - Execute dist-upgrade also when using --existing-chroot option.
      (Closes: #798266)

 -- Holger Levsen <holger@debian.org>  Tue, 02 Feb 2016 10:33:40 +0100

piuparts (0.67) unstable; urgency=medium

  [ Holger Levsen ]
  * Add wheezy-pu to the suites being tested. (Closes: #800094)

  [ Andreas Beckmann ]
  * piuparts.py:
    - Ensure /etc/mtab exists in the chroot.
    - Record and compare file owner and group names instead of uid/gid.
  * Add support for adequate tag ldd-failure. (Closes: #793108)
  * scripts/post_distupgrade_exceptions:
    - Fix the /etc/nsswitch.conf wheezy -> jessie upgrade handling.
  * Update custom scripts handling databases.
  * Add bug template for wheezy -> jessie -> stretch upgrades.

 -- Holger Levsen <holger@debian.org>  Sat, 17 Oct 2015 16:32:06 +0200

piuparts (0.66) unstable; urgency=medium

  * Add python-lzma to build-depends, as the tests need it now.

 -- Holger Levsen <holger@debian.org>  Wed, 26 Aug 2015 00:59:42 +0200

piuparts (0.65) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Create sources.list entries for --testdebs-repo with '[ trusted=yes ]'
      to avoid needing --do-not-verify-signatures which would act globally.
    - Add --fake-essential-packages option to include packages in the base
      chroot that are not removed after the test. These are available during
      purge and for checking against mistreatment.
    - Increase permitted command output volume from 3 MB to 4 MB (for daptup).
    - Only ignore 'dpkg -i' failures that can be fixed by 'apt-get -f
      install'.  (Closes: #794628)
    - Set Architecture of piuparts-depends-dummy to match the package to be
      tested.
  * piuparts.conf.anbe: Add some more example sections.
  * piupartslib/packagesdb.py:
    - Put package in 'dependency-does-not-exist' state if a pass/ log exists
      but a dependency has been removed from the archive since then.
    - Prepare improvements for handling foreign arch dependencies.
  * piupartslib/open_packages_url(): Support xz-compressed and uncompressed
    Packages files.
  * piuparts-master-backend.py:
    - Catch URLError, log it and abort without backtrace.
  * piuparts-common: Add Depends: python-lzma.
  * scripts/pre_remove_40_find_unowned_lib_links: Ignore some symlinks caused
    by mpi-default-dev and libglide2/libglide3.
  * Add/adjust some exceptions for ancient packages.

 -- Holger Levsen <holger@debian.org>  Tue, 25 Aug 2015 08:23:51 +0000

piuparts (0.64) unstable; urgency=medium

  [ Holger Levsen ]
  * Add FancyIndexing to piuparts-master.conf and enable apache syntax
    highlighting in vim. (Thanks DSA!)
  * Use httpredir.debian.org instead of http.debian.net. (Closes: #783617)
  * Add support for adequate tag missing-pkgconfig-dependency.
    (Closes: #783528)
  * Use revdate: in the asciidoc headers of manpages instead of DATE in the
    body to achieve reproducible builds and set the revdate: to the last
    modification date of each manpage.

  [ Andreas Beckmann ]
  * piuparts.py:
    - Use 'dpkg-query -W' instead of 'dpkg --get-selections' to record
      architecture and version information for installed packages, too.
    - Restore the selections to the package versions from the reference chroot
      in scenarios like sid+experimental where more than one version could be
      available. Use --force-yes since this may involve downgrades.
  * piuparts.conf:
    - New global setting: basetgz-sections, used by piuparts-slave only.
    - Switch to separate tarball sections.
  * piuparts-slave.py:
    - Add support for special sections that only create/refresh reference
      basetgz tarballs without testing packages. The basetgz can be shared
      between multiple sections without being affected by their flags.

 -- Holger Levsen <holger@debian.org>  Fri, 12 Jun 2015 13:42:52 +0200

piuparts (0.63) unstable; urgency=medium

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /etc/clamav/
      + /etc/lighttpd/
      + /etc/lighttpd/conf-available/
    - Increase verbosity when reporting things installed over directory
      symlinks: report all symlinks and their targets.
    - Reinstall base system packages missing upon removal with
      --no-install-recommends.
    - Mount /dev/pts into the chroot. Wanted by recent apt.
    - Fix usage of schroot with chroot names without ':'.  (Closes: #773874)
    - Resolve distro aliases before setting PIUPARTS_DISTRIBUTION.
    - Fix running debootstrap if --do-not-verify-signatures is given.
      (Closes: #781673)
  * piuparts.conf:
    - Enable --warn-on-debsums-errors for all jessie tests.
    - Add new suite: jessie-pu (test only packages in jessie-proposed-updates).
    - Add new suite: jessie-rcmd (test with --install-recommends).
    - Add new suite: wheezy2jessie-rcmd (test with --install-recommends).
    - Add new suite: stretch.
    - Add new suite: jessie2stretch.
  * piuparts.conf.anbe: Add many more example sections.
  * distros.conf: Reactivate 'testing' and 'stable' aliases.
  * piupartslib/packagesdb.py:
    - Consider logfile age in addition to the time waiting for recycling.
  * piuparts-slave.py:
    - Handle Ctrl-C while downloading Packages files and flush/unreserve, too.
    - Catch another exception that may happen while talking to the master.
  * detect_archive_issues: Move archive_issues.txt from htdocs/ to master/.
  * detect_piuparts_issues: Detect transient apt-cache failures.
  * generate_daily_report: Remove obsolete .html files (e.g. summaries for
    removed source packages or obsolete maintainer addresses) after 30 days.
  * reschedule_oldest_logs:
    - Fix gradual oldest-first recycling if nearly all logs are candidates.
    - Recycle/expire pass/ logs only if the section is (recycle-)idle.
  * scripts-apt-first/pre_distupgrade_zz_apt_first: New custom script for
    upgrading apt first and having the new apt perform the remaining upgrade.
  * scripts-sysvinit/pre_distupgrade_zz_sysvinit: New custom script for doing
    wheezy->jessie upgrade tests while keeping sysvinit as init if possible.
  * scripts/pre_remove_40_find_unowned_lib_links: Ignore /lib/ld-lsb.so.[123]
    links created by lsb-core.
  * scripts-no-usr-share-doc: Add exception for localepurge.
  * post_distupgrade_base_cleanup: New custom script for generalized libdbX.Y
    exceptions.
  * Update exceptions for squeeze-lts.
  * Add/update exceptions for many packages.
  * Add/update some bug templates.
  * known_problems/{initdscript_lsb_header_issue,insserv_error}.conf:
    Report "service.*already provided", too.

  [ Holger Levsen ]
  * piuparts.conf.pejacevic: add new suite: jessie2proposed.
  * piuparts.conf.piu-slave-1und1-01: merge changes from pejacevic config but
    replace amd64 with i386.
  * crontab-master.in: update webpages every six hours.
  * piuparts-reports.py:
    - Link to the new "Debian Package Tracker" (tracker.debian.org) instead to
      the old "Package Tracker System" (PTS).
    - Switch links to lintian.debian.org to https.
  * crontab-slave.in: try to start slave every hour to make sure it's always
    running.
  * Use "autopep8 --max-line-length=160" to re-format all .py files, then also
    use "-a" on a 2nd run.
  * test_config.py: update for Jessie being stable and Stretch being the new
    testing suite.
  * debian/copyright: Remove space from W3C FreeUse licence name, thanks
    lintian.
  * Update piuparts.py, piuparts.1.txt and README_server.txt due to the fact
    that jessie is the new stable and testing is stretch now.

 -- Holger Levsen <holger@debian.org>  Mon, 27 Apr 2015 16:46:29 +0200

piuparts (0.62) unstable; urgency=medium

  * Default to http://http.debian.net/debian instead of the deprecated
    http://cdn.debian.net service as default mirror. (Closes: #774471)

 -- Holger Levsen <holger@debian.org>  Tue, 06 Jan 2015 10:36:39 +0100

piuparts (0.61) unstable; urgency=medium

  [ Michael Prokop ]
  * Support new scripts directive 'post_chroot_unpack', useful for adding
    apt-keys for custom apt repositories. (Closes: #767485)
  * Add custom-scripts/scripts-unused-examples/post_chroot_unpack_key_setup.

  [ Holger Levsen ]
  * piuparts.py: Add "/var/cache/apt/archives/partial/" to ignored_files.
    (Closes: #767489)
  * piuparts.py and piuparts-report: Detect four more (in)adequate issues:
    - broken-binfmt-detector
    - broken-binfmt-interpreter
    - missing-alternative
    - program-name-collision
    (Closes: #767499)
  * distros.conf: Remove unneeded URI for squeeze-lts, it just uses the
    default repository.
  * instances/pejacevic+slaves: Do not reschedule passed squeeze logs anymore.

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /etc/modules-load.d/modules.conf  (dangling symlink to ../modules)
    - Place an up-to-date copy of the host's /etc/resolv.conf (with comments
      stripped and whitespace normalized) in the chroot.
  * piuparts.conf:
    - Add flags-start-jessie, flags-end-jessie global variables.
    - Use --scriptsdir .../scripts-jessie for tests ending in jessie.
    - Enable --warn-on-debsums-errors for wheezy2jessie upgrades.
  * piuparts.conf.anbe: Add many more example sections.
  * distros.conf:
    - Add *updates, *backports, *proposed for jessie.
    - Switch 'testing' alias to 'stretch', but deactivate it for stable.
    - Add 'stable' alias pointing to 'jessie', deactivated as well.
  * piupartslib/dwke.py:
    - Fix parsing of known_problems/*.conf that have EXCLUDE_PATTERN.
  * piuparts-slave.py:
    - Avoid a busy loop by suspending a section for 5 minutes if basetgz
      creation is in progress or failed.
  * Add "AddDefaultCharset utf-8" to the apache2 configuration snipplet
    example, so that logfiles are displayed as UTF-8.
  * master-bin/detect_piuparts_issues: Another partial write error from tar.
  * pre_install_foreign_architecture: New script to enable foreign
    architectures for testing cross toolchain packages.
  * pre_remove_40_find_unowned_lib_links, unowned_lib_symlink_*.conf: New
    script and reports for unowned symlinks in [/usr]/lib[/<triplet>].
  * post_distupgrade_exceptions: Handle libdb5.1 removal in jessie.
  * scripts-jessie/post_setup_jessie-fake-essential: New custom script.
    - Make ucf fake-essential. (ucf may be used unconditionally during purge.)
    - Make init-system-helpers fake-essential. (Systemd service link cleanup.)
  * Rework the file-rc/sysvinit/upstart/systemd specific exceptions.
  * Remove debugging output for resolvconf.
  * Update custom scripts handling databases, experimental, ... and some more.
  * Update bug templates.

 -- Holger Levsen <holger@debian.org>  Wed, 03 Dec 2014 19:55:26 +0100

piuparts (0.60) unstable; urgency=medium

  [ Leo Iannacone ]
  * piuparts.py: when using the --existing-chroot option, instead of copying
    files, use hard links if the original chroot and destination directory
    are on the same device. (Closes: #754878)

  [ Iain Lane ]
  * Use python-distro-info to get the Debian and Ubuntu devel releases.
  * tests: Remove the Ubuntu devel release test.

  [ Holger Levsen ]
  * Update README_server.txt and README_pejacevic.txt after setting up a
    piuparts master/slave system from packages myself.
  * Drop conf/piuparts-master.sudoers from debian/piuparts-master.examples
    and include all commands piupartss needs to run as root in
    conf/piuparts-slave.sudoers.
  * Update instances/piuparts.conf* to match what is in use for
    piuparts.debian.org today. Add two new systems, goldwasser and lamarr, as
    examples taken from piuparts development.
  * Add "AddType text/plain .log" to the apache2 configuration snipplet
    example, so that logfiles are displayed in the browser.
  * Bump standards version to 3.9.6, no changes needed.
  * Replace all occurrences of old gitweb Alioth URLs with cgit ones.

 -- Holger Levsen <holger@debian.org>  Sun, 26 Oct 2014 20:07:24 +0100

piuparts (0.59) unstable; urgency=low

  [ Holger Levsen ]
  * piuparts.py:
    - mount selinuxfs read-only and on new location when possible. Thanks to
      Laurent Bigonville for the patch! (Closes: #682068)
    - Add to ignored_files:
      + /etc/sub{g,u}id[-] introduced by shadow 1:4.2-1.
  * piuparts-report.py:
    - create https URLs in source_summary_url(). This should probably be made
      configurable.
    - fix log directory creation. (Closes: #746722)
    - fix spelling of "ditto". (Closes: #746724)
    - create graph of rc and non-rc bugs filed (and fixed) since the beginning
      of piuparts testing and display it on piuparts.d.o welcome page.
    - move counts.txt from htdocs to master directory.
  * master-bin/gather_bts_stats: differate between rc and non-rc bugs.
  * Makefile:
    - Don't install crontabs and sudoers file anymore, except when
      installing from git.
    - Also cleanup python bytecode from tests.
  * Packaging:
    - install cron files for piupartsm and piupartss users in
      /usr/share/doc/piuparts-(master|slave)/examples/ (Closes: #746721)
    - split sudoers.d into master and slave and provide them in /examples/
      too.
    - install piuparts.conf.sample in /usr/share/doc/piuparts-master/examples/
    - install slave_run and slave_join in /usr/bin/ (Closes: #746718)
    - piuparts-slave.postinst: do not attempt to add the slave user's ssh
      public key to the master user's authorized key. The slave package should
      maybe recommend the master package, but definitly not pre-depend on it,
      which would be a requirement to make this work. So document this
      instead.
  * Updates various pieces of documentation, rename README_1st to README.
    Explicitly state what will break when using cdebootstrap with pbuilder.
    (Closes: #709348)
  * Update various custom-scripts (usually to workaround problems in other
    packages).
  * Switch all links to bugs.debian.org, www.debian.org, wiki.debian.org,
    packages.debian.org, anonscm.debian.org and lists.debian.org,
    db.debian.org, qa.debian.org, lists.alioth.debian.org and udd.debian.org
    to https.

  [ David Steele ]
  * dependencyparser.py - Be more lenient about the multi-arch modifiers
    accepted and stripped by the parser.
  * piuparts-report.py:
    - Fix indentation of generate_global_summary()
    - Refactor sections_by_precedence() out of generate_global_summary().
    - Restore (a copy of) the counts.txt file to the web view, in
      <section>/counts.txt.
    - Also add a link to counts.txt to the section page.
  * Remove oldstable distribution results from the JSON summary.
    - Also remove stable distribution results.

 -- Holger Levsen <holger@debian.org>  Mon, 14 Jul 2014 13:14:19 +0000

piuparts (0.58) unstable; urgency=low

  [ Holger Levsen ]
  * debian/copyright: update years.
  * piuparts.py:
    - ignore multiarch definition in_default_debian_mirrors()
      (Closes: #711370)
    - Add to ignored_files:
      + /etc/machine-id (Closes: #619244)
  * custom-scripts: add debugging output for resolvconf. (See #660350)
  * Adapt and rename conf/piuparts.apache to piuparts-master.conf as per
    apache2.4 transition. (Closes: #712384)
  * piuparts.1.txt: explain that --do-not-verify-signatures also causes
    APT::Get::AllowUnauthenticated to be set accordingly in the chroots.
  * Switch ubuntu default to 'trusty'. (Closes: #744848). Then switch it to
    'utopic'...
  * piuparts-report: Add link to ci.debian.net to navigation menu.
  * Replace http://piuparts.debian.org with https everywhere. Thanks to DSA
    for all their support running piuparts.debian.org and for everything else!

  [ Andreas Beckmann ]
  * piupartslib/packagesdb.py:
    - Add missing PackagesDB.get_version(package_name) method, needed by
      piuparts-report.
    - Add PackagesDB.get_source(package_name) method, for easy lookup of
      source package names.
  * piuparts-report.py:
    - Improve integration of known problem reports generation.
  * master-bin/detect_well_known_errors.py:
    - Classify unclassified failures as unclassified_failures.conf.

  [ David Steele ]
  * piuparts-report.py: Store test summary.json output at the section
    and global level, using a new piupartslib/pksummary.py module.
    The new Config.get_std_distro() provides a standard default distro
    name for summaries. (Closes: #740386)
  * Add python-distro-info to piuparts-common's depends and to build-depends
    as it's used in the tests too.

 -- Holger Levsen <holger@debian.org>  Thu, 01 May 2014 00:23:42 +0200

piuparts (0.57) unstable; urgency=low

  [ Ivo De Decker ]
  * piuparts-report.py: Use source version from final_distro.
    (Closes: #733900)

  [ Matthias Schmitz ]
  * Rearrange old unittests.py, use nosetests instead:
    - Move unittests.py to tests/ subdirectory,
    - Split out dependencyparser test to an extra file,
    - Add configuration for nosetests,
    - Use nosetests in Makefile target "check".
  * piuparts.py:
    - Add unittest for DefaultsFactory / Defaults.
    - Use pymox to mock the piuparts.guess_flavor() function as it would run
      lsb_release in a subprocess.
    - Move broken_symlink unittest out of piuparts.py into
      tests/test_piuparts.py so nosetests can run this test and detect
      coverage.
  * Add tests/README documenting the naming of the test classes and functions.
  * Re-enable unittests during package build
    - Don't create coverage report during pkg build.
    - Add to Build-Depends: python-debian, python-apt, python-nose,
      python-debianbts, python-yaml, and python-mox3.

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /etc/group.org
      + /etc/passwd.org
      + /etc/shadow.org
    - Create piuparts-depends-dummy.deb with gzip compression for
      installability with older dpkg versions.
    - Exclude virtual packages provided by the real package (but not the dummy
      package) from the Conflicts of piuparts-depends-dummy.deb.
    - Check the status of the packages after installing the supplied .debs.
      Based on an initial patch by Julien Cristau.  (Closes: #718544, #736743)
  * piupartslib/packagesdb.py:
    - load_alternate_versions_from_packages_urls(): New method to load
      alternate version numbers from a different set of URLs (e.g.
      final_distro).
    - get_best_package_state(): New method that considers successfully tested
      providers of a virtual package if the real package of the same name
      failed. Used for dependency resolution.
    - No longer special-case packages as essential-required and test them like
      normal packages (no-op test plus adequate run).  (Closes: #735907)
    - Improve ordering of packages to be tested/recycled.
  * piupartslib/dwke.py:
    - Factored out classes Problem and FailureManager and some helpers from
      detect_well_known_errors.py
  * piuparts-master-backend.py:
    - Improve master.log verbosity.
  * piuparts-report.py:
    - Mark essential-required as obsolete and hide it.
    - Integrate the reporting part from detect_well_known_errors.py.
    - Archive outdated logs even if the current version is untested.
  * master-bin/detect_well_known_errors.py:
    - Only update .kpr files, the reporting part was integrated into
      piuparts-report.
  * scripts/post_{setup,distupgrade}_force-unsafe-io: New custom script to
    automatically enable dpkg --force-unsafe-io once that is supported.
    Also divert /bin/sync and replace it with a link to /bin/true. Syncing a
    throwaway chroot is useless, but affects on the host's performance.
  * scripts/pre_install_extras: New custom script to install a linux-headers
    package before testing a *-dkms package, s.t. dkms tries to build a
    kernel module.
  * known_problems/module_build_error_issue.conf: New known problem for dkms
    module build failures.
  * known_problems/piuparts-depends-dummy_{error,issue}.conf: New known
    problem for failing to install and fixup piuparts-depends-dummy.deb.
  * Add more piuparts exceptions.
  * Handle lib32nss-mdns like ia32-libs[-gtk].

  [ Holger Levsen ]
  * piuparts.py:
    - Report adequate version used.

 -- Holger Levsen <holger@debian.org>  Fri, 14 Feb 2014 13:37:23 +0100

piuparts (0.56) unstable; urgency=low

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /etc/apt/apt.conf.d/01autoremove-kernels
    - Use temporary files while creating basetgz and rename afterwards.
    - Remove the package to be tested separately before removing its Depends
      and Recommends.
    - --allow-database now also enables firebird2.5-super.
  * piuparts.conf:
    - New per-section settings:
      + components
  * piupartslib/__init__.py:
    - open_packages_url(): Try Packages.gz if Packages.bz2 is not available.
      (Closes: #711157)
    - Add new class DecompressedStream.
    - open_packages_url(): Use DecompressedStream to transparently decompress
      a Packages.{bz2,gz} file while downloading and reading the content
      without requiring to store the complete file (compressed and/or
      decompressed) in memory.
  * piupartslib/packagesdb.py:
    - PackagesFile: Allow restricting to a set of package names.
  * piuparts-slave.py:
    - Use locking to prevent concurrent basetgz creation.  (Closes: #708287)
    - Use the "components" setting to restrict the archive areas being used
      in the generated sources.list.
    - Reduce memory footprint by discarding unneeded Packages file parts.
  * piuparts-report.py:
    - Report URLs of all Packages files used for a section.
    - Avoid reporting duplicate dependencies after stripping versioning.
    - Fix some invalid HTML constructs.
    - Sort maintainer summary by state: failing packages on top.
  * Improve exception handling.
  * known_problems: Upgrade adequate issue 'missing-copyright-file' from
    boring to normal and make pre_remove_50_find_missing_copyright no longer
    generate fatal errors.
  * Add support for new adequate tags missing-symbol-version-information and
    symbol-size-mismatch.
  * reschedule_oldest_logs: Report number of logfiles in recycle/.
  * Add more piuparts exceptions to work around various failures in multiple
    packages. Add a known_problem report for packages using exceptions.
  * bug-templates: Recommend to use the new dpkg-maintscript-helper commands
    dir_to_symlink/symlink_to_dir that were added in dpkg 1.17.2.
    (Closes: #720185)

  [ Holger Levsen ]
  * piuparts-report.py: use descriptive link targets for (in)adequate issues
    instead of mere tag names, thanks to Jakub Wilk for the wordings.
  * Bump standards version to 3.9.5, no changes needed.
  * Bump compat level to 9, thus build-depend on debhelper > 9.20120909~.

 -- Holger Levsen <holger@debian.org>  Mon, 16 Dec 2013 12:59:14 +0100

piuparts (0.55) unstable; urgency=low

  [ Ivo De Decker ]
  * piuparts-report.py: Add sources.yaml and section.yaml exports.

  [ Holger Levsen ]
  * Add file CONTRIBUTING, thanks to Vincent McIntyre for it! (Closes: #721348)
  * piuparts-report: Add "contact us" link.
  * piuparts.py: Explain at the very beginning of the generated log that
    contact information is part of the FAQ.

  [ Andreas Beckmann ]
  * Add bug templates for wheezy.
  * scripts-leftovers: Improve cleanup in /var/lib/systemd with fake-essential
    init-system-helpers.  (Closes: #719869)

 -- Holger Levsen <holger@debian.org>  Thu, 03 Oct 2013 15:31:38 +0200

piuparts (0.54) unstable; urgency=low

  [ Holger Levsen ]
  * known_problems: fix some adequate patterns.
  * piuparts-master: recommend apache2 | httpd.
  * README_server.txt: be more verbose about configuring sudo.
    (Closes: #711155)
  * piuparts.py and piuparts-reports.py: add "incompatible-licenses" (detected
    since adequate 0.7) and "ldd" to inadequate_tags and known_problems.

  [ David Steele ]
  * piupartslib/packagesdb.py
    - The dependency calculation for rdeps is reworked to match that used
      elsewhere, to allow package reserve() to drive waiting-for-dep to
      drive to 0 more quickly. (Closes: #705977)
    - Reworked rdep metrics (block_count, rrdep_count, waiting_count) to
      calculate on-demand. Access methods are moved from Package to
      PackagesDB.
    - Add a metric for the worst-case reverse-dependency chain length.
    - Weight the reserved packages returned by this additional factor.

  [ Andreas Beckmann ]
  * piuparts.py: add to ignored_files: /etc/hosts

 -- Holger Levsen <holger@debian.org>  Tue, 30 Jul 2013 11:05:32 +0200

piuparts (0.53) unstable; urgency=low

  [ Andreas Beckmann ]
  * *.py: Reindent and reformat, slowly moving towards PEP 8 style.
  * piuparts.py:
    - Do not run adequate checks on possibly disappearing packages.
    - Add --allow-database option that enables starting MySQL and PostgreSQL
      database servers in the chroot.  (Closes: #662633)
    - Relax the check for running processes if --allow-database is given.
  * distros.conf:
    - Add "candidates" key to merge multiple Packages files into one virtual
      distro.
    - Define wheezy-proposed and squeeze-proposed.
  * piupartslib/conf.py:
    - Add get_{packages,sources}_urls() that resolve "candidates".
  * piupartslib/packagesdb.py:
    - Add load_packages_urls() methods.
  * piuparts-{master-backend,slave,report}.py:
    - Switch to load_*_urls(get_*_urls()) for loading Packages/Sources files,
      adding support for arbitrarily composed virtual distros.
  * Makefile:
    - Stop installing python modules in $libdir/python2.6/dist-packages.
  * debian/control:
    - Bump Build-Depends: python (>= 2.7).
    - piuparts-slave: Add Depends: sudo.  (Closes: #710350)
  * New known problem: Packages with missing or incomplete .md5sums files.
  * piuparts-master.deb: Ship some piuparts.conf examples.
  * detect_piuparts_issues: Detect problems starting MySQL or PostgreSQL.
  * pre_install_database-server: New script to install a database server for
    packages that require one during postinst but only recommend or suggest
    (or maybe not even this) the server package to allow for remote db
    servers.
  * pre_distupgrade_zz_database-server: New script to upgrade (running)
    database servers before all other packages. This ensures the database
    server is running again before the dependent packages (that may declare
    'insufficient' dependencies on a 'local' database server) are upgraded.

  [ David Steele ]
  * Update python Requires to 2.7 (for argparse)
  * Edit piuparts_slave_* man pages for more information and format.
  * Specify the manpage doctype for AsciiDoc man sources.

  [ Holger Levsen ]
  * piuparts.1.txt, README.txt and README_pejacevic.txt: proof-read and
    cleaned up.
  * Move master-slave related documentation from README.txt to
    README_server.txt and leave a pointer in the former.
  * Rename README.txt to README_1st.txt.
  * piuparts-master.deb:
    - Ship README_server.txt.
    - Recommend devscripts and libsoap-lite-perl (for gather_bts_stats).
  * piuparts-report.py: Add a link to README_server.html.
  * master-bin/gather_bts_stats: write bts_stats.txt to master-directory.
  * conf/crontab-master: run gather_bts_stats daily.
  * master-bin/prepare_backup: backup bts_stats.txt and do not backup
    sources.txt.
  * piuparts.py: categorize adequate results using inadequate_tags,
    boring_tags, ignored_tags and unknown. Show adequate exit code if
    non-zero.
  * Add known_problems/*inadequate*.conf for all adequate tags we care about.
  * htdocs/index.tpl: Improve description about piuparts.debian.org.
    (Closes: #700848)

  [ Andrew Starr-Bochicchio ]
  * piuparts.py:
    - Move default keyring to distro defaults.  (Closes: #710346)
    - When distro defaults are explicitly specified, use the distro default
      mirrors (Closes: #710347).

 -- Holger Levsen <holger@debian.org>  Sun, 09 Jun 2013 12:57:52 +0200

piuparts (0.52) unstable; urgency=low

  [ Andreas Beckmann ]
  * piuparts.py:
    - Really disable PDiffs.  (Closes: #708241)
  * piuparts-master.in:
    - Use timeout to prevent master from getting stuck.  (Closes: #701618)
  * piuparts-slave.py:
    - Report upgrade tests involving downgrades as untestable.
    - Always pass --arch <arch> to piuparts.
  * piuparts-analyze.py:
    - Consider archived bugs, too.  (Closes: #669966)
  * piuparts-report.py:
    - Switch from python-rpy to python-rpy2.  (Closes: #705975)
    - rpy2: Use a noninteractive grDevice.
  * Makefile:
    - Switch default target from 'install' to 'build'.
  * scripts-no-usr-share-doc/post_setup_disable_usr_share_doc: New custom
    script to instruct dpkg to skip installing most files in /usr/share/doc.
    This catches maintainer scripts relying on /usr/share/doc content.
  * New bug template: postinst_uses_usr_share_doc.
  * piuparts-master.deb:
    - Switch Depends: python-rpy to Depends: python-rpy2.

  [ Holger Levsen ]
  * piuparts.py:
    - Run adequate (if installed) after installation test. New options
      --no-adequate and --fail-if-inadequate. (Closes: #703902)
    - Workaround #709372 and ignore broken symlinks found by adequate.
    - Do not print a "Guessed: debian" line on every run. It's the default
      anyway. (Closes: #703058)
  * piuparts-report:
    - Add templates for known_problems/inadequate_issue and inadequate_error.
    - Add link to the piuparts source at the top of the navigation menu on the
      left.
    - Add links to Debian QA group and jenkins.debian.net at the bottom of
      that navigation menu.
  * debian/control: Add adequate to piuparts' recommends.
  * piuparts-slave.postrm: Also remove /var/cache/piuparts/tmp on purge.
  * conf/crontab-master: Run generate_daily_report twice a day.
  * piuparts-slave.deb: Add piuparts_slave_run.8 and piuparts_slave_join.8
    manpages.

 -- Holger Levsen <holger@debian.org>  Mon, 27 May 2013 18:10:43 +0200

piuparts (0.51) unstable; urgency=low

  [ Andreas Beckmann ]
  * Mark all python code as utf-8 encoded.
  * piuparts.py:
    - In install-purge tests support installing extra packages before the
      package to be tested via --extra-old-packages.
    - Add --arch <arch> option to run the test for the requested instead of
      the default architecture.
    - Disable using PDiffs in order to save CPU instead of bandwidth to a
      local mirror/proxy.  (Closes: #708241)
  * piuparts.conf:
    - New global settings:
      + slave-count
    - Use installation-dependent defaults for known-problem-directory.
  * distros.conf:
    - Update backports setup after integration into the regular archive.
    - Enable stable security updates when installing stable backports.
    - Set testing = jessie and add jessie-proposed-updates.
  * piupartslib/conf.py:
    - Raise MissingSection if the requested section is not in piuparts.conf.
    - Improve handling of virtual distros.
  * piupartslib/packagesdb.py:
    - get_package(): Add flag resolve_virtual, disabled by default.
  * Rename piuparts-master.py to piuparts-master-backend.py
  * piuparts-master: New.
    - Wrapper shell script to simplify calling the master from the slave.
    - Get the 'master-directory' from piuparts.conf and chdir there.
    - Get the (global) 'log-file' from piuparts.conf and handle the error
      logging. No longer uses the section specific logfile name for errors.
  * Allow the master-command to be set in ~piupartsm/.ssh/authorized_keys to
    restrict ssh keys to only run piuparts-master.
  * piuparts-master-backend.py:
    - Raise CommandSyntaxError on unknown commands.
    - Add "section" command:
      + Make section selection part of the master-slave protocol.
      + Allow switching sections without reconnecting.
      + No longer accept section argument on the command line.
      + Switch the logfile after switching sections.
  * piuparts-slave.py:
    - Fix parsing 'idle' return value from master.
    - Let the piuparts-master (wrapper script) handle chdir and error logging.
    - Skip sections that don't exist in piuparts.conf and continue to run.
    - Pass the section to piuparts-master via the new "section" command
      instead of using a command line argument.
    - Keep the connection to the master open while switching sections. This
      reduces the number of ssh connections attempted while checking idle
      sections. Close the connection before processing packages, before going
      to sleep, and after communication errors.
    - Support empty master-command if the command is set in master's
      .ssh/authorized_keys file.
    - Change default basetgz name to {DISTRO}_{ARCH}.tar.gz.
  * piuparts-report.py:
    - Skip sections that don't exist in piuparts.conf.
    - "Missing" binary packages don't influence the overall test result of a
      source package. These are either udebs or for other architectures.
      (Closes: #699160)
    - Report the correct version for binary packages.
  * archive_old_logs:
    - Compress the archived logs.
  * detect_well_known_errors:
    - Skip sections that don't exist in piuparts.conf.
  * piuparts-master.deb:
    - Add Depends: xz-utils.
  * piuparts-slave.deb:
    - Restrict the ssh key added to master's authorized_keys to only run
      piuparts-master.
  * slave_run: Support starting multiple concurrent slaves.  (Closes: #678725)
  * Update and add new exceptions for buggy packages.
  * scripts-wheezy/post_setup_wheezy-fake-essential: New custom script to
    suppress some purge failures in wheezy.
  * post_{setup,distupgrade}_squeeze-backports: New custom scripts to improve
    support for squeeze-backports.
  * New known problem: Database setup failure (issue).

  [ David Steele ]
  * detect_well_known_errors:
    - Replace the bash script with an equivalent Python script.
    - Sort known error and issue packages by reverse dependency count,
      separating 'fail' from everything else.
      (Closes: #698526)
    - Add a PTS link to issue and error summary entries.
    - Replace the known_problem COMMAND with PATTERN and EXCLUDE_PATTERN,
      and replace grep shell calls with python re modules calls, for a
      10x speedup.
    - Validate field names, and only use valid known problem conf files.
    - Minor HTML syntax fix.
    - Minor template integration.

  [ Holger Levsen ]
  * piuparts.py:
    - Add to ignored_files:
      + /var/log/fontconfig.log (Closes: #703810) - Thanks to Hideki Yamane.
    - switch default Ubuntu distribution to "saucy".
  * Bump Standards-Version to 3.9.4.
  * Use /srv/piuparts.debian.org/ on piatti.debian.org as per DSA policy.
  * Provide instance configuration for pejacevic.d.o and piu-slave-bm-a.d.o.
  * Move README_piatti.txt and README_pejacevic.txt and update accordingly.
  * Provide two new helper scripts for running from git:
    update-piuparts-master-setup and update-piuparts-slave-setup, drop
    update-piuparts-setup.
  * Drop instances/forward.* files.
  * slave-bin/slave_run:
    - Run slave_cleanup before starting the slave.
  * slave-bin/detect_slave_problems: remove check limiting this script to be
    run on piatti only.
  * master-bin/prepare_backup: also backup sources.txt.

 -- Holger Levsen <holger@debian.org>  Wed, 15 May 2013 11:31:31 +0200

piuparts (0.50) unstable; urgency=low

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files:
      + /var/lib/dpkg/arch
      + /usr/lib/python2.[67]/dist-packages/python-support.pth
        broken symlinks caused by python-support (see #635493 and #385775,
        thanks David Steele)
    - Call dpkg-deb with --nocheck to allow bad version numbers.
    - Pass unqualified package names to apt-cache show for lenny support.
    - Support plain URLs or local paths as --testdebs-repo argument and
      prepend/append "deb", "file://", and "./" as needed.
    - Improve the "dirname part contains a symlink" test and report
      overwritten files owned by other packages as failures.
    - Add --proxy=URL option.
    - piuparts.deb: Add Depends: piuparts-common for using distros.conf and
      piupartslib.
    - Use distros.conf to generate mirror configuration. This enables more
      complex scenarios involving partial distributions and dist-upgrades.
    - Use apt-get -t <target-release> if set in distros.conf.
  * piuparts.conf:
    - New global settings:
      + proxy
      + slave-directory
      + known-problem-directory (for known_problem definitions)
      + backup-directory (for the master script prepare_backup)
      + PYTHONPATH (to find the python modules in non-default path setups)
      + slave-load-max
    - New per-section settings:
      + depends-sections
      + basetgz-directory
    - Obsolete settings: upgrade-test-chroot-tgz.
    - Setting tmpdir is now mandatory for master/slave operation.
  * distros.conf:
    - New configuration file to describe full distributions (e.g.  sid,
      squeeze) and partial distributions (e.g. squeeze/security,
      squeeze-backports, experimental) along with their dependencies (e.g.
      base distribution) and non-default mirrors.  (Closes: #699028)
    - Allows setting a target-release (for apt-get -t ...).  (Closes: #687995)
    - Shipped in package piuparts-common.
  * piupartslib/conf.py:
    - Add methods: get_distros(), get_start_distro().
    - Add class DistroConfig for reading distros.conf.
  * piupartslib/packagesdb.py:
    - Add Package.waiting_count() and friends, populated in calc_rrdep_count.
    - Optimize reserve() and skip unavailable candidates.
    - Add method: set_dependency_databases().
    - Lookup missing packages, states, ... in the dependency_databases.
  * piuparts-master.py:
    - Sort packages to be tested by importance, i.e. descending waiting_count.
    - Use piuparts.conf global proxy setting as http_proxy.
    - Use distros.conf to compute URLs.
    - Load depends-sections for package lookup in partial distros.
  * piuparts-slave.py:
    - Tarball recreation can be disabled by setting max-tgz-age to 0.
    - Relax package existence checks to allow distupgrading to backports.
    - Fix SIGHUP handling while recycling.
    - Flush and unreserve all sections on interrupt.
    - Add support for running piuparts under /usr/bin/timeout.
    - Check system load frequently and enter sleep mode if threshold
      (piuparts.conf global setting slave-load-max) is exceeded. Operation
      will be resumed after load drops below 'slave-load-max - 1.0'. Disabled
      by default.
    - Use piuparts.conf global proxy setting as http_proxy and pass it to
      piuparts via --proxy.
    - Use distros.conf to compute URLs.
    - Use the upgrade-test-distros setting to select between install/purge
      test (if unset) and dist-upgrade test (if there are at least 2 distros).
      Drop support for running both tests for a section.
  * piuparts-analyze.py:
    - Add support for magic "$DISTRO/None" versions.
  * piuparts-report.py:
    - Call r.dev_off() after generating a plot.  (Closes: #657799)
    - Use piuparts.conf global proxy setting as http_proxy.
    - Use distros.conf to compute URLs.
    - Generate/prepend/append a default description.
    - Load depends-sections for package lookup in partial distros.
  * Makefile:
    - Add DESTDIR support.
    - Overhaul. Add dependencies between build and install targets.
    - Add support for placeholder substitution in scripts and config.
    - Perform syntax check on *.py before installation.
  * debian/rules: Set 'prefix' and 'DESTDIR' for build and install.
  * lib/read_config.sh: Factored out the piuparts.conf reading function that
    is used by all master/slave shell scripts. Shipped in piuparts.common.
    - Add support for RFC822 line continuation (wrap + indent) and comments.
  * master-bin/slave-bin: Switch to sourcing read_config.sh.
  * conf/crontab*: Substitute @sharedir@ at build time.
  * known_problems: Install to @sharedir@/piuparts/known_problems/.
  * Replace all remaining references to $HOME/bin and ~/bin with @sharedir@.
  * prepare_backup:
    - Get paths from piuparts.conf.
    - Prepare a copy of submissions.txt, too.
  * master-bin/slave-bin: Use PYTHONPATH from piuparts.conf.
  * piuparts-slave.deb:
    - Use /var/cache/piuparts/tmp as tmpdir.
    - Use /var/cache/piuparts/basetgz as basetgz-directory.
    - Populate ~piupartss/.ssh/known_hosts with localhost's hostkey.
    - Restrict the ssh key added to master's authorized_keys to only run
      piuparts-master.
  * slave_{run,join}: Rename the screen session to "piuparts_slave_screen".
  * slave_cleanup: Use pgrep to find running piuparts-slave processes.
  * slave_{run,join}: Use screen -ls to find running screen sessions.
  * slave_join: Use 'script /dev/null' hack if needed to get a writable tty.
    This avoids running the piuparts-slave screen session as root.
  * slave_run: Get paths etc. from piuparts.conf.
  * slave_run: Ensure the tmpdir exists, this could be on tmpfs.
  * detect_leftover_processes: Move statefile to slave-directory.
  * detect_stale_mounts: Merge into detect_tmp_cruft.
  * detect_tmp_cruft: Move to slave-bin and run from slave crontab.
  * detect_slave_problems:
    - Move to slave-bin and run from slave crontab.
    - Use idle-sleep setting from piuparts.conf.
    - Move statefile to slave-directory.
  * master: Get rid of the monitor-slave directory.
  * pre_install_exceptions: Handle bootcd-ia64 installation in squeeze.
  * post_distupgrade_exceptions: Handle libdb4.8 removal in wheezy.
  * pre_remove_50_find_bad_permissions: Add some exceptions.
  * pre_remove_50_find_missing_copyright: Add some exceptions.
  * post_{setup,distupgrade}_experimental: New custom scripts to improve
    support for experimental.
  * Add several exceptions for lenny and lenny2squeeze tests.
  * New script to enable Debug::pkgPackageManager during upgrades:
    scripts-debug-packagemanager/pre_distupgrade_debug_packagemanager
  * New known problem: Packages that need to be rebuild or updated for newer
    tools, e.g. due to obsolete install-info or tex-common usage.
  * New bug template: unhandled_symlink_to_directory_conversion.
  * New bug template: installs_over_existing_symlink.

  [ Holger Levsen ]
  * Mention http://piuparts.debian.org in README.txt prominently.
  * Mention github clone in htdocs/index.tpl.

  [ David Steele ]
  * Replace the Tango icon symlinks with copies.
  * Make the Tango weather icons required for master.

 -- Holger Levsen <holger@debian.org>  Fri, 15 Mar 2013 15:36:12 -0700

piuparts (0.49) unstable; urgency=low

  [ Andreas Beckmann ]
  * Add support for dist-upgrade tests of "disappearing" packages:
    - master/report: Get candidate packages from distro in the "distro"
      setting in piuparts.conf and (target) versions to test from last distro
      entry in "upgrade-test-distros". In case a package no longer exists, use
      a pseudo-version "None".  (Closes: #656438)
    - slave: Support pseudo-version "None".
    - piuparts: Do not try to install unavailable packages after dist-upgrade.
  * piuparts.py:
    - Run custom scripts only once if dependencies are installed via a
      metapackage.
    - Rename --no-debsums option to --warn-on-debsums-errors.
    - Add --extra-repo=<sources.list line> option for adding extra
      package sources, e.g. backports, security or local repositories.
      The argument must be a valid line (including whitespace) that is added
      to sources.list verbatim. The option may be repeated to add more lines.
    - Qualify to the package names extracted from .debs with the version.
    - Add --testdebs-repo=<sources.list line> option. Provide the package(s)
      to be tested (and additional dependencies that are not yet in the
      archive) in a repository to enable dependency resolution with apt-get.
      Use for complex install and upgrade scenarios.  (Closes: #676694)
    - Add --distupgrade-to-testdebs option. During distupgrade tests override
      packages from the target distro with the packages from the testdebs
      repository. This allows doing distupgrade tests before uploading.
    - Enable upgrade tests if both --apt and --testdebs-repo are given.
  * piupartslib/conf.py:
    - Add get_final_distro() method.
    - Add optional distro argument to get_mirror() method.
  * piupartslib/packagesdb.py:
    - Speed up LogDB by fetching existing files with os.listdir().
  * piuparts-slave.py:
    - Disable X forwarding while connecting to master.
    - Move checks for package existence to test_package().
  * piuparts-analyze.py:
    - Sort bugs and try the newest bug first.
  * piuparts-report.py:
    - Fix URLs to piatti's config.
    - Hardlink the logfiles to the htdocs tree (with copy as fallback).
  * post_setup_squeeze-fake-essential: Restrict fake-essential install-info to
    the 4 packages that actually need this.
  * New custom script: pre_remove_40_find_obsolete_conffiles, report obsolete
    conffiles after package upgrades. Suggested by Michael Biebl.
  * pre_remove_50_find_missing_copyright: Skip check for packages that are not
    installed or have only config files remaining.
  * post_remove_cleanup: Cleanup dovecot certificates.
  * Add support for installing and upgrading to the multiarch ia32-libs* in
    wheezy/sid on amd64.  (Closes: #679780)
  * Merge known problem analyses excessive_output and runtime_exceeded into
    new known problem resource_violation.
  * New known problem: Leaving obsolete conffiles after upgrade.
  * New known problem: Modifying conffiles or other shipped files (issue).
  * New bug template: partial-upgrade-file-overwrite.

  [ Holger Levsen ]
  * README.txt:
    - reformat with shorter line lengths (Closes: #603873).
    - fix some typos.

 -- Holger Levsen <holger@debian.org>  Sat, 12 Jan 2013 12:12:45 +0100

piuparts (0.48) unstable; urgency=low

  [ Andreas Beckmann ]
  * piuparts.py:
    - Ignore *.dpkg-* conffile backups found in --scriptsdir directories.
    - Report attributes (for reference and current file) in case of file
      modification.
    - Report paths of installed files that contain symlinks (for better
      debugging of the problems caused by such a setup).
      ( test $(dirname $x) != $(readlink -f $(dirname $x)) )
    - Add debsums, processes, and broken-symlinks check after the first purge
      in --install-purge-install mode.
    - Add --install-recommends option, disabled by default.
    - Mark temporary directories with a .piuparts.tmpdir file.
    - Use rm -rf --one-file-system to delete chroots.
  * piuparts.conf:
    - New per section settings: expire-old-days, expire-fail-days (defaulting
      to 0 which means expiration is disabled).
    - Split and rename piuparts-cmd into piuparts-command ([global] setting
      that should include all common flags) and piuparts-flags (for additional
      section-specific flags).
    - Rename the tempdir setting to tmpdir, this will be used for the --tmpdir
      argument of piuparts, too.
  * piuparts-master.py:
    - Enable recycling before initializing the real package db.
    - Enable logging by default and set default log-file to
      $SECTION/master.log. Use "/dev/null" to disable logging.
  * piuparts-slave.py:
    - Retry sections with higher precedence more often.
    - Construct the piuparts command line from the new config options
      piuparts-command, piuparts-flags, and tmpdir.
  * piuparts-report.py:
    - Don't hardcode section names, always show all known_problem reports.
  * detect_piuparts_issues: Catch the chroot running out of space.
  * reschedule_oldest_logs: Implement logfile expiration. Delete logfiles that
    are marked for recycling and are older than expire-{old,fail}-days. These
    packages have not been retested because of some dependency problem making
    the package currently untestable. Deleting the log will cause the package
    to be moved to dependency-failed-testing or similar state.
    expire-*-days needs to be greater than reschedule-*-days to enable this.
  * slave_cleanup: Only remove directories containing a .piuparts.tmpdir file.
  * New bug template: copyright_file_missing_after_upgrade.
  * New known problem: Installing something over existing symlinks.

 -- Holger Levsen <holger@debian.org>  Fri, 30 Nov 2012 12:12:09 +0100

piuparts (0.47) unstable; urgency=low

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files/ignored_patterns:
      + /var/log/dbconfig-common/dbc.log
    - Print a final message before terminating in the panic() handler.
    - Add support for running debsums before package removal, enabled by
      default. May be disabled via --no-debsums.  (Closes: #687538)
    - Add debsums as dependency.
  * piuparts-slave.py:
    - Detect incomplete piuparts output and ensure such tests fail.
  * piuparts-report.py:
    - Rewrite find_files_with_suffix(), handle disappearing files.
  * New custom script pre_remove_50_find_missing_copyright: check for missing
    /usr/share/doc/$package/copyright files.  (Closes: #683685)
  * Rename custom script post_install_find_bad_permissions to
    pre_remove_50_find_bad_permissions to avoid early failures during upgrade
    tests that may be fixed in a later version.
  * Remove post_purge_dbconfig_cleanup custom script.
  * reschedule_oldest_logs: Refactored.
    - Fix duplicate variable name usage that sometimes prevented recycling.
    - Support a [global] auto-reschedule=no setting.
  * detect_well_known_errors: Unclassified logs may still be bugged.
  * detect_piuparts_issues: Detect incomplete logfiles.
  * New bug template: modifies_conffiles.
  * New known problem: Modifying conffiles or other shipped files.
  * New custom script post_distupgrade_hack_debsums to work around #687611
    which makes all debsum checks fail due to modification of
    /usr/share/keyrings/debian-archive-removed-keys.gpg during upgrades.

 -- Holger Levsen <holger@debian.org>  Fri, 28 Sep 2012 13:24:47 +0200

piuparts (0.46) unstable; urgency=low

  [ Holger Levsen ]
  * piuparts-report: drop in-code index.tpl stub.
  * slave-join: fix bug preventing detection that the slave is not running.
  * piuparts: call schroot with session: argument, thanks to Stephan Sürken
    for the patch. (Closes: #686360)

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to ignored_files/ignored_patterns:
      + /var/lib/cdebconf/{questions,templates}.dat-old
      + /var/lib/onioncat/
      + /var/lib/vmm/(./.*)?    (Closes: #682184)
    - Fix some leftover files and directories getting incorrectly accounted to
      the package being tested instead of the dependencies in --warn-on-others
      mode.
    - Implement --install-purge-install option: test purging with all
      dependencies still installed; re-install after purge.
    - Install the dependencies and snapshot the chroot before the
      --install-purge-install test.  Check that the chroot after purge matches
      the snapshot.  (Closes: #668713)
  * piupartslib/dependencyparser.py:
    - Package names may now have a ":any" qualification in some cases.  Extend
      the parser to recognize and discard this suffix.
  * piupartslib/packagesdb.py:
    - Implement logfile recycling mode that avoids getting a large backlog of
      untested packages due to uncoordinated log deletion.  Delay log deletion
      and give preference to packages (or versions) that have not yet been
      tested.  (Closes: #670150)
      + logfiles to be recycled should be hardlinked from pass/, fail/, ... to
        recycle/
      + recycling can be enabled if recycle/ is not empty
      + treat packages with logfile in recycle/ as initially "unknown" and
        compute state ("waiting[-for-dependency]-to-be-tested")
      + delete old logfile while reserving such a package
  * piuparts-master.py:
    - Accept and discard duplicate log submissions, preventing the slave from
      retrying infinitely.
    - Delay loading the Packages file which is only needed for "status" and
      "reserve" commands, but not for submitting logs.
    - Add "recycle" command to enter logfile recycling mode (needs to be
      issued before "status" or "reserve").
    - Remember idle state by creating stamp files.
    - Add "idle" command to check a remembered idle status before trying to
      "reserve" packages (avoid package state computation).  Idle status (i.e.
      no packages available for "reserve") will be remembered for an hour, but
      any log modification (submission, deletion, marking for recycling) will
      clear the idle status.
  * piuparts-slave.py:
    - Fix stopping the currently running test (Ctrl-C Ctrl-C).
    - Handle master communication exceptions while sending logs or reserving
      packages: skip the section but keep the slave running.
    - Flush finished logs from sections that have processing postponed due to
      precedence settings.
    - Skip connection to master if we have reserved but no submittable logs.
    - Submit finished logs after completing all reserved logs in a section.
    - Send finished logs to master if interrupted with a single Ctrl-C.
    - Try to unreserve all reserved logs after interrupt.
    - Add SIGHUP handler that triggers flushing finished logs.  Flushing (all
      sections) will be done after the current test has finished.
    - Enter logfile recycling mode if no section has packages left for regular
      processing.  Recycle logfiles until a section becomes available for
      regular processing.  If no logfiles could be recycled, retry after an
      hour.
    - Issue "idle" command before "reserve" and skip status computation and
      reserving if master is idle.
  * Simplify running piuparts from GIT.
  * Reorganize layout in the GIT repository to reduce path nesting and length.
  * Makefile:
    - Separate build and install targets.
    - Adjust for new layout, cleanup, simplify.
  * conf/piuparts.apache: Set DefaultType text/plain (for the logfiles).
  * reschedule_oldest_logs: Hardlink old logfiles to recycle/ instead of
    deleting them.  Cleanup obsolete rescheduling requests.
  * New helper script: master-bin/reclassify_bugged.
  * New custom script post_setup_forbid_home: replace /home with a file to
    prevent creating home directories there.  (Closes: #677332)
  * New custom script post_install_find_bad_permissions: look for world
    writable directories without sticky bit set.

 -- Holger Levsen <holger@debian.org>  Mon, 03 Sep 2012 15:28:04 +0200

piuparts (0.45) unstable; urgency=low

  [ Holger Levsen ]
  * Merge piatti.git into piuparts.git, so that piatti.git has become obsolete
    now. Update documentation accordingly.
  * Further split packaging into piuparts-master, piuparts-slave and
    piuparts-common binary packages (Closes: #585861) and cleanup
    dependencies.
  * Update piuparts.NEWS about master+slave packages.
  * Switch to debhelper8 packaging.
  * debian/copyright: use versioned URI of the machine-readable copyright file,
    thanks lintian.
  * Move /etc/sudoers.d/piuparts to piuparts-slave package.
  * piuparts-master: depend on tango-icon-theme and drop sunny.png and
    weather-severe-alert.png and use links instead.
  * Reviewed and merged/cherry-picked all of the following changes.

  [ David Steele ]
  * Remove debian/postinst as it was only dealing with lenny time area
    configuration files.
  * Added server configuration files for apache, sudo, and cron.
  * Use dh_install, in preparation for multiple package build.
  * Added packaging to create the piuparts-server package out of the old
    piatti directory tree (Closes: #652934).
    - Create and configure piupartss and piupartsm users.
    - Coordinate ssh keys between master and slave users.
    - Create working directory tree for each under /var/lib/piuparts
  * packagesdb.py:
    - Calculate recursive reverse dependency count, and store in PackagesDB.
    - Calculate the count of packages being blocked by a failed package.
  * piuparts-report.py:
    - Release Section object when section processing is complete.
      (Closes: #673919)
    - Display reverse dependency counts and block counts to failure summaries.
    - Sort the failed-testing and cannot-be-tested summaries by block count.
      (Closes: #674498)
    - Replace O(n^2) search in remove_old_logs() with a hash
      piuparts-report run time improved 20% on mature environment.
    - Another search fix in create_package_summaries (find_links_to_logs)
      yielding a 10x speedup for piuparts-report runs.
      (Closes: #674672)
    - Cleanup/wrap some long source lines.
    - Cleanup/wrap some long html lines.
    - Allow the html root to be changed from /
      (piuparts.conf: e.g. [global] doc-root = /piuparts/).

  [ Andreas Beckmann ]
  * piuparts.py:
    - Implement --install-remove-install option to test installation in
      config-files-remaining state.  (Closes: #359154)
    - Report leftover symlinks with target.
    - Report leftover directories with a trailing slash.
    - Allow ignore entries to specifically match directories.
    - Ignore patterns need to match the full filename, not a substring.
    - Cleanup and regroup ignore lists.
      + Remove many obsolete entries not needed for squeeze or later.
      + Group ignore entries into piuparts state, system state, package
        management, logfiles, home directories, application data, and HACKS.
    - Add to ignored_files/ignored_patterns:
      + Default system logfiles as created by syslogd in /var/log/
      + Common empty directories in /etc not removed due to dpkg bug #316521
      + cdebconf status files
      + /boot/grub/
      + /etc/X11/default-display-manager
      + /etc/aliases.db
      + /etc/apt/trusted.gpg.d/.*.gpg~
      + /etc/network/interfaces
      + /etc/news/whoami
      + /usr/share/keyrings/debian-archive-removed-keys.gpg~
      + /var/crash/
      + /var/lib/citadel/(data/.*)?
      + /var/lib/gozerbot/
      + /var/lib/nagios/                        (Closes: #668756)
      + /var/lib/openvswitch/(pki/.*)?
      + /var/spool/powerdns/                    (Closes: #531134, #531135)
    - Implement a timeout for commands being run in the chroot.
    - Set time limit to 30 minutes per command. (Closes: #654423)
    - Terminate all processes running inside the chroot before removing the
      chroot; also in case piuparts aborts due to an error.
    - Continue killing running processes as long as new processes get spawned
      in the chroot.
    - Perform chroot cleanup after receiving Ctrl-C/SIGINT, too.
    - Let Chroot register/de-register the cleanup panic handler.
    - Remove temp_tgz on error exit.
    - Remove metapackage build directory on error exit.  (Closes: #663702)
    - Don't remove eatmydata when minimizing a chroot.  (Closes: #658962)
    - Add support for version-qualified package arguments (--apt foo=1.2-3).
    - Switch fallback mirror to http://cdn.debian.net/debian.
  * piuparts.conf:
    - Defaults for all [section] settings can be set in the [global] section.
    - Change master-command to not include the section name so that it can be
      set in the [global] section.
      The section name will be given as an argument to this command.
    - Make doc-root default to "/".
    - New per section key: area (set to one of main, contrib, non-free).
    - New defaults: mirror=http://cdn.debian.net/debian, area=main.
    - Compute URLs from mirror, distro, area, arch.
    - Removed deprecated keys: known_circular_depends, packages-url,
      sources-url.
  * master/db/report: Add a new category /affected/ for failed logs where the
    bug is in a dependency, but only exposed by the package being tested.
    - In the BTS these are reported as          (Closes: #657740)
        Package: buggy-package
        Version: buggy-version
        Affects: package-under-test
        Found: package-under-test/tested-version
    - Reschedule /affected/ logs like /fail/ logs.
  * piupartslib/conf.py:
    - Add support for getting default values from a special section.
    - Add methods to get mirror, distro, area, arch from config file or
      defaults.
    - Add methods to compute URLs to Packages and Sources files.
  * piupartslib/packagesdb.py:
    - Do not consider a package as "untestable" if untestable/ contains a
      logfile from an obsolete version of that package.
    - Simplify handling of package and dependency states.
    - Do not inherit 'dependency-does-not-exist' state (which may be fixed
      in the package) but propagate it to 'dependency-cannot-be-tested'.
    - Remove 'no-dependency-from-alternatives-exists' state and use
      'dependency-does-not-exist' instead.
    - Remove 'unknown-preferred-alternative' state as it interferes with
      circular dependencies involving alternatives and virtual packages.
    - Fix state resolution of package dependencies containing alternatives,
      virtual packages and circular dependencies.
    - Remove 'circular-dependency' state.
    - Stop using static known_circular_depends.
    - Compute dependency cycles and test packages on such cycles if all
      non-circular dependencies are satisfied.
    - Consider any combination of two error states for the blocking count.
    - Always run create_subdirs() during initialization.
  * piuparts-master.py:
    - Remove known_circular_depends handling.
    - Reduce logfile verboseness: do not include received logs.
    - Always chdir to master_directory, do not rely on being run from there.
    - Record timestamps of submitted logs in submissions.txt.
  * piuparts-slave.py:
    - Randomize waiting time (between 60 and 180 seconds) if master is busy.
    - Sleep until the next section can be tried, but at least 1 minute.
    - Simplify and merge Section.setup() into Section.__init__().
    - Generate master command: use global setting and append section.
    - Test the 'dpkg' package for creating/updating a base_tgz.
    - Don't update the tarball for disabled sections.
    - Rewrite starting piuparts.
    - Rewrite stopping piuparts for more reliable cleanup.
    - Introduce Ctrl-C/SIGINT handling:
      press Ctrl-C once to exit after the current piuparts test has finished,
      press Ctrl-C again to cleanly terminate the currently running test,
      press Ctrl-C again to abort any ongoing cleanup.
    - Pass a version qualified package name (foo=1.2-3) to piuparts to ensure
      the correct package version gets tested.
    - Increase verboseness for untestable packages.
    - Remove idle.stamp functionality.
  * piuparts-report.py:
    - Remove known_circular_depends handling.
    - Exclude obsolete states from generated report.
    - Establish packagesdb working directory in Section.
    - Handle logs in /affected/ directories.
    - detect_well_known_errors: Add bug links if bugs are known.
    - New known problem: "packages have been kept back".
    - Report rdeps and blocking counts in all error state reports.
    - Fix another race with logfiles disappearing while copying.
  * piuparts-analyze.py:
    - Don't report further bugs/versions if we found a match.
    - Classify logs with bugs filed into /bugged/ or /affected/.
    - Write .bug files with links to the BTS.
  * detect_archive_issues: Only consider logs older than one day for marking
    as "untestable" to allow piuparts-analyze to handle the log first.
  * Replace all references to lenny and squeeze with squeeze and wheezy.
  * Add/update several bug reporting templates.
  * Add custom scripts to aid debugging common problems in maintainer scripts.
  * Add custom script for squeeze to ensure adduser, ucf, and install-info
    are not purged.
  * Add custom scripts to enable/perform additional cleanup procedures to
    reduce the "FAIL: Package purging left files on system" errors if
    --warn-on-leftovers-after-purge is not used.
    (Closes: #668752)
  * Ship custom scripts in the piuparts package.
  * Comment sudoers and crontabs shipped in the master/slave packages,
    requiring explicit editing after installation to activate them.
  * Bump debhelper and dpkg dependencies for using dpkg-maintscript-helper.
  * Remove obsolete /etc/piuparts/piuparts.conf from old piuparts package.
  * Ship /etc/piuparts/piuparts.conf in the piuparts-slave package.
  * Create missing home directories if the piupartsm/piupartss users remain
    from a previously purged installation.

  [ Leo Iannacone ]
  * piuparts.py: add --existing-chroot option, specify a directory as source
    for the chroot, instead of building a new one with debootstrap or
    decompressing an archived one.  (Closes: #658044)

  [ Mika Pflüger ]
  * piuparts.py: Remove obsolete functions shellquote, apt_get_knows, and
    append_to_file.

  [ Mehdi Abaakouk ]
  * piuparts.py: Add support for schroot. (Closes: #530733)

 -- Holger Levsen <holger@debian.org>  Thu, 21 Jun 2012 22:17:26 +0200

piuparts (0.44) unstable; urgency=low

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to self.ignored_patterns: /var/lib/ucf/.*
    - Increase output limit to 3 MB (for dist-upgrading daptup).
    - Do not miss Pre-Depends in --warn-on-others mode.
    - Remove packages and reinstall missing ones in one apt-get call.
    - Run 'apt-get dist-upgrade' (instead of upgrade) during chroot setup.
  * piupartslib/packagesdb.py:
    - Only consider the newest version of a package as test candidate.
      (Packages files may contain more than version of the same package.)
  * piuparts-master.py:
    - Implement simple section locking to allow concurrent master instances
      but allow only one instance per section.
  * piuparts-slave.py:
    - Do not leak the logfile file descriptor to piuparts.
    - Skip disabled sections (max-reserved = 0).
    - Do not abort if connection to master failed, just skip the section.
    - Do not abort if Packages file cannot be fetched, just skip the section.
    - Implement simple section locking to allow concurrent slave instances.
    - Sections wait before retry 15 minutes after error and one hour if idle.
    - Create idle.stamp files to remember idle sections for one hour and
      notify concurrent slaves about idle state.
    - Skip misconfigured sections that have neither 'distro' nor
      'upgrade-test-distros' in their config.  (Closes: #668863)
  * piuparts-report.py:
    - Add link to the list of untestable logs.
    - Add more known problem reports: forgotten alternatives, warnings in
      passed logs: leftover files and failed maintainer scripts.
    - Do not abort if logfiles disappear during copying.
  * Makefile: Install documentation with mode 0644 instead of 0755.

  [ Holger Levsen ]
  * piuparts-report: don't create output for disabled sections. (Bye bye
    Lenny!)
  * Bump Standards-Version to 3.9.3, no changes necessary.

 -- Holger Levsen <holger@debian.org>  Thu, 17 May 2012 14:36:53 +0200

piuparts (0.43) unstable; urgency=low

  [ Andreas Beckmann ]
  * piuparts.py:
    - Add to self.ignored_patterns: /run/.*
    - Unset DISPLAY variable before running commands in the chroot.
    - Read possibly remaining buffered output after a command terminated.
    - Run apt-cache policy on the packages to be installed.
    - Simplify keeping the reference chroot state: move tree info, selections
      and diversions into a dict, can be extended easily.
    - Fix --*end-meta documentation and actually enable these options.
    - Cleanup options and settings.
  * piupartslib/packagesdb.py:
    - Restrict circular-dependency state to packages on the circle.
  * piuparts-slave.py:
    - Fix chdir in/out of the slave dir to work with relative paths.
  * piuparts-report.py:
    - Reorder the list of known problem analyses and add a few new ones.
    - Correctly split + strip comma-separated lists.
  * piuparts-analyze.py:
    - Also consider bugs that 'affects' a package.
    - Treat bugs without 'found' version as older than anything.
  * Makefile: Support version number substitution in piuparts-*.py, too.
  * README.txt: Document piuparts.conf settings used by piatti.git scripts.

  [ Holger Levsen ]
  * piuparts.1.txt: correctly reverse the description of --save-end-meta
    and --end-meta.
  * piuparts-report.py:
    - add support for more static pages and add bug_howto.tpl, explaining how
      to file meaningful bugs piuparts-analyze understands. This page also
      links to the templates used for bug filing.
  * piuparts-slave.py: make status message more useful by including the
    section.

 -- Holger Levsen <holger@debian.org>  Sun, 22 Jan 2012 13:03:59 +0100

piuparts (0.42) unstable; urgency=low

  [ Holger Levsen ]
  * piuparts.py:
    - add to self.ignored_files: /etc/blkid.tab (Closes: #638831)
    - add to self.ignored_patterns: /var/lib/apt/lists/.*
    - apply patch by Gregor Herrmann to fix --minimize. (Closes: #648423)
  * Remove Debian.NEWS entry about source in git. (Closes: #640121)
  * piuparts.py, piuparts-report.py, ChangeLog: Expand tabs to spaces.
  * Remove whitespaces from whitespace-only lines.
  * piuparts-report:
    - create maintainer subdirs if they don't exist.
    - detect tests being terminated due to excessive output.
  * Add git to Build-Depends-Indep: as git describe is used to generate
    part of the version string for development builds.
  * Add debian/.gitignore

  [ Mika Pflüger ]
  * piuparts-analyze.py:
    - Rewrite to use python-debianbts to analyze if bugs are filed already.
    - The BTS only tracks source versions, so remove binNMU-part from
      package versions when comparing with versions from the BTS.
    - Reduce noise in the output by only printing one action/advise per
      package.
    - Fix extraction of package versions from bug reports. Thanks to
      Andreas Beckmann for catching and solving the error.
  * debian/control: Add python-apt and python-debianbts to piuparts depends.

  [ Scott Schaefer ]
  * debian/copyright: Make it compliant with DEP-5.
  * piuparts-slave.py:
    - Replace deprecated os.popen2 with subprocess.Popen. (Closes: #640646)
    - Add some more logging.
    - Kill children (hard-coded value, 45 minutes) to ensure test doesn't
      run "forever" (Closes: #640647, #387428)
  * piuparty.py:
    - Kill leftover processes (via SIGTERM, then if that fails, via SIGKILL).
      (Closes: #522918)
    - Test for incorrect diversion handling:  (Closes: #588313)
      a) Existing diversions removed/modified, and/or
      b) Installed diversions not removed by purge.
  * piupartslib/packagesdb.py: Modify several functions in PackagesDB class
    to use python 'set' type, instead of a list.  This permitted replacing
    inefficient combination of unique() function and random.shuffle() with
    python set.pop() method.  Since python prohibits storing non-hashable
    object in a set, minor modifications to piuparts-report and to
    piuparts-master required. (Closes: #640648)

  [ Andreas Beckmann ]
  * *.py: Add vim modeline.
  * piuparts.py:
    - Add unittests for misbehaving symlinks.
    - Fix resolving absolute symlinks of intermediate directory components,
      i.e. /var/run -> /run while checking /etc/motd -> /var/run/motd.
      Solves about 30000 false positives of
      'Broken symlinks: /etc/motd -> /var/run/motd'.  (Closes: #648784)
    - When running commands in the chroot, redirect stdin from /dev/null.
    - Stop using Popen.communicate() as it may run out of memory.
    - Terminate commands producing more than 2 MB of output. (Closes: #649335)
    - Create /etc/dpkg/dpkg.cfg.d/ if missing inside the chroot (e.g. on
      lenny).  (Closes: #647752)
    - Remove logrotate and its dependencies only once.
    - Only run 'apt-get update' after updating the sources.list.
    - Only run 'apt-get clean' before creating tarballs or saving meta data.
    - Do the same checks for running processes and broken symlinks in all
      tests.  (Closes: #648708)
    - Create piupart's apt config in the chroot as /etc/apt.conf.d/piuparts
      instead of /etc/apt.conf in order to allow overriding the settings from
      custom scripts by just dropping new config bits in e.g.
      /etc/apt/apt.conf.d/piuparts-foobar.
    - Integrate diversion checks with Chroot.check_result().
    - Use 'apt-get remove' to remove all packages at once with proper
      dependency ordering.  (Closes: #648162)
    - Purge all packages at once instead of doing it one-by-one.
    - Make restore_selections() reinstall missing packages.  (Closes: #648707)
    - Set more environment variables to let custom scripts know where and
      when they are being run: PIUPARTS_TEST, PIUPARTS_PHASE,
      PIUPARTS_DISTRIBUTION{,_PREV,_NEXT}.  See the README for details.
      (Closes: #589498)
    - Add missing post_install_* custom scripts to install_packages_by_name().
      (Closes: #628077)
    - Remove pre_upgrade_* custom scripts, they can be replaced with
      pre_install_* scripts that check for PIUPARTS_PHASE=upgrade.
    - Add pre_test_* custom scripts.  These are run exactly once at the
      beginning of each test (after recording the initial chroot state).
    - Allow multiple --scriptsdir options, the contents will be merged.
    - Exclude /tmp/scripts when creating a tarball.
    - Use --one-file-system when creating a tarball to exclude bindmounts etc.
    - Restore base system from temp_tgz instead of running debootstrap again.
      (Closes: #648193)
    - Do not fail upgrade/distupgrade tests for a set of packages where not
      all packages exist in the start distribution.  This happens e.g. when
      testing .changes files and packages were split/added. Only install the
      old packages that actually exist according to 'apt-cache show'.
    - Add --extra-old-packages option to intall additional old packages that
      are not in the set of new packages to be tested.  Useful for testing
      upgrades with Conflicts/Replaces relationships, e.g. in package renames
      or merges.
    - Use consistent variable names for package lists.  (Closes: #648177)
    - Compute the changes in restore_selections().
    - Check for settings.scriptsdir inside run_scripts().
    - Consistently use chroot.relative() to build filenames inside the chroot.
  * piupartslib/packagesdb.py:
    - Handle 'unknown-preferred-alternative' state correctly.
    - Add 'does-not-exist' state for dependency resolution to distinguish this
      from 'unknown' state so that the latter only indicates 'unresolvable' or
      'not yet resolved'.
    - Handle virtual packages separately from real packages.
    - Use get_package_state() internally which 'resolves' (purely) virtual
      packages by default (can be disabled).
  * piuparts-master.py:
    - Add a 'status' command that reports package counts for all states.
  * piuparts-slave.py:
    - Fix triggering tarball recreation.
    - Check tarball age regularily.
    - Log tarball creation in *.tgz.log.
    - Request and print package counts from master.
    - Reload section config every time a section is being run.
    - Add precedence attribute to allow prioritizing different sections and to
      suspend processing of low priority ones while there are packages waiting
      in more important sections.
  * piuparts-report.py:
    - state-*.html: Sort package lists by name, display state of all
      alternative dependencies and packages providing a virtual dependency.
    - source/?/*.html: Sort binary packages by name.
    - maintainer/?/*.html: Sort source packages by name.
    - Update list of error states to be highlighted.
    - Archive logs of packages that were removed from the distribution.
    - Speedup generating maintainer summaries.
  * Makefile: Use 'git describe' to get an exact stamp for development
    versions.

  [ Dave Steele ]
  * piuparts-slave.py: make Section.run() report the number of packages
    processed and use this to decide whether a slave should sleep.
    (Closes: #649967)

  [ Stefano Rivera ]
  * piuparts.py:
    - Properly install and remove logrotate.  (Closes: #638832)
    - Use eatmydata by default, add option --no-eatmydata. (This was discussed
      in #633033.)

 -- Holger Levsen <holger@debian.org>  Fri, 23 Dec 2011 10:51:28 +0100

piuparts (0.41) unstable; urgency=low

  * piupartslib/packagesdb.py: Apply patch by Scott Schaefer to also consider
    alternative depends: the algorithm used to select the "best" alternative
    is:
     1) Prefer first alternative in state "essential-required"
     2) If no "essential-required" alternatives, prefer first alternative
        in state "successfully-tested"
     3) Otherwise, prefer first alternative in state
        "waiting-to-be-tested" IF NO REMAINING alternatives are in one of the
        "unknown/fail" states
    For this two new states have been introduced:
     a) "unknown-preferred-alternative": equivalent of "unknown", this defers
        calculation of this package's state, since one or more of its
        alternative depends are "unknown" (or
        "unknown-preferred-alternative"), and no alternative is either
        "essential-required" or "successfully-tested".  The alternatives will
        be re-tested on subsequest pass.
     b) "no-dependency-from-alternatives-exists": if none of the alternatives
        can be found in the archive.
    (Closes: #526045)
  * piuparts-report.py:
    - correct a typo from the patch for #523950.
    - make_stats_graph: draw the two new states as well.
    - point to source code in git instead of svn.
  * piuparts.py:
    - use proxy settings either from apt configuration or http_proxy
      environment variable, the latter overwriting the former (if present)
      - Thanks to Scott Schaefer for the patch. (Closes: #632046)
    - new option "--no-install-purge-test" to only do upgrade tests
      - Thanks to Andreas Beckmann for the patch (Closes: #588482)
    - run dpkg with --force-unsafe-io by default and introduce new option
      "--dpkg-noforce-unsafe-io" to disable this feature. (Closes: #633033)
      Thanks to Scott once more!
    - new option: "--fail-on-broken-symlinks". Remove option "--warn-symlinks"
      as this is the default now.
  * piuparts-slave:
    - check if chroot-tgz is older than max-tgz-age (defaulting to 30 days)
      and recreate it, if it is. Keep backup and put in back in place when
      debootstrapping a new chroot-tgz fails. Retry after min-tgz-retry-delay
      seconds. Thanks to Scott Schaefer for the patch. (Closes: #632924)
    - document new configuration options max-tgz-age and min-tgz-retry-delay
      in README.txt.
    - fix bug in piuparts-slave which prevented running a single section by
      including section name as command-line argument - thanks again to Scott
      and see 632924 too.
  * debian/control:
    - require python >= 2.6.6-3~, get rid of python-support build-depends.
    - add X-Python-Version: pseudo-header
  * debian/rules: use dh_python2 instead of python-support to build the
    package
  * Makefile: build for python 2.6 and 2.7 instead of 2.5 and 2.6.
  * Source code is now stored in git.
    https://anonscm.debian.org/gitweb/?p=piuparts/piuparts.git
    git clone git+ssh://git.debian.org/git/piuparts/piuparts.git
    Thanks to Thomas Koch for setting those up and keeping history!
  * The configuration and scripts used on piatti.debian.org have also been
    moved to git, the URLs are the same, just s#piuparts#piatti#.
  * Add entry about git to NEWS.
  * Update Vcs-*-Headers in control to reflect move to git.

 -- Holger Levsen <holger@debian.org>  Wed, 24 Aug 2011 13:47:07 +0200

piuparts (0.40) unstable; urgency=low

  * piuparts.py:
    - make "natty" the default Ubuntu distribution.
    - add to self.ignored_files:
      - /var/log/bootstrap.log
  * debian/control: depend on ${python:Depends} instead of just python. Thanks
    to Jakub Wilk. (Closes: #614617)
  * *.py: do not use Python built-in function names as variable name. Thanks
    to Carl Chenet for a first patch and Scott Schaefer for the applied one.
    (Closes: #523950)
  * Bump Standards-Version to 3.9.2, no changes necessary.
  * debian/rules: add empty build-arch and build-indep to appease lintian.
  * Makefile: drop workaround for #559305 in lenny.

 -- Holger Levsen <holger@debian.org>  Sat, 25 Jun 2011 21:20:31 +0000

piuparts (0.39) unstable; urgency=low

  [ Holger Levsen ]
  * The vintage of 2010 release!
  * piuparts-report.py:
     - report packages which failed
       - due to broken maintainer scripts,
       - due to output from cron after removal,
       - due to not enough force being,
       - due to a problem with pre-depends,
       - due to files having been modified after purge,
       - due to files having disappeared after purge and
       - due to problems configuring a database.
     - only report about (un)owned files and directories and symlink issues in
       sid - that's hardcoded as it's not practical to track them anywhere else
       anyway. And at least for broken symlinks this will also stay like this
       for a long time.
     - visual improvements in the output.
     - ignore udebs and binaries from other archs too.
     - graph is generated using all the available data points.
  * piupartslib/packagesdb.py:
    - automatically break circular dependencies when there are only circular
      dependencies left, using a configurable list of circular depdencies in
      piuparts.conf (Closes: #526046)
        The list of circular depends is taken from a script written by Robert
      Lemmen available at http://debian.semistable.com/debgraph.out.html -
      obviously it would be better to merge this into piuparts directly.
        Note that the dependency resovler is still buggy, the state
      waiting-for-dependency-to-be-tested still contains some packages
      with failed depends (due to them being dependent on packages with
      circular depends). This bug has no effect other than that (so the state
      waiting-to-be-tested is calculated correctly). This bug is also no
      regression.
    - get rid of the longtime unused states "fixed" and "fix-not-yet-tested"
      (also in piuparts-master and piuparts-report).
    - forget reservations of untestable packages.
  * piuparts-slave.py:
    - fix crash when going into sleep when idle.
    - add support for only doing upgrade tests (without the basic test in the
      upgrade target distro).
    - honor mirror configuration option also for upgrade-tests.
    - also do upgrade tests if the version of a package being tested (the one
      in the upgraded distro) is not available in the distro being upgraded
      from. (This is a very short test, but a successfully one.)
    - make configuration setting "distro" to not default to any distro.
  * piuparts.py:
    - new option: --log-level to specify the verbosity of piuparts
      output. Thanks to Fabrice Coutadeur for the patch! (Closes: #567190)
    - new option: --warn-on-leftovers-after-purge to not fail if a package
      leaves files behind after purge. (Closes: #566599)
    - add to self.ignored_files:
      - /var/lib/apt/lists/partial/.delete-me-later
      - /var/log/alternatives.log (Closes: #591966)
      - /var/log/apt/history.log (Closes: #594964)
      - /usr/share/fonts/X11/misc/fonts.alias (Closes: #576321)
    - add to self.ignored_patterns:
      - /etc/init.d/.depend.*
      - /var/mail(/.*)? - this used to be just /var/mail/.*
      - /var/lib//update-rc.d(/.*)? (Closes: #605127)
    - create temporary DEBIAN directory for the piuparts-depends-dummy package
      with 0755 perms regardless of the umask of the calling shell.
      (Closes: #573904)
    - fix --do-not-verify-signatures option (Closes: #574936) - thanks to
      Cleto Martin Angelina for the patch.
    - make Chroot.diff_meta_data() special case and ignore files matching
      (/etc/rc.\.d/)[SK][0-9]{2}(.*)$ so that piuparts doesn't complain about
      initscripts renamed by insserv. Thanks to by Andreas Beckmann for the
      patch! (Closes: #586793)
    - remove logrotate and depended packages after the test. (Closes: #602409)
      This is a fix for the incomplete patch for #566597. Again, this is a
      hardcoded list. :-(
    - new custom script: pre_remove_ (Closes: #539146)
    - set environment variable PIUPARTS_OBJECTS in custom scripts to a space
      separated list of packages / changes files being tested.
    - do not call apt-get with --no-remove when installing packages.
      (Closes: #603453)
    - apply patch by Andres Mejia to fix parsing of the --force-confdef option
      and also to configure apt to use that option. Thanks, Andres.
      (Closes: #605475)
    - don't panic if package is not known by apt-get, this probably just means
      a package not yet in the archive is being tested. (Closes: #566672)
      Thanks to Cleto Martin Angelina for the patch!
    - fix parsing of the options --end-meta and --save-end-meta.
    - supply help texts for --end-meta and --save-end-meta options, also add
      comments to install_and_upgrade_between_distros() to make the code
      easier to understand and hopefully improve in future. (Closes: #560050).
    - add logging to install_and_upgrade_between_distros() to point people to
      read the functions source code if they wonder why the log (for distro
      upgrade tests) looks like it looks.
  * piuparts.1.txt:
    - update the pointer to custom-scripts.txt to point to README.txt, as
      those two files have been merged. Thanks to Gregor Hermann for
      spotting this. (Closes: #574504)
    - indicate that it's possible to check several packages or .changes files
      at once.
    - update several options descritpions.
  * README.txt
    - better documentation of custom scripts.
    - reformat to achieve consistent width.
  * Add ${misc:Depends} to Depends in debian/control.
  * Remove versioned dependencies on debootstrap as the version available
    in Etch is sufficient. Drop build-depends on dpkg-dev as it's in
    build-essential.
  * Build-depend on debhelper>=7 and use dh_prep instead of dh_clean -k, bump
    compat level to 7.
  * Bump Standards-Version to 3.9.1, no changes necessary.
  * Remove Ian Jackson from uploaders - thanks for your work, Ian!
  * Makefile: support python 2.5 and 2.6 instead of 2.4 and 2.5, adjust
    debian/control accordingly.
  * debian/preinst: update code snipplet rm_conffile() from
    https://wiki.debian.org/DpkgConffileHandling

  [ Evgeni Golov ]
  * piuparts.py:
    - Check for remaining logrotate files which produce output after the
      package was removed. (Closes: #566597)

  [ John Wright ]
  * Use debian module when available, else debian_bundle module.
    (Closes: #586443)
  * Use built-in set type, available since python-2.4.

 -- Holger Levsen <holger@debian.org>  Tue, 04 Jan 2011 14:12:30 +0100

piuparts (0.38) unstable; urgency=low

  * piuparts.py:
    - Add support for using LVM snapshots. Thanks to
      Patrick Schoenfeld for the patch. (Closes: #559449)
    - Add support for warning on broken symlinks. Thanks to Carl Chenet for
      the patch. (Closes: #440151)
    - Make --help usuable without needing to be run as root. (Closes: #547379)
    - --skip-minimize is now the default. This is because debootstrap is called
      with --variant=minbase instead of --resolv-deps now and because if a
      base.tgz or an lvm snapshot is specified, piuparts should not touch it.
      (Closes: #539142, #559048)
      Introduce a new option, --minimize, to minimize a chroot with debfoster.
      (This is the old default behaviour. In future versions the --minimize
      option might be removed again.)
    - Add two new options: --keyring to specify the keyring to use with
      debootstrap (defaults to /usr/share/keyrings/debian-archive-keyring.gpg)
      and --do-not-verify-signatures to not use --keyring with debootstrap.
      (Closes: #545907)
      In the chroots, APT::Get::AllowUnauthenticated is set accordingly in
      /etc/apt/apt.conf.
    - Add new option, --pedantic-purge-test, to tell piuparts to be pedantic
      when checking if a purged package leaves files behind. If this option is
      not set, files left in /tmp are ignored. (Closes: #528266)
    - Add new option, --dpkg-force-confdef, to make dpkg use --force-confdev,
      which lets dpkg always choose the default action when a modified conffile
      is found. This options will make piuparts ignore errors it was designed
      to report and therefore should only be used to hide problems in
      dependent packages. (Closes: #466118)
    - Add another type of custom-scripts, post_setup_, which are executed after
      the chroot was setup. (Closes: #466043)
    - Create policy-rc.d in 2nd chroot when using -b. (Closes: #466049)
      Thanks again to Patrick Schoenfeld for his help.
  * piuparts-report: report broken symlinks.
  * piuparts-slave:
    - gracefully deal with upgrade-test-distros and upgrade-test-chroot-tgz
      not being set in the configuration. Thanks to Carl Chenet and Patrick
      Schoenfeld for the patch. (Closes: #519192)
    - new default value for idle-sleep, 300 instead of 10 seconds. Also the
      slave will now only sleep if there is nothing to do for any section.
  * Makefile: workaround 559305 by calling a2x twice.
  * Update debian/NEWS.
  * Replace all references to sarge and etch with ones to lenny and squeeze.

 -- Holger Levsen <holger@debian.org>  Thu, 17 Dec 2009 14:10:27 +0000

piuparts (0.37) unstable; urgency=low

  * piuparts-report.py: report packages with update-rc.d warnings and those
    failing due to insserv errors. (Closes: #546540)
  * Fix typo in NEWS.Debian, thanks to Justin Rye for spotting it.
    (Closes: #547439)
  * piuparts.py:
    - added to self.ignored_patterns:
      - /var/cache/man(/.*)? (Closes: #550953)
      - /var/lib/insserv/run.*.log
      - /var/lib/mercurial-server(/.*)?
    - removed from self.ignored_files:
      - /var/cache/man/index.db
  * fix typo in -i option in manpage (Closes: #555202), thanks to James Vega
    for spotting it.
  * Make "lucid" the default Ubuntu distribution (Closes: #559047), thanks to
    Krzysztof Klimonda.
  * fix FTBFS by adding "-r /etc/asciidoc" to the a2x call in Makefile, thanks
    to Michael Vogt. (Closes: #559299)

 -- Holger Levsen <holger@debian.org>  Thu, 03 Dec 2009 13:25:43 +0000

piuparts (0.36) unstable; urgency=low

  [ Holger Levsen ]
  * The "For me. For you. For everybody." release.
  * Break backwards compatibility of the configuration files for master-slave-
    mode. Merge those three into one: /etc/piuparts/piuparts/piuparts.conf.
    Introduce a new global section in piuparts.conf which is shared among the
    other sections there.
  * piuparts.py:
    - add check whether scriptsdir exits, to fail gracefully if not.
    - copy scriptsdir to chroot also when doing upgrade tests.
    - added to self.ignored_files:
      - /etc/shadow and /etc/shadow- (just as /etc/passwd* and /etc/group*)
      - /var/games (see #524461)
      - /etc/apt/trusted.gpg and /etc/apt/trusted.gpg~ (just as
        /etc/apt/trustdb.gpg and other backup files)
    - added to self.ignored_patterns:
      -  /var/lib/dpkg/triggers/*
      -  /var/lib/ldap(/.*)? (see #527898)
      -  /var/backups/.*
    - modified self.ignored_patters:
      - ignore everything in /tmp, not just in /tmp/scripts (see #528266)
    - configure apt in chroots to not install recommends and suggests.
    - add support for scanning for packages in changes files, thanks to Andres
      Mejia for the patch. (Closes: #352940)
    - change some methods from using 'args' to 'package_list'. This more
      accurately represents what is being passed into these methods now.
    - add an optional parameter to panic() method to specify what exit status
      to use. Also thanks to Andres.
    - add advice how to read the logfile to the top of the logfiles produced.
    - add "FAIL: " to logging output for seven more failure types, so that it
      becomes easier to group failure causes.
    - allow piuparts to be stopped with control-C. Thanks to Carl Chenet for
      the patch. (Closes: #523958)
    - fail gracefully if piuparts is run as non-root user. Thanks to Ignace
      Mouzannar for the patch. (Closes: #538273)
  * piupartslib/packagesdb.py:
    - change the test whether a package is testable to check whether the
      package is of priority "required", and not whether it's "Essential".
    - rename status "essential-required-important" to "essential-required"
      as important packages can be tested like all the others.
    - handle binNMUs where the Source header in the Packages file includes the
      Version and the Source package name in one line.
    - fix get_packages_in_state() to only return unique packages and not also
      the provided ones as exact copies.
  * Install scripts for master-slave mode without .py extension.
  * piuparts-master.py: remove code to write statistics, that is done only in
    piuparts-report.py now.
  * piuparts-slave.py:
    - support looping trough multiple sections in piuparts.conf via new config
      value "sections". Thanks to Frank Ploss for writing this patch with me
      and helping me understand the code much better!
    - allow the user to stop the slave with control-C.
    - call piuparts with --mirror when mirror is set in piuparts.conf.
  * Re-add piuparts-reports.py which got removed/lost between 0.14 and 0.20
    without changelog entry.
  * piuparts-report.py:
    - support sections in configuration file.
    - support looping trough multiple sections in piuparts.conf via new config
      value "sections".
    - generate counts.txt (per section) with raw numbers of packages per state,
      include these stats in the debug output (so it gets included in the mails
      send by cron.)
    - introduce new setting "sources-url" for piuparts.conf.
    - generate sources.txt (per section) with a summary status per source
      package (for the PTS to display a source packages piuparts state)
    - generate html status pages for all source packages (to link from the PTS)
      with links to state explaination and available logfiles, handle udebs.
    - provide links to logfiles in statistics page.
    - provide links to source packages pages from state pages and back, as well
      as links to the dependencies state.
    - draw graphs of package states over time (if pypthon-rpy and gs are
      installed) - thanks to Thomas Viehmann and Dirk Eddelbüttel for
      inspiration and support.
    - create maintainer centric pages for each email address found in
      Maintainers or Uploaders.
    - improve layout, generate navigation for all pages.
    - use icons to provide a quick overview of a source packages status.
      (Thanks to tango.freedesktop.org for the icons!)
    - include index.tpl (if it exists) from output-directory into the
      generated index page, so one can add news to the index page without
      editing piuparts-report.py.
    - generate pages for known issues, which are detected by bash helper
      script, run by cron on piuparts.debian.org and available from
      svn/piuparts/piatti/home/piupartsm/bin/detect_well_known_errors
  * Always use alphabetic time zone abbreviation in timestamps.
  * Makefile:
    - add "~$date" to versionstring if building an unreleased version, thus
      adding dpkg-dev to build-depends.
    - split install target into install-doc, install-conf and install, to aid
      development and deployment from trunk.
  * debian/control:
    - depend on python (>>2.4), make dependency to python-debian unversioned.
    - add build-dependencies on debhelper, asciidoc and xmlto.
    - dependency gs has been renamed to ghostcript
    - remove build-dependencies on docbook2x and docbook-xml.
    - suggest python-rpy and gs to improve piuparts-report output.
    - set Homepage: to http://piuparts.debian.org
    - remove Lucas Nussbaum, Ana Guerrero, John Wright and Bill Allombert from
      uploaders - thanks for your work!
    - Replace Ians email address with one that doesn't give an errorcode when
      sending mail to it
    - bump Standards-Version to 3.8.3, no changes necessary.
  * Rewrite debian/rules from scratch using debhelper.
  * Merge README, how-to-use-piuparts.txt and custom-scripts.txt into
    README.txt, convert it to asciidoc and build pdf and html versions of it.
  * Restructure and update README.txt to reflect the configuration changes in
    master-slave mode.
  * Add debian/NEWS file.
  * Rewrite piuparts manpage in asciidoc.
  * Build and install html version of the piuparts manpage.
  * Update debian/copyright to reflect that piuparts is licenced under GPL2+.
  * Update FSF address in all files referencing the GPL.
  * Remove unused file piuparts.css.

  [ Lars Wirzenius ]
  * Removed Lars Wirzenius as uploader.

 -- Holger Levsen <holger@debian.org>  Tue, 08 Sep 2009 14:35:42 +0200

piuparts (0.35) unstable; urgency=medium

  * Fix recursive failure which occured when selinux-utils was installed but
    not enabled. Thanks to Peter De Wachter for the patch. (Closes: #519017)
  * Output path to temp directory if -k is used. (Closes: #466112)

 -- Holger Levsen <holger@debian.org>  Tue, 10 Mar 2009 00:43:22 +0100

piuparts (0.34) unstable; urgency=low

  [ Holger Levsen ]
  * Mount /selinux on systems where selinux is enabled. Thanks to Filippo
    Giunchedi for the patch! (CLoses: 507171)
  * Remove wrong advice in debian/copyright which irritated lintian.

  [ Filippo Giunchedi ]
  * Check for any output when running cron files in addition to exit code

 -- Holger Levsen <holger@debian.org>  Fri, 27 Feb 2009 12:34:31 +0100

piuparts (0.33) unstable; urgency=low

  * Added --bindmount option, thanks to Aníbal Monsalve Salaza for the patch.
    (Closes: #496186)

 -- Holger Levsen <holger@debian.org>  Sat, 08 Nov 2008 17:07:22 +0000

piuparts (0.32) unstable; urgency=low

  [ John Wright ]
  * Fix a typo in how-to-use-piuparts.txt.

  [ Holger Levsen ]
  * Replace all references to sarge and etch with etch and lenny.
    (Closes: #466111)
  * Update README to reflect that piuparts runs fine in etch.
  * Rename the post_upgrade custom script to post_distupgrade and introduce
    pre_distupgrade.
  * Bumped standards version, no changes needed.

 -- Holger Levsen <holger@debian.org>  Fri, 17 Oct 2008 10:28:14 +0000

piuparts (0.31) unstable; urgency=low

  [ Lars Wirzenius ]
  * piuparts.docbook: Added a few words of description of the tarball
    that -b expects. (Closes: 466048)

  [ Lucas Nussbaum ]
  * Added a --debfoster-options option, to allow the user to override
    debfoster's default options and test with more packages installed
    in the chroot. (Closes: #458922)
  * Mention piuparts -s in in how-to-use-piuparts.txt.
  * Finally fixes the check for broken symlinks. Thanks go to
    Tobias Grimm for the patch. (Closes: #468157, 478587)
  * Ignore /var/cache/ldconfig/aux-cache.
  * Added myself to uploaders.
  * Keep /proc mounted. Switch to calling tar directly in
    pack_into_tgz(). Minor refactorings. Thanks go to Tobias Grimm
    for the patch. (Closes: #478577)
  * Move piuparts to priority: extra, since it depends on debootstrap which
    is extra. (Closes: #477634)

  [ Luk Claes ]
  * Added -w to lsof call to suppress warnings. (Closes: #466102).

  [ Holger Levsen ]
  * Add a copyright statement to debian/copyright.
  * Add support for post_upgrade custom script.
  * Minor fixes in how-to-use-piuparts.txt.
  * piuparts.docbook: Correct the path to dtd, it's
    /usr/share/xml/docbook/schema/dtd/4.1.2/docbookx.dtd and add a
    build-dependency for docbook-xml

 -- Holger Levsen <holger@debian.org>  Sun, 11 May 2008 22:17:52 +0200

piuparts (0.30) unstable; urgency=low

  * piuparts.py:
    - Implement Chroot.create_temp_tgz_file() (since it's used in the VirtServ
      subclass)
    - Fix a typo -- chroot.create_temp_tgz() was being called instead of
      chroot.create_temp_tgz_file() (Closes: #465416)

 -- John Wright <jsw@debian.org>  Thu, 14 Feb 2008 20:32:35 -0700

piuparts (0.29) unstable; urgency=low

  [ Ana Beatriz Guerrero Lopez ]
  * Updated uploaders, remove Amaya and Alastair.

  [ Lars Wirzenius ]
  * piuparts.py: Call "apt-get update" before calling Chroot.minimize, so
    that we can find the debfoster package on Ubuntu.
  * debian/control: Fixed "Uploaders:" to have my preferred e-mail address
    (liw@iki.fi) instead of my Debian one.
  * piuparts.py: Added -D option to set Debian flavor, plus two sets of
    default settings depending on the flavor, one for Debian itself, and
    another for Ubuntu. The settings choose default mirror and distribution
    set (sid vs gutsy). This will allow an Ubuntu version of the package
    to set defaults at package building time.
  * piuparts.py: Report target of broken symlink correctly, instead of
    saying "True".
  * piuparts.py: Use lsb-release to guess the Debian flavor.
  * debian/control: Added dependency on lsb-release.
  * piuparts-master.py: Make the master write summary of total pass/fail
    packages, plus status per binary package. This is for having the
    Debian PTS and the Ubuntu developer weather report show summaries
    of piuparts results.
  * integraged changes from Ubuntu by Ian Jackson to support autopkgtest.
  * wrapped long lines in debian/control.

  [ Holger Levsen ]
  * Added myself to uploaders.
  * Added Homepage: header to debian/control and changed the homepage to be
    https://wiki.debian.org/piuparts.
  * Use Vcs-* headers in debian/control instead of XS-Vcs-*.
  * Bumped policy version to 3.7.3.
  * Updated download location in debian/copyright.

  [ John Wright ]
  * Change the --warn-on-others implementation to create a dummy metapackage
    with the needed dependencies and install it in the chroot, rather than
    using "apt-get install package package-".  The previous implementation
    had issues when the package was already installed (and especially if the
    package had essential packages in its reverse dependencies).  This has
    the pleasant side-effect of making --warn-on-others work both with and
    without --apt. (Closes: #458929)
  * Fix a bug in check_for_broken_symlinks(): the targets for the broken
    symlinks (used for logging) were being read from files on the real root
    filesystem, rather than in the chroot.

 -- Lars Wirzenius <liw@iki.fi>  Fri, 01 Feb 2008 16:38:38 +0200

piuparts (0.28) unstable; urgency=low

  * Fix an UnboundLocalError introduced in the --warn-on-others fix that would
    occur if run without the --apt option. (Closes: #443641)

 -- John Wright <jsw@debian.org>  Sat, 22 Sep 2007 23:32:17 -0600

piuparts (0.27) unstable; urgency=low

  * Add support for testing multiple distributions and architectures to
    piuparts-master.py and piuparts-slave.py.  Please see the README file,
    piuparts-master.conf.sample and piuparts-slave.conf.sample for more
    details. (Closes: #349365)
  * Fix the --warn-on-others option.  Now, dependencies are installed before
    the packages we wish to test, and an inventory is taken then, so that we
    can know which errors were caused by the packages explicitly specified on
    the command-line.  Currently, this requires --apt, and doesn't work quite
    as advertised if there are circular dependencies with the packages you wish
    to test (see the man page for more details). (Closes: #440310)
  * debian/control:
    - Update my email address in the Uploaders field

 -- John Wright <jsw@debian.org>  Sun, 16 Sep 2007 22:28:14 -0600

piuparts (0.26) unstable; urgency=low

  * Update list of ignored files. (Closes: #439592)
  * In the cron test, not executable files are not run. (Closes: #440141)

 -- Ana Beatriz Guerrero Lopez <ana@debian.org>  Fri, 31 Aug 2007 15:44:36 +0200

piuparts (0.25) unstable; urgency=low

  * Add the option to run custom scripts inside the piuparts chroot.
    Scripts are stored in a directory and give it as argument with the
    option --scriptsdir=/dir/with/the/scripts
    This feature is still experimental :)
  * Add custom-scripts.txt with information about the custom scripts.

 -- Ana Beatriz Guerrero Lopez <ana@debian.org>  Tue, 28 Aug 2007 14:39:32 +0200

piuparts (0.24) unstable; urgency=low

  * Add /var/lib/apt/extended_states to ignored_files. Thanks Anibal!
   (Closes: #434980)
  * Add quick howto about how to use piuparts under docs.
  * Add test that checks the output from the cron files left in the system
    after removing a package. This includes the option --skip-cronfiles-test,
    to allow skipping this test.

 -- Ana Beatriz Guerrero Lopez <ana@debian.org>  Mon, 20 Aug 2007 10:27:29 +0200

piuparts (0.23) unstable; urgency=low

  * Cosmetic change, now file owner and file are shown in the same line.
  * Add option --list-installed-files, that list files added/removed/modified
    to the chroot after the package's installation.  (Closes: #431821)
  * Add option --no-upgrade-test, that allows skip testing upgrade from an
    existing version in the archive. (Closes: #349933)

 -- Ana Beatriz Guerrero Lopez <ana@debian.org>  Tue, 10 Jul 2007 19:47:21 +0200

piuparts (0.22) unstable; urgency=low

  [ John Wright ]
  * debian/control:
    - Add XS-Vcs-Svn and XS-Vcs-Browser fields

  [ Ana Beatriz Guerrero Lopez ]
  * Rename piuparts.py.in back to piuparts.py.
  * Add option --skip-minimize that allows skip the minimize chroot step
    with debfoster.
  * Remove m4 substitution, and use sed instead. Drop Build-Depends on m4.
    (Closes: #431248)
  * Drop support for python 2.3 and add support for python 2.5.
  * debian/rules:
    - Remove execution of checkversion in package build, not longer needed.
  * debian/control:
    - Add myself to uploaders.
    - Add (future) piuparts website.

 -- Ana Beatriz Guerrero Lopez <ana@debian.org>  Wed, 04 Jul 2007 21:03:44 +0200

piuparts (0.21) unstable; urgency=low

  * Convert to Debian-native packaging style.  From now on, changes to piuparts
    will be tracked here.  (Closes: #389610)
  * Makefile:
    - Give docbook2x-man a --encoding=utf-8 argument.  It was failing to build.
    - Generate piuparts.py from piuparts.py.in, filling in the VERSION variable
      with the version from debian/changelog
  * debian/control:
    - Fix the name of the maintainer (we're the "piuparts developers team", not
      Lustre)
    - Correct my email address in the uploaders field
    - Add Build-Depends on m4
  * piuparts.py.in:
    - Don't call shellquote() on arguments, since we're not using the shell.
      (Closes: #386839)
    - Add a --warn-on-others option.  See the man page for details.
  * piuparts.docbook:
    - Document the --warn-on-others option.

 -- John Wright <john@movingsucks.org>  Thu, 21 Jun 2007 00:27:22 +0100

piuparts (0.20-3) unstable; urgency=low

  * New Maintainer(s): piuparts team. Closes: #390754.

 -- Alastair McKinstry <mckinstry@debian.org>  Mon, 23 Oct 2006 16:02:19 +0100

piuparts (0.20-2) unstable; urgency=low

  * Orphaning.

 -- Lars Wirzenius <liw@iki.fi>  Mon,  2 Oct 2006 23:43:00 +0300

piuparts (0.20-1) unstable; urgency=low

  * New upstream version. Fixed Debian bugs:
    - Symlink correctness checking was broken when symlinks pointed at
      symlinks. (Closes: #387796)
    - fails if a deb filename contains a "strange" char. (Closes: #386839)

 -- Lars Wirzenius <liw@iki.fi>  Fri, 22 Sep 2006 12:58:24 +0300

piuparts (0.19-1) unstable; urgency=low

  * New upstream version. No Debian bugs fixed.

 -- Lars Wirzenius <liw@iki.fi>  Fri,  8 Sep 2006 20:28:31 +0300

piuparts (0.18-1) unstable; urgency=low

  * New upstream version. No Debian bugs fixed.
  * debian/control: Updated for new Python policy.
  * debian/prerm, debian/postrm: Written. They compile/remove byte code
    files.

 -- Lars Wirzenius <liw@iki.fi>  Thu,  7 Sep 2006 20:42:03 +0300

piuparts (0.17-1) unstable; urgency=low

  * debian/control: Added dependency on lsof, since that is now used to
    check that there are no processes running inside the chroot.
  * New upstream version, fixes the following open bugs in Debian:
    - missing words in piuparts(1) (Closes: 362551)
    - default ignore pattern for papercut files added (Closes: #355401)

 -- Lars Wirzenius <liw@iki.fi>  Sun, 25 Jun 2006 19:35:19 +0300

piuparts (0.16-1) unstable; urgency=low

  * New upstream version. Fixes the following bugs reported against the
    Debian package:
    - TODO: keep track of bugs to show expected failures and unexpected
      successes (Closes: #353215)
    - It would be nice if the chroot were updated before the snapshot
      (Closes: #356678)
  * debian/control: Made the dependency on debootstrap be versioned.
    Closes: #355875.

 -- Lars Wirzenius <liw@iki.fi>  Wed, 22 Mar 2006 22:40:00 +0200

piuparts (0.15-1) unstable; urgency=low

  * New upstream version. Includes fixes for Debian bugs:
    - "Specify packages to use for testing" (Closes: #354811)
    - "Misleading documentation of -v" (Closes: #352941)

 -- Lars Wirzenius <liw@iki.fi>  Wed, 01 Mar 2006 20:53:00 +0200

piuparts (0.14-1) unstable; urgency=low

  * New upstream version. Includes fix for:
    - "piuparts should flag as an error a failed installation of a dependency"
      (Closes: #343324)

 -- Lars Wirzenius <liw@iki.fi>  Sun, 18 Dec 2005 23:22:00 +0200

piuparts (0.13-1) unstable; urgency=low

  * New upstream version.
  * debian/changelog: Minor tweaking to the description.

 -- Lars Wirzenius <liw@iki.fi>  Sat, 12 Nov 2005 00:53:04 +0200

piuparts (0.12-1) unstable; urgency=low

  * New upstream version. Fixes bug in Debian:
    - dist-upgrade to experimental does not work (now documented as a
      feature). Closes: #330749.

 -- Lars Wirzenius <liw@iki.fi>  Mon, 17 Oct 2005 21:03:12 +0300

piuparts (0.11-1) unstable; urgency=low

  * New upstream version. Fixes bugs in Debian:
    - Checks whether there are packages on the command line before creating
      a chroot. Closes: #322441.
    - apt-get configured to allow unauthenticated repositories.
      Closes: #326705.

 -- Lars Wirzenius <liw@iki.fi>  Fri, 14 Oct 2005 01:16:25 +0300

piuparts (0.10-1) unstable; urgency=low

  * New upstream version.

 -- Lars Wirzenius <liw@iki.fi>  Thu, 15 Sep 2005 23:31:30 +0300

piuparts (0.9-1) unstable; urgency=low

  * New upstream version, fixes bugs reported against Debian:
    - Upstream version number in Debian package and in upstream sources
      now match. Closes: #326058.
    - Files reported by piuparts are now associated with their packages,
      when possible. Closes: #324248.
  * debian/rules: Added "checkversion" target to make sure we no longer
    do stupid things like #326058, at least in the Debian package.

 -- Lars Wirzenius <liw@iki.fi>  Fri, 09 Sep 2005 00:34:36 +0300

piuparts (0.8-1) unstable; urgency=low

  * New upstream version, fixes bugs:
    - Example in manual page now works (Closes: #319990)
    - Temporary directories are now removed on failure (Closes: #323653)
    - Parsing /etc/apt/sources.list now better (Closes: #319989)
    - Temporary directorys are now put in $TMPDIR or /etc (Closes: #322440)
  * debian/control: Added build-depends on docbook2x. Closes: #318693
  * debian/changelog: Added note about upstream source repository.

 -- Lars Wirzenius <liw@iki.fi>  Mon, 29 Aug 2005 23:03:32 +0300

piuparts (0.7-1) unstable; urgency=low

  * New upstream version.
  * This is the first package that will be uploaded to the Debian archive.

 -- Lars Wirzenius <liw@iki.fi>  Fri, 15 Jul 2005 13:09:00 +0300

piuparts (0.6-1) unstable; urgency=low

  * First release of the Debian package.

 -- Lars Wirzenius <liw@iki.fi>  Tue,  5 Jul 2005 20:08:00 +0300
