Package: devscripts Version: 2.10.11 Severity: wishlist Tags: patch --- Please enter the report below this line. --- debdiff uses interdiff for non-native packages (which have orig.tar.gz), but normal diff for native packages or when interdiff from patchutils is not installed.
When interdiff is being used, the output can be applied to a source package using "patch -p1", but otherwise you have to use "-p4". The attached patch makes both methods compatible, by stripping the "common" path prefixes from the diff output. Please note, that it could be done also by using "filterdiff --strip", but that would not cover the case when patchutils is not available. The bug and patch has been initially posted for Ubuntu at: https://launchpad.net/bugs/136863
--- devscripts-2.10.11/scripts/debdiff.pl 2007-11-03 18:53:49.000000000 +0100 +++ /usr/bin/debdiff 2007-12-13 19:20:07.000000000 +0100 @@ -474,15 +474,28 @@ } closedir(DIR); } - my @command = ("diff", "-Nru"); - for my $diff_opt (@diff_opts) { - push @command, $diff_opt; - } + my @command = ("diff", "-Nru", @diff_opts); for my $exclude (@excludes) { push @command, ("--exclude", $exclude); } push @command, ("$dir1/$sdir1", "$dir2/$sdir2"); - system @command; + + # Execute diff and remove the common prefixes $dir1/$dir2, so the patch can be used with -p1, + # as if when interdiff would have been used: + open( DIFF, '-|', @command ) || fatal "Failed to execute @command!"; + + # replace in first line: + my $first = <DIFF>; + $first =~ s/ $dir1\/$sdir1/ $sdir1/; + $first =~ s/ $dir2\/$sdir2/ $sdir2/; + print $first; + + while(<DIFF>) { + s/^--- $dir1\//--- /; + s/^\+\+\+ $dir2\//+++ /; + print; + } + close DIFF; } exit 0;
signature.asc
Description: This is a digitally signed message part.