[debhelper-devel] [debhelper] 02/03: dh_gencontrol: Implement guess_multiarch logic for arch:any packages

Niels Thykier nthykier at moszumanska.debian.org
Thu Apr 6 15:16:36 UTC 2017


This is an automated email from the git hooks/post-receive script.

nthykier pushed a commit to branch guess-ma-prototype
in repository debhelper.

commit 5fc69a394347b9d038cea00b385dd05fba024d5a
Author: Niels Thykier <niels at thykier.net>
Date:   Thu Apr 6 15:13:31 2017 +0000

    dh_gencontrol: Implement guess_multiarch logic for arch:any packages
    
    Signed-off-by: Niels Thykier <niels at thykier.net>
---
 dh_gencontrol | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 50 insertions(+), 3 deletions(-)

diff --git a/dh_gencontrol b/dh_gencontrol
index 741af67..ef500a4 100755
--- a/dh_gencontrol
+++ b/dh_gencontrol
@@ -54,7 +54,6 @@ init(options => {
 	"dpkg-gencontrol-params=s", => \$dh{U_PARAMS},
 });
 
-
 sub guess_multiarch {
 	my ($package) = @_;
 
@@ -94,6 +93,55 @@ sub guess_multiarch {
 		# No maintainer scripts. No dependencies.
 		return 'foreign';
 	} else {
+		my $ma_dir = dpkg_architecture_value('DEB_HOST_MULTIARCH');
+		my $ma_guess = 'same';
+		my @MA_OK_USR_SHARE_DOC_FILES = qw(
+			AUTHORS AUTHORS.gz BUGS BUGS.gz CREDITS CREDITS.gz
+			buildinfo_$arch.gz changelog.gz changelog.Debian.gz
+			changelog.Debian.$arch.gz copyright LGPL_EXCEPTION.txt
+			NEWS NEWS.gz NEWS.Debian NEWS.Debian.gz README README.gz
+			README.markdown README.markdown.gz README.md README.md.gz
+			README.txt README.txt.gz THANKS THANKS.gz TODO TODO.gz
+			TODO.Debian TODO.Debian.gz
+		);
+		my %MA_OK_PATHS = (
+			'DEBIAN' => 'prune',
+			'usr' => 'continue',
+			'usr/include' => 'continue',
+			"usr/include/$ma_dir" => 'prune',
+			'usr/lib' => 'continue',
+			"usr/lib/$ma_dir" => 'prune',
+			'usr/lib/debug' => 'continue',
+			'usr/lib/debug/lib' => 'continue',
+			"usr/lib/debug/lib/$ma_dir" => 'prune',
+			'usr/lib/debug/usr' => 'continue',
+			'usr/lib/debug/usr/lib' => 'continue',
+			"usr/lib/debug/usr/lib/$ma_dir" => 'prune',
+			'usr/lib/debug/.build-id' => 'prune',
+			'usr/share' => 'continue',
+			'usr/share/doc' => 'continue',
+			"usr/share/doc/${package}" => 'continue',
+			"usr/share/doc/${package}" => 'continue',
+			'usr/share/lintian' => 'continue',
+			'usr/share/lintian/overrides' => 'continue',
+			"usr/share/lintian/overrides/${package}" => 'continue',
+		);
+		for my $file (@MA_OK_USR_SHARE_DOC_FILES) {
+			$MA_OK_PATHS{"usr/share/doc/${package}/$file"} = 'continue';
+		}
+		find({
+			no_chdir => 1,
+			wanted => sub {
+				s@${tmp}/?@@g;
+				s@/+$@@;
+				return if $_ eq q{};
+				my $verdict = $MA_OK_PATHS{$_} // 'bail';
+				verbose_print("Path $_: ${verdict}");
+				return if $verdict eq 'continue';
+				$File::Find::prune = 1;
+				$ma_guess = undef if $verdict ne 'prune';
+			},
+		}, $tmp);
 		# traverse "$tmpdir"
 		# files that are ok:
 		# * /DEBIAN/*
@@ -108,8 +156,7 @@ sub guess_multiarch {
 		#     TODO.Debian TODO.Debian.gz
 		# * /usr/share/lintian/overrides/$package
 		# * /usr/lib/debug/.build-id/*
-		return; # until the above is implemented
-		return "same";
+		return $ma_guess ;
 	}
 	return;
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debhelper/debhelper.git




More information about the debhelper-devel mailing list