aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorEric Bavier <bavier@member.fsf.org>2018-10-03 10:23:51 -0500
committerEric Bavier <bavier@member.fsf.org>2018-10-03 10:45:02 -0500
commit43eb42ef017aa4752503fb2913781bb446716c1e (patch)
tree054fd18c734da873c286f8aaa7a891e79950b614 /gnu/packages
parent227ce488d7b899636e8e8635cbd2d08fb21c56a2 (diff)
downloadgnu-guix-43eb42ef017aa4752503fb2913781bb446716c1e.tar
gnu-guix-43eb42ef017aa4752503fb2913781bb446716c1e.tar.gz
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.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch45
-rw-r--r--gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch58
-rw-r--r--gnu/packages/patchutils.scm14
3 files changed, 106 insertions, 11 deletions
diff --git a/gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch b/gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch
new file mode 100644
index 0000000000..6bbec67e75
--- /dev/null
+++ b/gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch
@@ -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 = ();
+ }
+ }
+ }
diff --git a/gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch b/gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch
new file mode 100644
index 0000000000..cde2c8d41c
--- /dev/null
+++ b/gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch
@@ -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;
+ }
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index da20ae1c3f..688e62cdc8 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -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