=over 4
-=item B<--autodest>
-
-Guess as the destination directory to install things to. If this is
-specified, you should not list destination directories in
-debian/package.install files or on the command line. Instead, dh_install
-will guess as follows:
-
-Strip off debian/tmp (or the sourcedir if one is given) from the front of
-the filename, if it is present, and install into the dirname of the
-filename. So if the filename is debian/tmp/usr/bin, then that directory
-will be copied to debian/package/usr/. If the filename is
-debian/tmp/etc/passwd, it will be copied to debian/package/etc/.
-
-Note that if you list exactly one filename or wildcard-pattern on a line by
-itself in a
-debian/package.install file, with no explicit destination, then dh_install
-will automatically guess the destination even if this flag is not set.
-
-=item B<--fail-missing>
-
-This option is like --list-missing, except if a file was missed, it will
-not only list the missing files, but also fail with a nonzero exit code.
-
=item B<--list-missing>
This option makes dh_install keep track of the files it installs, and then at
Note that files that are excluded from being moved via the -X option are not
warned about.
-=item B<--sourcedir=dir>
+=item B<--fail-missing>
-Makes all files to be installed be found under dir. If this is
-specified, it is akin to all the filenames having "dir/" prepended
-to them.
+This option is like --list-missing, except if a file was missed, it will
+not only list the missing files, but also fail with a nonzero exit code.
=item B<-Xitem>, B<--exclude=item>
Exclude files that contain "item" anywhere in their filename from
being installed.
+=item B<--sourcedir=dir>
+
+Look in the specified directory for files to be installed.
+
+Note that this is not the same as the --sourcedirectory option used
+by the dh_auto_* commands. You rarely need to use this option, since
+dh_install automatically looks for files in debian/tmp in debhelper
+compatibility level 7 and above.
+
+=item B<--autodest>
+
+Guess as the destination directory to install things to. If this is
+specified, you should not list destination directories in
+debian/package.install files or on the command line. Instead, dh_install
+will guess as follows:
+
+Strip off debian/tmp (or the sourcedir if one is given) from the front of
+the filename, if it is present, and install into the dirname of the
+filename. So if the filename is debian/tmp/usr/bin, then that directory
+will be copied to debian/package/usr/. If the filename is
+debian/tmp/etc/passwd, it will be copied to debian/package/etc/.
+
+Note that if you list exactly one filename or wildcard-pattern on a line by
+itself in a
+debian/package.install file, with no explicit destination, then dh_install
+will automatically guess the destination even if this flag is not set.
+
=item I<file [...] dest>
Lists files (or directories) to install and where to install them to.
"autodest" => \$dh{AUTODEST},
"list-missing" => \$dh{LIST_MISSING},
"fail-missing" => \$dh{FAIL_MISSING},
+ "sourcedir=s" => \$dh{SOURCEDIR},
});
my @installed;
my $srcdir = '.';
-$srcdir = $dh{SOURCEDIR}."/" if defined $dh{SOURCEDIR};
+$srcdir = $dh{SOURCEDIR} if defined $dh{SOURCEDIR};
foreach my $package (@{$dh{DOPACKAGES}}) {
my $tmp=tmpdir($package);
my @found = glob "$srcdir/$glob";
if (! compat(6)) {
# Fall back to looking in debian/tmp.
- if (! @found || ! -e $found[0]) {
+ if (! @found || ! (-e $found[0] || -l $found[0])) {
@found = glob "debian/tmp/$glob";
}
}
if (! defined $dest) {
# Guess at destination directory.
$dest=$src;
- my $strip=$srcdir;
- if ($strip eq '.') {
- $strip = "debian/tmp";
- }
- $dest=~s/^(.*\/)?\Q$strip\E//;
- $dest=dirname($dest);
+ $dest=~s/^(.*\/)?(\Q$srcdir\E|debian\/tmp)\///;
+ $dest=dirname("/".$dest);
$tmpdest=1;
}