summary refs log tree commit diff
path: root/gnu/packages/guile.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/guile.scm')
-rw-r--r--gnu/packages/guile.scm88
1 files changed, 53 insertions, 35 deletions
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 5de4f68093..0012d919c8 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -180,6 +180,11 @@ without requiring the source code to be rewritten.")
 
    (arguments
     `(#:configure-flags '("--disable-static") ; saves 3 MiB
+
+      ;; Work around non-reproducible .go files as described in
+      ;; <https://bugs.gnu.org/20272>, which affects 2.0, 2.2, and 3.0 so far.
+      #:parallel-build? #f
+
       #:phases
       (modify-phases %standard-phases
         ,@(if (hurd-system?)
@@ -246,7 +251,8 @@ without requiring the source code to be rewritten.")
                 "013mydzhfswqci6xmyc1ajzd59pfbdak15i0b090nhr9bzm7dxyd"))
               (modules '((guix build utils)))
               (patches (search-patches
-                        "guile-2.2-skip-oom-test.patch"))
+                        "guile-2.2-skip-oom-test.patch"
+                        "guile-2.2-skip-so-test.patch"))
 
               ;; Remove the pre-built object files.  Instead, build everything
               ;; from source, at the expense of significantly longer build
@@ -285,21 +291,56 @@ without requiring the source code to be rewritten.")
   (package
     (inherit guile-2.2)
     (name "guile")
-    (version "3.0.2")
+    (version "3.0.7")
     (source (origin
               (inherit (package-source guile-2.2))
+              (patches '())     ; We no longer need the patches.
               (uri (string-append "mirror://gnu/guile/guile-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "12lziar4j27j9whqp2n18427q45y9ghq7gdd8lqhmj1k0lr7vi2k"))))
+                "1dwiwsrpm4f96alfnz6wibq378242z4f16vsxgy1n9r00v3qczgm"))
+              ;; Replace the snippet because the oom-test still
+              ;; fails on some 32-bit architectures.
+              (snippet '(begin
+                          (substitute* "test-suite/standalone/Makefile.in"
+                            (("test-out-of-memory") ""))
+                          (for-each delete-file
+                                    (find-files "prebuilt" "\\.go$"))
+                          #t))))
+
+    ;; Build with the bundled mini-GMP to avoid interference with GnuTLS' own
+    ;; use of GMP via Nettle: <https://issues.guix.gnu.org/46330>.
+    (propagated-inputs
+     (srfi-1:fold srfi-1:alist-delete
+                  (package-propagated-inputs guile-2.2)
+                  '("gmp" "libltdl")))
     (arguments
-     ;; XXX: JIT-enabled Guile crashes in obscure ways on GNU/Hurd.
-     (if (hurd-target?)
-         (substitute-keyword-arguments (package-arguments guile-2.2)
-           ((#:configure-flags flags ''())
-            `(cons "--disable-jit" ,flags)))
-         (package-arguments guile-2.2)))
+     (substitute-keyword-arguments (package-arguments guile-2.2)
+       ((#:configure-flags flags ''())
+        (let ((flags `(cons "--enable-mini-gmp" ,flags)))
+          ;; XXX: JIT-enabled Guile crashes in obscure ways on GNU/Hurd.
+          (if (hurd-target?)
+              `(cons "--disable-jit" ,flags)
+              flags)))
+       ((#:phases phases)
+         (if (string-prefix? "powerpc-" (%current-system))
+           `(modify-phases ,phases
+              (add-after 'unpack 'adjust-bootstrap-flags
+                (lambda _
+                  ;; Upstream knows about suggested solution.
+                  ;; 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)))
+           phases))))
+
     (native-search-paths
      (list (search-path-specification
             (variable "GUILE_LOAD_PATH")
@@ -310,31 +351,7 @@ without requiring the source code to be rewritten.")
                      "share/guile/site/3.0")))))))
 
 (define-public guile-3.0-latest
-  ;; TODO: Make this 'guile-3.0' on the next rebuild cycle.
-  (package
-    (inherit guile-3.0)
-    (version "3.0.7")
-    (source (origin
-              (inherit (package-source guile-3.0)) ;preserve snippet
-              (patches '())
-              (uri (string-append "mirror://gnu/guile/guile-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "1dwiwsrpm4f96alfnz6wibq378242z4f16vsxgy1n9r00v3qczgm"))))
-
-    ;; Build with the bundled mini-GMP to avoid interference with GnuTLS' own
-    ;; use of GMP via Nettle: <https://issues.guix.gnu.org/46330>.  Use
-    ;; LIBGC/DISABLE-MUNMAP to work around <https://bugs.gnu.org/40525>.
-    ;; Remove libltdl, which is no longer used.
-    (propagated-inputs
-     `(("bdw-gc" ,libgc/disable-munmap)
-       ,@(srfi-1:fold srfi-1:alist-delete (package-propagated-inputs guile-3.0)
-                      '("gmp" "libltdl" "bdw-gc"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments guile-3.0)
-       ((#:configure-flags flags ''())
-        `(cons "--enable-mini-gmp" ,flags))))))
+  guile-3.0)
 
 (define-public guile-3.0/libgc-7
   ;; Using libgc-7 avoid crashes that can occur, particularly when loading
@@ -403,7 +420,8 @@ without requiring the source code to be rewritten.")
     (source (package-source guile))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--disable-silent-rules")
+     '(#:configure-flags '("--disable-silent-rules"
+                           "--enable-mini-gmp")   ;for Guile >= 3.0.6
        #:phases (modify-phases %standard-phases
                   (add-before 'build 'chdir
                     (lambda* (#:key outputs #:allow-other-keys)