quilt: Remove test workarounds.

* gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch,
gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch:
New files.
* gnu/local.mk (dist_patch_DATA): Add them.
* gnu/packages/patchutils.scm (quilt)[source]: Use them.
[arguments]: Remove workarounds in 'patch-tests' phase.
master
Eric Bavier 2018-10-03 10:23:51 -05:00
parent 227ce488d7
commit 43eb42ef01
No known key found for this signature in database
GPG Key ID: FD73CAC719D32566
4 changed files with 108 additions and 11 deletions

View File

@ -1102,6 +1102,8 @@ dist_patch_DATA = \
%D%/packages/patches/quagga-reproducible-build.patch \
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
%D%/packages/patches/quilt-test-fix-regex.patch \
%D%/packages/patches/quilt-compat-getopt-fix-second-separator.patch \
%D%/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch \
%D%/packages/patches/qtwebkit-pbutils-include.patch \
%D%/packages/patches/rapicorn-isnan.patch \
%D%/packages/patches/raptor2-heap-overflow.patch \

View File

@ -0,0 +1,45 @@
From: Jean Delvare <jdelvare@suse.de>
Subject: compat/getopt: Allow non-digit parameter embedded in short option
The compatibility getopt script allows only digit parameters to be
embedded in short options. Util-linux's getopt implementation does
not have such a restriction and allows any parameter to be embedded
in short options. As a consequence, using the compatibility getopt
script would choke for example on "-pab", which is a legal option
of the "quilt refresh" command.
Remove the limitation on digits so that the compatibility getopt
script allows what util-linux allows. This fixes the second half
of bug #54772:
https://savannah.nongnu.org/bugs/index.php?54772
As a side note, this feature of the compatibility script was broken
anyway, as it would output the digits in reverse order.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
---
compat/getopt.in | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
--- quilt.orig/compat/getopt.in 2018-10-03 16:05:56.818667040 +0200
+++ quilt/compat/getopt.in 2018-10-03 16:12:17.624841732 +0200
@@ -108,15 +108,10 @@ foreach my $word (@words) {
if (scalar(@letters) == 0) {
$need_param = $letter;
} else {
- # short options can have numerical args
- # embedded in the short option list: -UO
- die "unexpected character after option $letter"
- if ($letters[$#letters] !~ /[0-9]/);
- my @digits;
- while (scalar(@letters) && ($letters[$#letters] =~ /[0-9]/)) {
- push @digits, pop @letters;
- }
- push @options, quote_word(join('', reverse @digits));
+ # short options can have args
+ # embedded in the short option list
+ push @options, quote_word(join('', reverse @letters));
+ @letters = ();
}
}
}

View File

@ -0,0 +1,58 @@
From: Jean Delvare <jdelvare@suse.de>
Subject: compat/getopt: Handle a second separator
getopt can be passed 2 '--' separators. The first one tells that
getopt options are over and target program options start. The second
one tells that the target program's options are over and following
arguments should be treated as non-options even if they look like
options.
This second separator was not handled, causing the compatibility
getopt script to treat the following arguments as options, eventually
failing one way or another.
Properly detect and handle the second separator. This fixes the first
half of bug #54772:
https://savannah.nongnu.org/bugs/index.php?54772
Signed-off-by: Jean Delvare <jdelvare@suse.de>
---
compat/getopt.in | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
--- quilt.orig/compat/getopt.in 2018-10-03 15:23:21.147620172 +0200
+++ quilt/compat/getopt.in 2018-10-03 16:05:56.818667040 +0200
@@ -8,12 +8,12 @@
use strict;
-my $opts;
+my $opts = '';
my @words;
my $found_sep = 0;
foreach my $arg (@ARGV) {
- if ($arg eq '--') {
+ if (!$found_sep && $arg eq '--') {
$found_sep = 1;
}
else {
@@ -62,10 +62,17 @@ sub quote_word
return "'$word'";
}
+# there can be a second separator, to inhibit processing following arguments
+# as options
+$found_sep = 0;
foreach my $word (@words) {
+ if ($word eq '--') {
+ $found_sep = 1;
+ next;
+ }
# allow '-' to be an option value
- if (!$need_param && $word !~ /^-./) {
+ if ($found_sep || (!$need_param && $word !~ /^-./)) {
push @barewords, quote_word($word);
next;
}

View File

@ -103,7 +103,9 @@ listing the files modified by a patch.")
(sha256
(base32
"06b816m2gz9jfif7k9v2hrm7fz76zjg5pavf7hd3ifybwn4cgjzn"))
(patches (search-patches "quilt-test-fix-regex.patch"))))
(patches (search-patches "quilt-test-fix-regex.patch"
"quilt-compat-getopt-fix-second-separator.patch"
"quilt-compat-getopt-fix-option-with-nondigit-param.patch"))))
(build-system gnu-build-system)
(native-inputs
`(("gettext" ,gnu-gettext)))
@ -122,16 +124,6 @@ listing the files modified by a patch.")
'("test/run"
"test/edit.test")
(("/bin/sh") (which "sh")))
(substitute* "test/create-delete.test"
;; We'd rather use quilt's compat/getopt than declare a
;; dependency on util-linux, but this test fails because of
;; compat/getopt's handling of "---" in this test, so remove it
;; for now.
((" ---") ""))
(substitute* '("test/empty-files.test" "test/faildiff.test")
;; compat/getopt seems not to handle splitting of short opts
;; from its arguments.
(("-pab") "-p ab"))
#t))
(add-after 'install 'wrap-program
;; quilt's configure checks for the absolute path to the utilities it