guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: quilt: Remove test workarounds.


From: Eric Bavier
Subject: 01/01: quilt: Remove test workarounds.
Date: Wed, 3 Oct 2018 11:49:08 -0400 (EDT)

bavier pushed a commit to branch master
in repository guix.

commit 43eb42ef017aa4752503fb2913781bb446716c1e
Author: Eric Bavier <address@hidden>
Date:   Wed Oct 3 10:23:51 2018 -0500

    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.
---
 gnu/local.mk                                       |  2 +
 ...pat-getopt-fix-option-with-nondigit-param.patch | 45 +++++++++++++++++
 .../quilt-compat-getopt-fix-second-separator.patch | 58 ++++++++++++++++++++++
 gnu/packages/patchutils.scm                        | 14 ++----
 4 files changed, 108 insertions(+), 11 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index b2fda4a..61e5913 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -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             \
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 0000000..6bbec67
--- /dev/null
+++ 
b/gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch
@@ -0,0 +1,45 @@
+From: Jean Delvare <address@hidden>
+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 <address@hidden>
+---
+ 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 0000000..cde2c8d
--- /dev/null
+++ b/gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch
@@ -0,0 +1,58 @@
+From: Jean Delvare <address@hidden>
+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 <address@hidden>
+---
+ 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 da20ae1..688e62c 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]