Provided by: dh-debputy_0.1.28_all bug

NAME

       dh_debputy - build Debian binary packages using debputy

SYNOPSIS

       dh_debputy [debhelper options] [--destdir=directory] [-- params]

DESCRIPTION

       dh_debputy is a tool for integrating debputy with debhelper as an interim solution until debputy covers
       enough features to be a standalone packaging tool.

       The debputy toolstack can built any deb without requiring root or fakeroot.  It is always possible to use
       Rules-Requires-Root: no with dh_debputy/debputy (given no non-debputy parts of debian/rules or the
       upstream build system require root).

OPTIONS

       --destdir=directory
           Use  this  if  you  want  the generated .deb files to be put in a directory other than the default of
           "..".

       --plugin=name
           Have `debputy` load the given name.  The name can be a  name,  in  which  case  the  plugin  must  be
           installed  into  the proper plugin path (and in that case, you can often just have a build dependency
           on debputy-plugin-name ).

           Alternatively, the name can be a path (must contain / and should end with  .json  or  .json.in).   In
           this  case,  that  file is loaded as a plugin.  This case is useful for plugin providers to use their
           own plugin.

       -- params
           Pass params to dpkg-deb(1) when it is used to build the package.

           Restrict params to compression options as the dpkg-deb options may be emulated and  not  all  of  the
           dpkg-deb parameters are supported.

FILES

       debian/debputy.manifest
           Please see /usr/share/doc/dh-debputy/MANIFEST-FORMAT.md.gz.

           If     you     are     converting     your     first     package,    you    may    want    to    read
           /usr/share/doc/dh-debputy/GETTING-STARTED-WITH-dh-debputy.md.gz first.

           Unlike most debhelper like tools, this file is per source package rather  than  per  binary  package.
           Therefore,  you  cannot  use  debian/package.debputy.manifest  to  provide a specialized manifest for
           package.  Instead, all the needed parts should be written into the manifest itself.

ON DEB ASSEMBLY

       The dh_debputy will often use dpkg-deb for assembling the output. However, there are a  few  cases  where
       dpkg-deb  does not have the required features for 100% rootless assembly and debputy will use a different
       assembly method when needed.  Generally, this special-case only triggers with Rules-Requires-Root: no and
       when using a feature that requires root with dpkg-deb (such as static file ownership).

       If you experience, that a dh_debputy produced binary via its internal assembly method that  is  not  100%
       bit-for-bit  reproducible  with  the  equivalent  root  + dpkg-deb built deb and that is not caused by an
       inaccurate manifest in your end, please file a bug.  See the  subsection  "How  to  ensure  the  dpkg-deb
       assembly method is being used" for how you control which assembly method is being used.

       By producing exactly the same deb as dpkg-deb would have with fakeroot, we reduce the risk of bugs or bad
       behaviour during installation.

       Note  that 100% bit-for-bit reproducible is not compared to debhelper.  Packages generated by debputy may
       differ from those built by debhelper. As an example, auto-generated shell snippets for maintainer scripts
       identifies the tool that generated them and it would be wrong for debputy to identify itself as debhelper
       in this case. This in turn creates a minor difference  between  packages  generated  by  the  two  tools.
       Consider using diffoscope to compare your debhelper generated deb to your debputy generated debs.

   How to ensure the dpkg-deb assembly method is being used
       The debputy tool stack has two assembly methods: dpkg-deb and the internal debputy method.

       By default, the dpkg-deb is used. The debputy tool will only switch to its internal method when:

       -   The  package  uses  a  feature  that  requires  (fake)root when assembly via dpkg-deb. At the time of
           writing, this is only triggered by having static ownership in the deb (paths where ownership such  as
           root:tty is recorded directly in the data.tar), AND

       -   The  package  does  not  run  nor  permit  debputy to use (fake)root.  This part comes down to Rules-
           Requires-Root. When set to no,  debputy  will  automatically  fallback  to  the  internal  method  as
           necessary.

           If  you would like to avoid using root during package assembly but also do not want a custom assembly
           method, then you can set Rules-Requires-Root: debputy/deb-assembly and debputy will always use  dpkg-
           deb  for  the  assembly.   However,  depending  on your version of dpkg-dev you may run into #1036865
           <https://bugs.debian.org/1036865>.  In that case, you will have to choose between using classic  root
           (Rules-Requires-Root: binary-targets) or the internal rootless assembly method.

SEE ALSO

       debhelper(7)

       This program integrates into the debhelper suite.

AUTHOR

       Niels Thykier <niels@thykier.net>

perl v5.38.2                                       2024-04-10                                      dh_debputy(1)