From dd1f330bff72fe6ca0581297e8b38e32dd0df6e2 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Fri, 14 Sep 2012 10:40:43 -0700 Subject: [PATCH] support having the same document id in different packages in the same source --- debian/changelog | 2 ++ dh_installdocs | 35 ++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2ff9bfa..6eed10d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,8 @@ debhelper (9.20120609) UNRELEASED; urgency=low distutils installed. Closes: #683557 * dh_icons: Improve documentation. Closes: #684895 * Improve -X documentation. Closes: #686696 + * Support installing multiple doc-base files which use the same doc-id. + (Closes: #525821) -- Joey Hess Thu, 05 Jul 2012 08:51:07 -0600 diff --git a/dh_installdocs b/dh_installdocs index 104b796..bb09ee3 100755 --- a/dh_installdocs +++ b/dh_installdocs @@ -54,12 +54,17 @@ and F files will be installed as F in non-native packages. Installed as doc-base control files. Note that the doc-id will be determined from the B entry in the doc-base control file in -question. +question. In the event that multiple doc-base files 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. =item debian/I.doc-base.* -If your package needs to register more than one document, you need multiple -doc-base files, and can name them like this. +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. =back @@ -298,9 +303,29 @@ foreach my $package (@{$dh{DOPACKAGES}}) { doit("install","-g",0,"-o",0,"-d","$tmp/usr/share/doc-base/"); } } + # check for duplicate document ids + my %used_doc_ids; + for my $fn (keys %doc_ids) { + $used_doc_ids{$doc_ids{$fn}}++; + } foreach my $fn (keys %doc_ids) { - doit("install","-g",0,"-o",0,"-m644","-p","debian/$fn", - "$tmp/usr/share/doc-base/$doc_ids{$fn}"); + # if this document ID is duplicated, we will install + # to usr/share/doc-base/packagename instead of + # usr/share/doc-base/doc_id. To allow for multiple + # conflicting doc-bases in a single package, we will + # install to usr/share/doc-base/packagename-extrabits + # if the doc-base file is + # packagename.doc-base.extrabits + if ($used_doc_ids{$doc_ids{$fn}}>1) { + my $fn_no_docbase = $fn; + $fn_no_docbase =~ s/\.doc-base(?:\.(.*))?/ + if (defined $1 and length $1) {"-$1"} else {''}/xe; + doit("install","-g",0,"-o",0,"-m644","-p","debian/$fn", + "$tmp/usr/share/doc-base/$fn_no_docbase"); + } else { + doit("install","-g",0,"-o",0,"-m644","-p","debian/$fn", + "$tmp/usr/share/doc-base/$doc_ids{$fn}"); + } } } -- 2.39.2