diff mbox series

[bug#50091,05/21] gnu: guile: Fix building on riscv64-linux.

Message ID 9440a6ca3c1318e99dc1eb16f7e382ee888464fc.1629193993.git.efraim@flashner.co.il
State New
Headers show
Series Add riscv64 support | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Efraim Flashner Aug. 17, 2021, 10:19 a.m. UTC
* gnu/packages/guile.scm (guile-3.0)[arguments]: On riscv64-linux add
a phase to skip a failing test.
---
 gnu/packages/guile.scm | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

Comments

Efraim Flashner Aug. 17, 2021, 10:30 a.m. UTC | #1
On Tue, Aug 17, 2021 at 01:19:03PM +0300, Efraim Flashner wrote:
> * gnu/packages/guile.scm (guile-3.0)[arguments]: On riscv64-linux add
> a phase to skip a failing test.
> ---
>  gnu/packages/guile.scm | 22 +++++++++++++---------
>  1 file changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
> index fffc30f913..f9a7125f83 100644
> --- a/gnu/packages/guile.scm
> +++ b/gnu/packages/guile.scm
> @@ -65,7 +65,8 @@
>    #:use-module (guix deprecation)
>    #:use-module (guix utils)
>    #:use-module (ice-9 match)
> -  #:use-module ((srfi srfi-1) #:prefix srfi-1:))
> +  #:use-module ((srfi srfi-1) #:prefix srfi-1:)
> +  #:use-module (srfi srfi-26))
>  
>  ;;; Commentary:
>  ;;;
> @@ -346,14 +347,17 @@ without requiring the source code to be rewritten.")
>                         ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214
>                         (substitute* "bootstrap/Makefile.in"
>                           (("^GUILE_OPTIMIZATIONS.*")
> -                          "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n"))))
> -                   (add-after 'unpack 'skip-failing-fdes-test
> -                     (lambda _
> -                       ;; ERROR: ((system-error "seek" "~A" ("Bad file descriptor") (9)))
> -                       (substitute* "test-suite/tests/ports.test"
> -                         (("fdes not closed\"" all) (string-append all "(exit 77)")))
> -                       #t)))
> -                 '())))))
> +                          "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n")))))
> +                 '())
> +           ,@(if (srfi-1:any (cute string-prefix? <> (%current-system))
> +                             '("powerpc-" "riscv64-"))

this should be switched to
,@(if (or (target-ppc32?)
          (target-riscv?))

> +               `((add-after 'unpack 'skip-failing-fdes-test
> +                   (lambda _
> +                     ;; ERROR: ((system-error "seek" "~A" ("Bad file descriptor") (9)))
> +                     (substitute* "test-suite/tests/ports.test"
> +                       (("fdes not closed\"" all) (string-append all "(exit 77)")))
> +                     #t)))
> +               '())))))
>  
>      (native-search-paths
>       (list (search-path-specification
> -- 
> 2.32.0
>
M Aug. 17, 2021, 10:44 a.m. UTC | #2
>  ;;; Commentary:
>  ;;;
> @@ -346,14 +347,17 @@ without requiring the source code to be rewritten.")
>                         ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214
>                         (substitute* "bootstrap/Makefile.in"
>                           (("^GUILE_OPTIMIZATIONS.*")
> -                          "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n"))))
> -                   (add-after 'unpack 'skip-failing-fdes-test
> -                     (lambda _
> -                       ;; ERROR: ((system-error "seek" "~A" ("Bad file descriptor") (9)))
> -                       (substitute* "test-suite/tests/ports.test"
> -                         (("fdes not closed\"" all) (string-append all "(exit 77)")))
> -                       #t)))
> -                 '())))))
> +                          "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n")))))
> +                 '())
> +           ,@(if (srfi-1:any (cute string-prefix? <> (%current-system))
> +                             '("powerpc-" "riscv64-"))
> +               `((add-after 'unpack 'skip-failing-fdes-test
> +                   (lambda _
> +                     ;; ERROR: ((system-error "seek" "~A" ("Bad file descriptor") (9)))
> +                     (substitute* "test-suite/tests/ports.test"
> +                       (("fdes not closed\"" all) (string-append all "(exit 77)")))
> +                     #t)))
> +               '())))))

This is not powerpc- or riscv64-specific -- iirc, I sometimes encounter it on a x86_64.
It's non-determenistic though.  The debian patch has a nice explanation:
<https://salsa.debian.org/rlb/deb-guile/-/blob/f24ab0150132d906b9724128576c36c39361cab7/debian/patches/0007-Fix-non-revealed-port-is-closed-ports.test.patch>.
I've also linked some of the public reports on the issue together:
<https://issues.guix.gnu.org/48389#11>.

Could the patch (or substitution) be applied, independently of the architecture?

Greetings,
Maxime.
Efraim Flashner Aug. 17, 2021, 10:56 a.m. UTC | #3
On Tue, Aug 17, 2021 at 12:44:44PM +0200, Maxime Devos wrote:
> >  ;;; Commentary:
> >  ;;;
> > @@ -346,14 +347,17 @@ without requiring the source code to be rewritten.")
> >                         ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214
> >                         (substitute* "bootstrap/Makefile.in"
> >                           (("^GUILE_OPTIMIZATIONS.*")
> > -                          "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n"))))
> > -                   (add-after 'unpack 'skip-failing-fdes-test
> > -                     (lambda _
> > -                       ;; ERROR: ((system-error "seek" "~A" ("Bad file descriptor") (9)))
> > -                       (substitute* "test-suite/tests/ports.test"
> > -                         (("fdes not closed\"" all) (string-append all "(exit 77)")))
> > -                       #t)))
> > -                 '())))))
> > +                          "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n")))))
> > +                 '())
> > +           ,@(if (srfi-1:any (cute string-prefix? <> (%current-system))
> > +                             '("powerpc-" "riscv64-"))
> > +               `((add-after 'unpack 'skip-failing-fdes-test
> > +                   (lambda _
> > +                     ;; ERROR: ((system-error "seek" "~A" ("Bad file descriptor") (9)))
> > +                     (substitute* "test-suite/tests/ports.test"
> > +                       (("fdes not closed\"" all) (string-append all "(exit 77)")))
> > +                     #t)))
> > +               '())))))
> 
> This is not powerpc- or riscv64-specific -- iirc, I sometimes encounter it on a x86_64.
> It's non-determenistic though.  The debian patch has a nice explanation:
> <https://salsa.debian.org/rlb/deb-guile/-/blob/f24ab0150132d906b9724128576c36c39361cab7/debian/patches/0007-Fix-non-revealed-port-is-closed-ports.test.patch>.

It is deterministic on powerpc and riscv64 though.

> I've also linked some of the public reports on the issue together:
> <https://issues.guix.gnu.org/48389#11>.
> 
> Could the patch (or substitution) be applied, independently of the architecture?

It could, but it affects everything back to guile-final, so it's world
rebuilding.

> Greetings,
> Maxime.
diff mbox series

Patch

diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index fffc30f913..f9a7125f83 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -65,7 +65,8 @@ 
   #:use-module (guix deprecation)
   #:use-module (guix utils)
   #:use-module (ice-9 match)
-  #:use-module ((srfi srfi-1) #:prefix srfi-1:))
+  #:use-module ((srfi srfi-1) #:prefix srfi-1:)
+  #:use-module (srfi srfi-26))
 
 ;;; Commentary:
 ;;;
@@ -346,14 +347,17 @@  without requiring the source code to be rewritten.")
                        ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214
                        (substitute* "bootstrap/Makefile.in"
                          (("^GUILE_OPTIMIZATIONS.*")
-                          "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n"))))
-                   (add-after 'unpack 'skip-failing-fdes-test
-                     (lambda _
-                       ;; ERROR: ((system-error "seek" "~A" ("Bad file descriptor") (9)))
-                       (substitute* "test-suite/tests/ports.test"
-                         (("fdes not closed\"" all) (string-append all "(exit 77)")))
-                       #t)))
-                 '())))))
+                          "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n")))))
+                 '())
+           ,@(if (srfi-1:any (cute string-prefix? <> (%current-system))
+                             '("powerpc-" "riscv64-"))
+               `((add-after 'unpack 'skip-failing-fdes-test
+                   (lambda _
+                     ;; ERROR: ((system-error "seek" "~A" ("Bad file descriptor") (9)))
+                     (substitute* "test-suite/tests/ports.test"
+                       (("fdes not closed\"" all) (string-append all "(exit 77)")))
+                     #t)))
+               '())))))
 
     (native-search-paths
      (list (search-path-specification