debputy (0.1.4) experimental; urgency=medium

  * debputy.pm: Breaking change: The debputy dh sequence now removes the
    following debhelper tools from the sequence:

    - dh_installdirs
    - dh_install
    - dh_installdocs
    - dh_installchangelogs
    - dh_installexamples
    - dh_installman
    - dh_installcatalogs (!)
    - dh_installdebconf (!)
    - dh_installemacsen (!)
    - dh_installinfo
    - dh_installinit (!)
    - dh_installsysusers
    - dh_installsystemd (!)
    - dh_installsystemduser (!)
    - dh_installmenu (!)
    - dh_ucf (!)
    - dh_perl
    - dh_usrlocal (!)
    - dh_installwm (!)
    - dh_strip_nondeterminism (!)
    - dh_dwz (!)
    - dh_strip
    - dh_missing (!)

    At this point, basically any command *after* dh_auto_install (plus
    dh_installdirs, which runs before dh_auto_install) has been removed.
    As a consequence, the `debputy.pm` sequence no longer interacts very
    well with most debhelper sequence addons.  Basically any command
    relying on content in `debian/<pkg>` will no longer work with
    `dh-debputy`.

    Commands marked with (!) has no or almost no replacement support.
    If a package rely on these commands, odds are debputy will be
    unlikely to support that package.  Other commands will have
    support for common cases (similar to debhelper's default behavior).

  * debputy.py: Breaking change: Remove support for services, debhelper
    provided maintscripts and triggers.

  * New migration features:
    - Auto-migrate `debian/tmpfile` to `debian/tmpfiles`
    - Auto-migrate `debian/README.debian` to `debian/README.Debian`.
      (debhelper allowed both, debputy only supports the latter, which
      is the more common variant).
    - Auto-migrate `debian/doc-base.<suffix>` to
      `debian/<pkg>.<suffix>.doc-base`.  Note that debhelper and debputy
      are not aligned on the naming scheme here. Applying this migration
      causes debhelper to no longer see the doc-base files.
    - Auto-migrate common `debian/install`, `debian/docs` and
      `debian/examples` into the `installations` feature (see
      "manifest changes" below).  Some (but not 100%) dh-exec support
      provided as well.
    - Detect `debian/<foo>` files for unsupported debhelper tools or
      where no migration has been written yet and warn about their usage
      affecting the migration.
    - Migration now works with debhelper compat 13 rather than compat 14
      in most cases.  Notable exception being packages that have a
      `debian/pam`, which will still trigger a min compat of 14.

  * manifest changes:
    - Implement `installations` to replace `dh_install`, `dh_installdocs`
      and `dh_installexamples`.  Please see the `Installations` section
      in `MANIFEST-FORMAT.md` for how to use it.   Note that `debputy`
      installations work differently than debhelper when multiple
      patterns match the same path.

  * debuty plugin API: Important changes:
    - Detached paths are now less violatile. Notably, the `path`
      attribute will now always work for plugins.  The `parent_dir`
      attribute should still be avoided however. Additionally, the
      `.lookup` method will now always trigger an exception for a
      detached path (previously, it would "sometimes" trigger the
      exception depending on the path being resolved).
    - Plugins can now choose whether a Packager Provided File (PPF)
      should have name segments or have architecture specific
      segments.  Additionally, the plugin can request that
      `debian/foo` is considered a fallback for all packages for
      a given file.
    - The `BinaryPackagePath` type has been renamed to
      `VirtualPath`.

  * Improve wording in documentation and fix typos various places.
  * Remove `> /dev/null` for `systemd-tmpfiles`.
  * Add support for systemd's sysusers file.
  * Provide standard excludes for commonly unwanted things
  * Support pruning changelog files. When pruning NEWS, keep only entries listed in the dch
  * Ensure man, info pages, changelog files and Debian.NEWS files are always
    compressed.  Previously, these would only be compressed if they had a
    certain size. This change makes `debputy` match `dh_compress` better.
  * migration: Renames count as successful changes.  Previously, the migration
    tool would say it could do renames and then claim nothing could be done
    followed by not doing anything at the end.
  * Fix bug where mode was used as mtime for symlinks.
  * manifest/parser: Recognise -dbgsym packages.  The package names
    are now known and will not trigger an "unknown" package
    exception when used. However, currently no directives are allowed
    for dbgsym packages so the net result of specifying them is still
    an error.
  * Migrate to the python logging.  Along with a dependency on colorlogs,
    this means that output will have some color support. This changes means
    more "info" level messages now have basic colors.
  * util.py: Fix double quote handling when doing shell escapes.
  * debputy.py: Improve error reporting a bit.  Notably, previously
    some exceptions that should have been caught and rendered in a
    user-friendly way now are as intended.  Additionally, the debputy
    frontend now catches a common cause of exceptions (`RuntimeError`)
    and classifies them as "Unexpected exceptions" along with a note
    recommending filing a bug for debputy.
  * debputy.py: Hide unstable/internal commands.  Most of the frontend
    commands are now hidden behind an `internal-command` subcommand.
    this means that the default help output now only uses 1-2 lines on
    the internal or unstable subcommands.
  * debputy.py: Provide a `check-manifest` command to parse the manifest
    and check for obvious errors without having to build debs.
  * Do not mandate dpkg archs to be known. Previously, debputy
    would trigger an error if the manifest in the `arch-matches`
    condition listed an unknown dpkg arch.  This error has been
    removed as it is common practice to list new architectures
    long before dpkg in stable/oldstable knows the architecture.
  * Tweak the auto-generated maintscripts. Notably, indentation
    is now two spaces and applied better to avoid weird hanging
    lines. Additionally, the first line of a snippet is no longer
    accidentially merged into the condition line, which could
    cause syntax errors if the fixed line did not have
    indentation.
  * Detect and register python byte compiliation for public
    dist-packages dirs and default "package private" dirs
    similar to `dh_python3`.  This is done because `debptuy`
    cannot rely on `dh_python3` when it is self-hosting.
    Other `dh_python3` are not ported.
  * Move all of dh-debputy's files from `usr/share/debputy`
    to `usr/share/dh-debputy`. In tandem with the previous
    change, this causes debputy now to properly integrate with
    the python byte compilation system.
  * Correct the "inner" snippet order of generated maintscripts.
    All postrm and prerm snippets are supposed in reverse order
    and previously some snippets were not reordered correctly.
  * migrate-from-dh: Reduce the output to make warnings less likely
    to drown in other output.
  * migrate-from-dh: Better error reporting on failed executable
    dh config emulation.
  * migrate-from-dh: Require an explicit --apply-changes for
    migrations to performed.

 -- Niels Thykier <niels@thykier.net>  Thu, 24 Aug 2023 19:14:48 +0200

debputy (0.1.3) experimental; urgency=medium

  * debputy.pm: Breaking change: The debputy dh sequence now removes the
    following debhelper tools from the sequence:
    - dh_lintian
    - dh_bugfiles
    - dh_compress (note: hardlinks are not supported correctly)
  * Create a basic plugin API infrastructure and move some of the
    debputy into a plugin. Plugins can currently register packager
    provided files (`d/pkg.foo -> usr/.../pkg[.conf]`) and detection
    (and generation) of maintscript snippets, substvars and triggers.
    However, plugins cannot alter the contents of the data.tar.
    Additionally, the plugins are not loaded deterministically during
    builds (unclean chroot can load too many plugins), so they are not
    ready for prime time yet.
  * Fixed a bug in debputy's handling of icon-cache generation
    (dh_icons).
  * Detect kernel modules under /usr in addition to /lib.
  * debputy.py: When migrating from dh, detect use of `=>` in
    debhelper config files and report it as unsupported. The migrator
    would not generate the correct code for these lines. Currently,
    none of the debhelper tools where you can use `=>` would be migrated,
    so this is just future proofing.
  * debputy.py: Provide a `plugin` subcommand to interact with the
    plugins.  Currently, it can only list plugins and a bit of the
    content they provide.
  * all frontends: Show colorized error and warning messages similar to
    debhelper.
  * all frontends: Provide a `--version` that prints the version of
    debputy.
  * debputy.py: Detect `/usr/local` paths and abort as they are unhandled.
    Note that `dh_usrlocal` would normally be run and clean up these
    directories, so this is only an issue if you bypass `dh_usrlocal` or
    ask debputy to create content in `/usr/local`.

 -- Niels Thykier <niels@thykier.net>  Sun, 23 Jul 2023 07:52:46 +0000

debputy (0.1.2) experimental; urgency=medium

  * debputy.pm: Breaking change: The debputy dh sequence now removes the
    following debhelper tools from the sequence:
    - dh_installudev
    - dh_installgsettings
    - dh_makeshlibs
  * debputy.py: Breaking change: The manifest use `{{X}}` rather than
    `${X}` for substitution and remove support for environment variables
    in substitutions.
  * deb_packer.py: Support most of the dpkg-deb environment variables for
    compress settings (etc.).  Only known omission is thread count, which
    despite having a `--threads-max` option, `deb_packer.py` ignores the
    value in the name of compatibility.
  * deb_packer.py: Reset the `mtime` of control.tar members according
    to the SOURCE_DATE_EPOCH rules (clamping).  Previously, the `mtime`
    was unconditionally reset.  Most control.tar members are
    generated at runtime, so it only mattered when the control file
    is not generated.
  * deb_materialization.py: New internal command for materializing the
    data.tar part of the deb before assembly (or debugging). The
    command can also be used to assembling the materialized deb by
    using dpkg-deb or deb_packer.py (referred to as `debputy`).
  * debputy.py: Default to using `deb_materialization.py` to
    materialize the package and then assemble it with dpkg-deb where
    possible. However, automatically fallback to the internal assembly
    method when (fake)root is required and `Rules-Requires-Root` is
    `no`.
  * debputy.py: When using the `migrate-from-dh` subcommand, use
    `dh_assistant` to detect override targets that might cause issues
    with the migration.
  * debputy.py: Rename `show-manifest-changes` to `show-manifest-rules`
    and `--show-implicit-changes` to `--show-implicit-rules`.
  * builtin_manifest_rules.py: Correct permission for two bugreport
    builtin rules when matching a directory.  Previously, the
    directories would keep their file system mode. Now they are
    correctly normalized to 0755 as other directories would have been.
  * manifest_conditions.py: Fix a bug where the description of build
    profile conditionals where rendered poorly.
  * packages.py: Prevent assertion error when user provides a typo'ed
    package name for `-p`.

 -- Niels Thykier <niels@thykier.net>  Sun, 18 Jun 2023 14:30:41 +0000

debputy (0.1.1) experimental; urgency=medium

  * Initial release.  (Closes: #1029645)

 -- Niels Thykier <niels@thykier.net>  Sun, 05 Feb 2023 18:27:25 +0000
