Package: debhelper Version: 9.20151225 control: tags -1 + patch Hi niel,
could you get a glimpse at this attemped patch ? They are some failure on test suite that I could not fix Bastien
diff --git a/dh_install b/dh_install index 9288e86..d1b62ae 100755 --- a/dh_install +++ b/dh_install @@ -128,13 +128,13 @@ init(options => { "autodest" => \$dh{AUTODEST}, "list-missing" => \$dh{LIST_MISSING}, "fail-missing" => \$dh{FAIL_MISSING}, - "sourcedir=s" => \$dh{SOURCEDIR}, + "sourcedir=s@" => \$dh{SOURCEDIR}, }); my @installed; -my $srcdir = '.'; -$srcdir = $dh{SOURCEDIR} if defined $dh{SOURCEDIR}; +my @srcdirs = ! compat(6) ? ('.','debian/tmp') : ('.'); +@srcdirs = $dh{SOURCEDIR} if defined $dh{SOURCEDIR}; my $missing_files = 0; @@ -173,17 +173,18 @@ foreach my $package (getpackages()) { } my @filelist; - foreach my $glob (@$set) { - my @found = glob "$srcdir/$glob"; - if (! compat(6)) { - # Fall back to looking in debian/tmp. - if (! @found || ! (-e $found[0] || -l $found[0])) { - @found = glob "debian/tmp/$glob" - if $glob !~ m{^(?:\./)?debian/tmp/}; + GLOB: foreach my $glob (@$set) { + my @found; + foreach my $srcdir (@srcdirs) { + if($srcdir eq '.') { + @found = glob "$srcdir/$glob"; + } else { + @found = glob "$srcdir/$glob" if $glob !~ m{^(?:\./)?$srcdir}; + } + if (@found && (-e $found[0] || -l $found[0])) { + push @filelist, @found; + next GLOB; } - } - if (@found && (-e $found[0] || -l $found[0])) { - push @filelist, @found; } } @@ -200,13 +201,17 @@ foreach my $package (getpackages()) { push @installed, $src; next if $skip_install or $missing_files; - + if (! defined $dest) { # Guess at destination directory. - $dest=$src; - $dest=~s/^(.*\/)?\Q$srcdir\E\///; - $dest=~s/^(.*\/)?debian\/tmp\///; - $dest=dirname("/".$dest); + $dest= $src; + $dest =~ s,^[.]/,,; + foreach my $srcdir (@srcdirs) { + $dest =~ s,^/?\Q$srcdir\E/,,; + } + # why next line ? + $dest =~ s,^/?debian/tmp/,,; + $dest=dirname('/'.$dest); $tmpdest=1; } @@ -242,10 +247,9 @@ foreach my $package (getpackages()) { if ($dh{LIST_MISSING} || $dh{FAIL_MISSING}) { # . as srcdir makes no sense, so this is a special case. - if ($srcdir eq '.') { - $srcdir='debian/tmp'; - } - + my @missingsrcdirs = grep { $_ ne '.' } @srcdirs; + @missingsrcdirs = @missingsrcdirs || ('debian/tmp'); + my @missing; if ( -f 'debian/not-installed') { # Pretend that these are also installed. @@ -259,17 +263,19 @@ if ($dh{LIST_MISSING} || $dh{FAIL_MISSING}) { "\Q$_\E\/.*|\Q$_\E"; } @installed); $installed=qr{^($installed)$}; - find(sub { - -f || -l || return; - $_="$File::Find::dir/$_"; - if (! /$installed/ && ! excludefile($_)) { - my $file=$_; - $file=~s/^\Q$srcdir\E\///; - push @missing, $file; - } - }, $srcdir); + foreach my $srcdir (@missingsrcdirs) { + find(sub { + -f || -l || return; + $_="$File::Find::dir/$_"; + if (! /$installed/ && ! excludefile($_)) { + my $file=$_; + $file=~s/^\Q$srcdir\E\///; + push @missing, ($file,$srcdir); + } + }, $srcdir); + } if (@missing) { - warning "$_ exists in $srcdir but is not installed to anywhere" foreach @missing; + warning "$_[0] exists in $_[1] but is not installed to anywhere" foreach @missing; if ($dh{FAIL_MISSING}) { error("missing files, aborting"); }