Hello,

On antradienis 18 Rugpjūtis 2009 23:17:45 Joey Hess wrote:
> أحمد المحمودي wrote:
> > On Mon, Aug 17, 2009 at 03:13:18PM -0400, Joey Hess wrote:
> > > So I don't think that making dh_auto_install behave as you request
> > > is a good idea, because having it install directly into
> > > debian/<package> would eliminate the ability to handle any of those
> > > three cases via dh_install configuration.
> >
> > ---end quoted text---
> >
> >   The patch that I have submitted would not eliminate the ability to
> >   handle the three cases you mentioned.
>
> Using the -p flag would eliminate the ability to handle any of the cases
> I mentioned, since it bypasses dh_install.

Rather than using -p option for this purpose (which would be wrong as -p has a 
global different meaning), dh_auto_install should have --destdir option which 
would allow to override dh_auto_install automatic destdir selection. Here it 
is a least one use case for this option.

If there is only one binary package, dh_auto_install installs to 
debian/package by default. However, what if I need to exclude several files? I 
could override dh_(auto)_install and rm them manually but this is error prone 
and not a very elegant solution in my opinion. I would rather override 
dh_auto_install and do dh_auto_install --destdir=debian/tmp and later exclude 
those unwanted files via .install file.

The patch is attached. Please note, there already is --destdir option in 
dh_builddeb with different meaning hence `dh --destdir` will not work.

-- 
Modestas Vainius <modes...@vainius.eu>
From: Modestas Vainius <modes...@vainius.eu>
Subject: [PATCH] Support --destdir option in dh_auto_install

This patch adds --destdir option to dh_auto_install which allows to override
destdir auto-selection. This basically closes #538201 since the same requested
behaviour can be achieved but in a more clean way.

Signed-off-by: Modestas Vainius <modes...@vainius.eu>

---
 dh_auto_install |   40 +++++++++++++++++++++++++++-------------
 1 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/dh_auto_install b/dh_auto_install
index b57db83..b4a355f 100755
--- a/dh_auto_install
+++ b/dh_auto_install
@@ -9,6 +9,7 @@ dh_auto_install - automatically runs make install or similar
 use strict;
 use Debian::Debhelper::Dh_Lib;
 use Debian::Debhelper::Dh_Buildsystems;
+use File::Spec;
 use Cwd;
 
 =head1 SYNOPSIS
@@ -25,10 +26,11 @@ if the environment variable is set). If there is a setup.py or Build.PL,
 it is used. Note that the Ant build system does not support installation,
 so dh_auto_install will not install files built using Ant.
 
-The files are installed into debian/<package>/ if there is only one binary
-package. In the multiple binary package case, the files are instead
-installed into debian/tmp/, and should be moved from there to the
-appropriate package build directory using L<dh_install(1)>.
+Unless --destdir option is specified, the files are installed into
+debian/<package>/ if there is only one binary package. In the multiple binary
+package case, the files are instead installed into debian/tmp/, and should be
+moved from there to the appropriate package build directory using
+L<dh_install(1)>.
 
 DESTDIR is used to tell make where to install the files. 
 If the Makefile was generated by MakeMaker from a Makefile.PL, it will
@@ -45,6 +47,12 @@ system selection and control options.
 
 =over 4
 
+=item B<--destdir=>I<directory>
+
+Install files into the specified I<directory>. If this option is not specified,
+destination directory is determined automatically as described in the
+L</DESCRIPTION> section.
+
 =item B<--> I<params>
 
 Pass "params" to the program that is run. These can be used to supplement
@@ -54,17 +62,23 @@ or override the any standard parameters that dh_auto_install passes.
 
 =cut
 
-buildsystems_init();
-
 my $destdir;
-my @allpackages=getpackages();
-if (@allpackages > 1) {
-	$destdir="debian/tmp";
-}
-else {
-	$destdir=tmpdir($dh{MAINPACKAGE});
+
+buildsystems_init(options => {
+	"destdir=s" => \$destdir,
+});
+
+# If destdir is not specified, determine it automatically
+if (!$destdir) {
+	my @allpackages=getpackages();
+	if (@allpackages > 1) {
+		$destdir="debian/tmp";
+	}
+	else {
+		$destdir=tmpdir($dh{MAINPACKAGE});
+	}
 }
-$destdir=cwd()."/".$destdir;
+$destdir = File::Spec->rel2abs($destdir, Cwd::cwd());
 
 buildsystems_do("install", $destdir);
 
-- 
tg: (aaa7cd5..) patch/dh_auto_install_destdir (depends on: master)

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to