[debhelper-devel] Bug#747141: debhelper: "dh_installdocs --link-doc" breaks binNMUs

Bernhard R. Link brlink at debian.org
Sat Nov 8 23:22:13 UTC 2014


I guess the easiest thing to do is simply to warn and in future compat
levels to error out with something like:

diff --git a/dh_installdocs b/dh_installdocs
index 3eefcdf..4ccd373 100755
--- a/dh_installdocs
+++ b/dh_installdocs
@@ -166,6 +166,14 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
 	my $link_doc=($dh{LINK_DOC} && $dh{LINK_DOC} ne $package);
 
 	if ($link_doc) {
+		# TODO: does this need getpackages to be called first?
+		if (package_arch($package) ne package_arch($dh{LINK_DOC})) {
+			if (compat(9)) {
+				warning("WARNING: --link-doc between architecture all and not all packages breaks binNMUs");
+			} else {
+				error("--link-doc not allowed between ${package} and $dh{LINK_DOC} (one is all and the other not)");
+			}
+		}
 		# Make sure that the parent directory exists.
 		if (! -d "$tmp/usr/share/doc" && ! -l "$tmp/usr/share/doc") {
 			doit("install","-g",0,"-o",0,"-d","$tmp/usr/share/doc");


Everything additional looks like it would have or cause quite some
problems:

- erroring out now breaks even the normal non-binNMU cases
- replacing the dependency with another version in case all->non-all
  link is not possible.
- replacing the dependency with another version in case non-all->all
  link gets complicated by the possibility of having different versions
  for different packages. (and then results in a package nowhere having
  the changelog for the binNMU, so many complications and special cases
  for a not-really-solution).
- ignoring --link-doc if the packages have different arch:all-ness might
  also have some nasty side-effects. And doing that only if there in an
  bin-NMU case would be quite suprising and likely not that much better
  than now.
- aborting with an error in case there is a broken --link-doc and there
  is an binNMU currently happening has the problem of detecting that the
  dependency is actually affected (due to binary packages maybe having
  differing versions) and could perhaps break some binNMU that by some
  other hard to forsee factors perhaps would not create a broken
  package.

Of those at most erroring out in case of binNMU that is considered to
create uninstallable packages seems worth considering to me, and making
that good enough to not create new problems looks hard.


	Bernhard R. Link
-- 
F8AC 04D5 0B9B 064B 3383  C3DA AFFC 96D1 151D FFDC




More information about the debhelper-devel mailing list