Subject: bug#26062: Spurious "environment variable may be needed" output

From: [email-masked] (Ludovic Courtès)
Date: Sat, 18 Mar 2017 11:33:33 +0100

Hi!

[email-masked] (Taylan Ulrich "Bayırlı/Kammer") skribis:

> After some poking around, I found the issue; it's the following in the
> guix-0.12.0 recipe:
>
>     (wrap-program (string-append out "/bin/guix")
>       `("GUILE_LOAD_PATH" ":" prefix (,path))
>       `("GUILE_LOAD_COMPILED_PATH" ":" = (,path)))
>
> As you see, it sets GUILE_LOAD_COMPILED_PATH to an absolute value rather
> than prefixing it.  So whenever I execute 'guix package ...' from the
> shell, the installed wrapper overrides my correct value of
> GUILE_LOAD_COMPILED_PATH with something insufficient.

Oh, good catch!

> FWIW, it overrides it with the following (split for readability):
>
> "/gnu/store/f4pw2jr2ial53awa34rjj3wb4b4k3nag-guile-json-0.6.0/share/guile/site/2.0:
> /gnu/store/y9k9l62cf8hhr5m3np3756swrbxws0dl-guile-ssh-0.10.2/share/guile/site/2.0:
> /gnu/store/iyvx2rpyndi3k7dzbl4jnv7k6ddkx88a-gnutls-3.5.8/share/guile/site/2.0"
>
> Should the 'wrap-program' call simply use 'prefix' instead of '='?  I'm
> not sure if there's a reason it uses '='.

Above the ‘wrap-program’ call, there’s this comment:

        ;; Ignore user settings so that a bogus
        ;; GUILE_LOAD_COMPILED_PATH does not prevent use of
        ;; 'guix', notably when it contains entries pointing to
        ;; incompatible .go files as reported at
        ;; <https://lists.gnu.org/archive/html/guix-devel/2016-03/msg01261.html>.

Since 2.0.12, Guile skips invalid .go files, so this problem is gone.
So I think you can go ahead and change '= to 'prefix there.

Thanks!

Ludo’.