[debhelper-devel] [debhelper] 03/06: Let dh_auto_install provide default source dir via --buildlabel

Niels Thykier nthykier at moszumanska.debian.org
Sun Jul 16 18:14:13 UTC 2017


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

nthykier pushed a commit to branch easier-multi-builds
in repository debhelper.

commit 1146eabf0b399a9d60eb38e629d230098269d58a
Author: Niels Thykier <niels at thykier.net>
Date:   Sun Jul 16 15:50:51 2017 +0000

    Let dh_auto_install provide default source dir via --buildlabel
    
    Signed-off-by: Niels Thykier <niels at thykier.net>
---
 Debian/Debhelper/Dh_Buildsystems.pm |  3 +++
 Debian/Debhelper/Dh_Lib.pm          | 16 ++++++++++++----
 dh_auto_install                     | 14 +++++++++++++-
 3 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/Debian/Debhelper/Dh_Buildsystems.pm b/Debian/Debhelper/Dh_Buildsystems.pm
index 7d4b421..cc0f5c5 100644
--- a/Debian/Debhelper/Dh_Buildsystems.pm
+++ b/Debian/Debhelper/Dh_Buildsystems.pm
@@ -178,6 +178,8 @@ sub buildsystems_init {
 	    "S=s" => \$opt_buildsys,
 	    "buildsystem=s" => \$opt_buildsys,
 
+	    'buildlabel=s' => \$dh{BUILDLABEL},
+
 	    "l" => \$opt_list,
 	    "list" => \$opt_list,
 
@@ -189,6 +191,7 @@ sub buildsystems_init {
 	Debian::Debhelper::Dh_Lib::init(%args);
 	Debian::Debhelper::Dh_Lib::set_buildflags();
 	set_parallel($max_parallel);
+	$dh{BUILDLABEL} //= 'default';
 }
 
 sub set_parallel {
diff --git a/Debian/Debhelper/Dh_Lib.pm b/Debian/Debhelper/Dh_Lib.pm
index bf94d45..7979f9b 100644
--- a/Debian/Debhelper/Dh_Lib.pm
+++ b/Debian/Debhelper/Dh_Lib.pm
@@ -643,10 +643,18 @@ sub tmpdir {
 # use, for that package.  (Usually debian/tmp)
 sub default_sourcedir {
 	my ($package) = @_;
-	my $label = package_dh_option($package, 'buildlabel');
-	if (defined($label)) {
-		return "debian/tmp-${label}";
-	}
+	my $label = package_dh_option($package, 'buildlabel') // 'default';
+	my $label_file = "debian/.debhelper/buildlabels/${label}/install-dir";
+	if (-f $label_file) {
+		my $dest_dir;
+		open(my $fd, '<', $label_file) or error("open($label_file): $!");
+		$dest_dir = <$fd>;
+		close($fd);
+		error("Internal error: No install path for ${label} !?") if not defined($dest_dir);
+		chomp($dest_dir);
+		return $dest_dir;
+	}
+	return "debian/tmp-${label}" if $label ne 'default';
 
 	return 'debian/tmp';
 }
diff --git a/dh_auto_install b/dh_auto_install
index 6b34eb1..095ef71 100755
--- a/dh_auto_install
+++ b/dh_auto_install
@@ -65,7 +65,7 @@ B<dh_auto_install> usually passes.
 
 =cut
 
-my $destdir;
+my ($destdir, $orig_dest_dir);
 
 buildsystems_init(options => {
 	"destdir=s" => \$destdir,
@@ -76,10 +76,13 @@ if (!$destdir) {
 	my @allpackages=getpackages();
 	if (@allpackages > 1) {
 		$destdir="debian/tmp";
+		$destdir="debian/tmp-$dh{BUILDLABEL}" if $dh{BUILDLABEL} ne 'default';
 	}
 	else {
 		$destdir=tmpdir($dh{MAINPACKAGE});
 	}
+} else {
+	$orig_dest_dir = $destdir;
 }
 $destdir = File::Spec->rel2abs($destdir, cwd());
 
@@ -92,6 +95,15 @@ if (compat(10)) {
 
 buildsystems_do("install", $destdir);
 
+if (defined($orig_dest_dir)) {
+	# only set this, if we are not using the default
+	my $label_dir = "debian/.debhelper/buildlabels/$dh{BUILDLABEL}";
+	install_dir($label_dir);
+	open(my $fd, '>', "${label_dir}/install-dir") or error("open(${label_dir}/install-dir): $!");
+	print {$fd} "$orig_dest_dir\n";
+	close($fd) or error("close(${label_dir}/install-dir): $!");
+}
+
 =head1 SEE ALSO
 
 L<debhelper(7)>

-- 
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