Your message dated Tue, 17 Aug 2021 16:49:05 +0000
with message-id <[email protected]>
and subject line Bug#980903: fixed in debhelper 13.4
has caused the Debian Bug report #980903,
regarding debhelper: doc-base doc-id deduplication does not work as documented
with multiple "dh_installdocs -p<pkg>" calls; causes
/usr/share/doc-base/<doc-id> to be installed multiple times
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
980903: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=980903
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: debhelper
Version: 13.3.1
Severity: serious
Justification: Causes file conflicts within binary packages of the same source
package
Control: block 961757 by -1
While trying to solve https://bugs.debian.org/961757 ("Please install
the FAQ") in zsh, I ran into the following IMHO severe issue reported by
lintian at "warning level":
W: zsh source: binaries-have-file-conflict zsh-common zsh-doc
usr/share/doc-base/zsh-faq
Scenario: I have two documents which I want to register with doc-base:
the Zsh Manual and the Zsh FAQ. Both are available in different file
formats. The FAQ is split over two binary packages (plain text in
zsh-common, HTML in zsh-doc) and I tried to use this technique described
in dh_installdocs man page:
debian/package.doc-base.*
If your package needs to register more than one document, you
need multiple doc-base files, and can name them like this. In
the event that multiple doc-base files of this style in a
single source package share the same doc-id, they will be
installed to usr/share/doc-base/package-* instead of
usr/share/doc-base/doc-id.
But this deduplication does not happen with zsh as the lintian warning
cited above shows.
I tried different file name combinations. Initially I had:
$ find debian -name '*doc-base*' | xargs fgrep Document:
debian/zsh-common.doc-base.faq:Document: zsh-faq
debian/zsh-doc.doc-base.faq:Document: zsh-faq
debian/zsh-doc.doc-base.manual:Document: zsh
Since there's only one document to register with in zsh-common, I tried
to use zsh-common.doc-base instead of zsh-common.doc-base.faq:
$ find debian -name '*doc-base*' | xargs fgrep Document:
debian/zsh-common.doc-base:Document: zsh-faq
debian/zsh-doc.doc-base.faq:Document: zsh-faq
debian/zsh-doc.doc-base.manual:Document: zsh
In both cases, there was indeed one file twice in the built binary
packages, as expected with different size:
$ debc | fgrep zsh-faq
-rw-r--r-- root/root 504 2021-01-24 00:45 ./usr/share/doc-base/zsh-faq
-rw-r--r-- root/root 519 2021-01-24 00:45 ./usr/share/doc-base/zsh-faq
After running the build with DH_VERBOSE=1, I found the reason: zsh's
debian/rules calls dh_installdocs multiple times with the -p<package>
option due to different options:
override_dh_installdocs-indep:
dh_installdocs -pzsh-doc --link-doc=zsh-common
--doc-main-package=zsh-common
dh_installdocs -pzsh-common
But the documented deduplication only happens within a single
dh_installdocs call and is not spread over multiple calls.
So IMHO the value of %used_doc_ids needs to be cached somewhere under
debian/.debhelper/ or similar and if that cache file exists, it needs to
be read upon every dh_installdocs invocation.
Setting severity to RC as I think that debhelper should not be released
in bullseye with this issue being present, except if (worst case)
documented in dh_installdocs(1) as exception or (obviously) if fixed. (I
think being one of the top 5 committers of debhelper, I still can claim
that this is the maintainer's opinion, even though I haven't really
committed something for a few years and still have way less commits than
Niels has. I also intend to have a look into a solution, but if Niels is
quicker, he's of course free to fix it first. Hints are also
appreciated. ;-)
P.S.: The zsh package triggering this issue can be found in git in the
install-faq-961757 branch since I didn't want to commit this to the
normal packaging branch (called "debian" in this repo):
https://salsa.debian.org/debian/zsh/-/tree/install-faq-961757
P.P.S.: According to "git blame" this bug is in there since that feature
(see #525821) was added in debhelper 9.20130504. I quite surprised
that nobody else seems to have ran into it so far.
-- System Information:
Debian Release: bullseye/sid
APT prefers unstable
APT policy: (990, 'unstable'), (600, 'testing'), (500, 'unstable-debug'),
(500, 'buildd-unstable'), (110, 'experimental'), (1, 'experimental-debug'), (1,
'buildd-experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.10.0-1-amd64 (SMP w/4 CPU threads)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)
LSM: AppArmor: enabled
Versions of packages debhelper depends on:
ii autotools-dev 20180224.1+nmu1
ii dh-autoreconf 19
ii dh-strip-nondeterminism 1.10.0-1
ii dpkg 1.20.7.1
ii dpkg-dev 1.20.7.1
ii dwz 0.13+20210118-1
ii file 1:5.39-3
ii libdebhelper-perl 13.3.1
ii libdpkg-perl 1.20.7.1
ii man-db 2.9.3-2
ii perl 5.32.0-6
ii po-debconf 1.0.21+nmu1
debhelper recommends no packages.
Versions of packages debhelper suggests:
ii dh-make 2.202003
-- no debconf information
--- End Message ---
--- Begin Message ---
Source: debhelper
Source-Version: 13.4
Done: Niels Thykier <[email protected]>
We believe that the bug you reported is fixed in the latest version of
debhelper, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Niels Thykier <[email protected]> (supplier of updated debhelper package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.8
Date: Tue, 17 Aug 2021 16:32:34 +0000
Source: debhelper
Architecture: source
Version: 13.4
Distribution: unstable
Urgency: medium
Maintainer: Debhelper Maintainers <[email protected]>
Changed-By: Niels Thykier <[email protected]>
Closes: 908845 979401 980903 981106 983566 986329 987989 988973 989155
Changes:
debhelper (13.4) unstable; urgency=medium
.
[ Dimitri John Ledkov ]
* dh_dwz: run in parallel across packages. (Closes: !47)
.
[ Andrej Shadura ]
* Dh_Buildsystems.pm: Add bmake and mkcmake as third-party
build systems. (Closes: !46)
.
[ Guillem Jover ]
* Dh_Buildsystems.pm: Add golang as a third-party build
system. (Closes: #981106)
.
[ Niels Thykier ]
* autoscripts/*: Add support for DPKG_ROOT in systemd, tmpusers,
sysusers and init related snippets. Based on an initial patch
from Helmut Grohne. (Closes: #983566)
* autoscripts/*: Reorder conditions in some scripts to avoid
doing a redundant stat call when a script parameter can decide
to skip it.
* dh_gconf: Remove the command as it does nothing.
(Closes: #908845)
* doc/TODO: Remove reference to dh_gconf.
* root_sequence.pm: Remove dh_gconf from root sequence and declare
it as obsolete (causing errors from compat 14 if still referenced
in hook targets).
* man/po4a/po4a.cfg: Remove dh_gconf from translations.
* AddonAPI.pm: The declare_command_obsolete command now accepts an
"$error_compat" parameter to enable addons to choose which compat
level that will trigger an error (though it must be minimum 13).
* doc/PROGRAMMING: Update docs to reflect API change.
* debhelper.pod: Document that referencing dh_gconf in hook targets
will cause an error in compat 14.
* dh_fixperms: Correct permissions of files beneath usr/libexec to
be executable. (Closes: #979401)
* dh_installtmpfiles: Only register tmpfiles ending with ".conf" as
tmpfiles in /usr/lib/tmpfiles.d and /etc/tmpfiles.d. This ensures
that dh_installtmpfiles gracefully copes with e.g. README files
provided by systemd upstream. (Closes: #986329)
* dh_installsystemd: Ditto (but only relevant in compat 12 or
earlier)
* cmake.pm: Pass -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF to cmake in
addition to -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON as the
former is intended to replace the latter. Thanks to Raul Tambre
for reporting the issue. (Closes: #988973)
* Dh_Lib.pm: Bump version requirement to v5.28 to reflect the actual
requirements (the code was using v5.28 features). Thanks to
Sérgio Basto for reporting the issue.
* dh_missing: Ditto.
* autoscripts/postinst-init,autoscripts/postinst-systemd-start: Use
"restart" instead of "start" when starting the services. This
ensures a smooth transition from --restart-after-upgrade to
--no-restart-after-upgrade in dh_installinit and dh_installsystemd.
Thanks to Ryan Tandy for reporting the issue.
(Closes: #989155)
* dh_installsystemd: Remove usage of autoscripts/postinst-systemd-restart
* dh_installinit: Remove usage of autoscripts/postinst-init-restart
* autoscripts/autoscripts/postinst-systemd-restart: Removed.
* autoscripts/postinst-init-restart: Removed
* dh_installsystemd: Prefer /usr/lib/systemd/ to /lib/systemd.
(Closes: #987989)
* dh_systemd_enable: Ditto.
* dh_systemd_start: Ditto.
* dh_installinit: Ditto.
* dh_installsystemd: Merge /lib/systemd into /usr/lib/systemd if both
are present in the package staging directory (prefering the latter
in case of conflicts). (Closes: #987989)
* dh_systemd_enable: Ditto.
.
[ Dominic Hargreaves ]
* perl_build.pm,perl_makemaker.pm: Make debhelper use the same perl
as it runs under (via Perl's $^X variable) when invoking the
upstream build system. (Closes: !40, #966396)
.
[ Axel Beckert ]
* Always generate unique doc-base file names based on package name and
document ID. (Closes: #980903)
Checksums-Sha1:
3bc75e1b09e1bbc377dc1642681e779c759148d0 1781 debhelper_13.4.dsc
6d77b2a118dbb0817c6a7dffb981b8b820367f2a 556308 debhelper_13.4.tar.xz
7e6b3982dbcbc7fe837aa19c1ceaff73c6667d70 4981 debhelper_13.4_source.buildinfo
Checksums-Sha256:
fccb5935bc6e79cef8fecaf7f90de227f796334c2a05d2dc462bc715366ecc88 1781
debhelper_13.4.dsc
668d8d16e788f3900d8356dbb3c1eab34ccf45cafb5ecb8a6ff5a71b804661ce 556308
debhelper_13.4.tar.xz
9a7b2ebcc76f4d5399505c54b32582a22ff12d36eedab633ce00d14a34646d40 4981
debhelper_13.4_source.buildinfo
Files:
221f553d4f4b9c374ae9e98efeb3b008 1781 devel optional debhelper_13.4.dsc
9f9414556d1ff4b5b08725f2f6df8338 556308 devel optional debhelper_13.4.tar.xz
eba2add6f68dc338700f512f2b8b8d53 4981 devel optional
debhelper_13.4_source.buildinfo
-----BEGIN PGP SIGNATURE-----
iQJGBAEBCgAwFiEE8f9dDX4ALfD+VfsMplt42+Z8eqwFAmEb5bUSHG5pZWxzQHRo
eWtpZXIubmV0AAoJEKZbeNvmfHqsfWMP/je+aZ9b56K3yT7zlu5RnEeAAVClOp/8
xtu3QqYx3Ap00yjbX97TxFNCLdZ2z7J6hoKoQg3iTm6bOvKN7kM4IM8R4ywdYmY6
3ebfKkZ5T+9EV2Dmxkqu/l2bOTGy7hhxUYrkmkAFji2I0vSncNTkyb6JOeR2Wa9r
ZD/5HfrC3aj0jDZfQmHxUdDiQKzmpa7GOxjH2t+uAJEJd61wbeErWOe1ALvpTjgl
FdzsIuZIQrUR3EM+uwd3397ZByJtxLI5O10E/GH48jJebzbBvNp+dRCCifqQyY7d
fpYaRroqhKSZ7vIgvDSLuqtC38z9cKOkldUjN6W2M7ddjcsueBRGuG7UcIfbDhz8
cGLJOWmOwdV9v1ZNW7/nDtRCOLcxaRs7VHEL1SNc4AJHjMJnU/l0AVeEbpnk82Bu
W3e4UGd6qaUQvJ8ibrnsJE6oRteXsXjs9WItKLC++WeP4bFOL4MesF0e4Cpx3xZg
+DGfkDib8oqMCbkPV6XJd8UI/sX8QWEsYinJH4+82zTLY0HBTgtuAEi0gKD0bGty
HkpVoGpIN/iOkqNEuypX09Ek3KkprIJFjs19AFea23VPCljNBU41pDNxLSp9nFyA
Cux3sVO/p3ysmcCm/mVqB1T7C7aGCJJ+BjywVcL2vvmDx5j80UyVwu0D0QVtXxi1
biXVFfWgqzBg
=qP2Q
-----END PGP SIGNATURE-----
--- End Message ---