Skip to content
  • Andreas Beckmann's avatar
    Import Debian version 1.1.4 · bac36742
    Andreas Beckmann authored
    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.
    .
    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).
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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~.
    .
    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.
    .
    piuparts (0.82) unstable; urgency=medium
    .
      * Move xmlto from Build-Depends-Indep to Build-Depends.
    .
    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.
    .
    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)
    .
    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.
    .
    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.
    .
    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.
    .
    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)
    .
    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.
    .
    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)
    .
    piuparts (0.73) unstable; urgency=medium
    .
      * Add new option, --hard-link, and do *not* use it by default.
        (Closes: #841025)
    .
    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)
    .
    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.
    .
    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.
    .
    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.
    .
    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)
    .
    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.
    .
    piuparts (0.66) unstable; urgency=medium
    .
      * Add python-lzma to build-depends, as the tests need it now.
    .
    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.
    .
    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.
    .
    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.
    .
    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)
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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~.
    .
    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)
    .
    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
    .
    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).
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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)
    .
    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.
    .
    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.
    .
    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.)
    .
    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.
    .
    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.
    .
    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.
    .
    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.
    .
    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)
    .
    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.
    .
    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)
    .
    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
    .
    piuparts (0.33) unstable; urgency=low
    .
      * Added --bindmount option, thanks to Aníbal Monsalve Salaza for the patch.
        (Closes: #496186)
    .
    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.
    .
    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
    .
    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)
    .
    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.
    .
    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)
    .
    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
    .
    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)
    .
    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.
    .
    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.
    .
    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)
    .
    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.
    .
    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.
    .
    piuparts (0.20-3) unstable; urgency=low
    .
      * New Maintainer(s): piuparts team. Closes: #390754.
    .
    piuparts (0.20-2) unstable; urgency=low
    .
      * Orphaning.
    .
    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)
    .
    piuparts (0.19-1) unstable; urgency=low
    .
      * New upstream version. No Debian bugs fixed.
    .
    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.
    .
    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)
    .
    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.
    .
    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)
    .
    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)
    .
    piuparts (0.13-1) unstable; urgency=low
    .
      * New upstream version.
      * debian/changelog: Minor tweaking to the description.
    .
    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.
    .
    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.
    .
    piuparts (0.10-1) unstable; urgency=low
    .
      * New upstream version.
    .
    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.
    .
    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.
    .
    piuparts (0.7-1) unstable; urgency=low
    .
      * New upstream version.
      * This is the first package that will be uploaded to the Debian archive.
    .
    piuparts (0.6-1) unstable; urgency=low
    .
      * First release of the Debian package.
    bac36742
After you've reviewed these contribution guidelines, you'll be all set to contribute to this project.