Subject: bug#41672: nomad build failure:

From: Ludovic Courtès <[email-masked]>
Date: Sat, 06 Jun 2020 15:20:10 +0200

Hi,

Christopher Howard <[email-masked]> skribis:

> checking if (gcrypt hash) is available... no
> configure: error: guile-gcrypt is missing; please install it.
> command "/gnu/store/87kif0bpf0anwbsaw0jvg8fyciw4sz67-bash-5.0.16/bin/bash" "./configure" "CONFIG_SHELL=/gnu/store/87kif0bpf0anwbsaw0jvg8fyciw4sz67-bash-5.0.16/bin/bash" "SHELL=/gnu/store/87kif0bpf0anwbsaw0jvg8fyciw4sz67-bash-5.0.16/bin/bash" "--prefix=/gnu/store/016px9wmbw30xjplh6gq5jp9cpyfs3ck-nomad-0.1.2-alpha" "--enable-fast-install" "--build=x86_64-unknown-linux-gnu" failed with status 1

The problem is that Emacsy and Nomad haven’t switched to Guile 3.0 but
all the Guile stack switched on the recent ‘core-updates’ merge.

The attached patch does that.  However, it triggers tests failures in
Emacsy like this one:

--8<---------------cut here---------------start------------->8---
FAIL: test/core
===============

WARNING: (guile-user): imported module (emacsy core) overrides core binding `map'
WARNING: (guile-user): `map' imported from both (guile) and (emacsy core)
WARNING: (guile-user): imported module (emacsy core) overrides core binding `map'
WARNING: (guile-user): `map' imported from both (guile) and (emacsy core)
WARNING: (guile-user): imported module (emacsy core) overrides core binding `map'
WARNING: (guile-user): `map' imported from both (guile) and (emacsy core)
WARNING: (guile-user): imported module (emacsy core) overrides core binding `map'
WARNING: (guile-user): `map' imported from both (guile) and (emacsy core)
Backtrace:
           5 (primitive-load "/tmp/guix-build-emacsy-minimal-0.4.1-2…")
In ice-9/eval.scm:
    619:8  4 (_ #(#(#<directory (check) 7ffff58e98c0>) (let* (#) …) …))
   293:34  3 (_ #(#(#(#<directory (check) 7ffff58e98c0>) (# # …) …) …))
   182:19  2 (proc #(#(#<directory (guile-user) 7ffff58e9f00> (…)) …))
   142:16  1 (compile-top-call #<directory (guile-user) 7ffff58e9f00> …)
In unknown file:
           0 (%resolve-variable (7 . map) #<directory (guile-user) 7…>)

ERROR: In procedure %resolve-variable:
Unbound variable: map

(eval-expression (quote (+ 1 2))) => 33 ; correct

(let* ((symbols (quote (aa ab c d)))) (let-values (((to-string from-string) (object-tracker symbol->string))) (map from-string (all-completions "a" (map to-string symbols))))) => FAIL test/core.scm (exit status: 1)
--8<---------------cut here---------------end--------------->8---

I don’t see where the extra ‘map’ binding is exported, but it’s visibly
causing problems.

Thoughts?

Ludo’.

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 0942e7cf74..1f07152932 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2808,7 +2808,7 @@ more expressive and flexible than the traditional @code{format} procedure.")
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("bzip2" ,bzip2)
-       ("guile" ,guile-2.2)
+       ("guile" ,guile-3.0)
        ("gettext" ,gettext-minimal)
        ("libtool" ,libtool)
        ("perl" ,perl)
@@ -2817,7 +2817,7 @@ more expressive and flexible than the traditional @code{format} procedure.")
        ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
     (inputs
      `(("dbus-glib" ,dbus-glib)
-       ("guile" ,guile-2.2)
+       ("guile" ,guile-3.0)
        ("guile-lib" ,guile-lib)
        ("guile-readline" ,guile-readline)
        ("freeglut" ,freeglut)
@@ -2889,9 +2889,9 @@ in C using Gtk+-3 and WebKitGtk.")
                   "1ps15w8cxj9kc18gmvys9jv9xa1qqa7m43ismv34l3cmhddrn0sr"))))
       (build-system gnu-build-system)
       (inputs
-       `(("guile" ,guile-2.2)
-         ("guile-lib" ,guile2.2-lib)
-         ("guile-readline" ,guile2.2-readline)))
+       `(("guile" ,guile-3.0)
+         ("guile-lib" ,guile-lib)
+         ("guile-readline" ,guile-readline)))
       (propagated-inputs '())
       (arguments
        `(#:configure-flags '("--without-examples")
@@ -2948,7 +2948,16 @@ perform geometrical transforms on JPEG images.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1dnkr1hmvfkwgxd75dcf93pg39yfgawvdpzdhv991yhghv0qxc9h"))))
+                "1dnkr1hmvfkwgxd75dcf93pg39yfgawvdpzdhv991yhghv0qxc9h"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Fix an inconsistency where 'GUILE_PKG' checks for 3.0 but
+                  ;; later we do 'PKG_CHECK_MODULES([GUILE], guile-2.2)'.
+                  (substitute* "configure.ac"
+                    (("^PKG_CHECK_MODULES\\(\\[GUILE\\].*$")
+                     ""))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -2956,12 +2965,12 @@ perform geometrical transforms on JPEG images.")
        ("bash" ,bash)
        ("pkg-config" ,pkg-config)
        ("libtool" ,libtool)
-       ("guile" ,guile-2.2)
+       ("guile" ,guile-3.0)
        ("glib:bin" ,glib "bin")
        ("texinfo" ,texinfo)
        ("perl" ,perl)))
     (inputs
-     `(("guile" ,guile-2.2)
+     `(("guile" ,guile-3.0)
        ("guile-lib" ,guile-lib)
        ("guile-gcrypt" ,guile-gcrypt)
        ("guile-readline" ,guile-readline)