Hi Guix, I’m getting this weird error on “guix pull”:
--8<---------------cut here---------------start------------->8--- [rwur...@max147.mdc-berlin.net:~] $ guix pull Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'... Building from this channel: guix https://git.savannah.gnu.org/git/guix.git e26d628 Computing Guix derivation for 'x86_64-linux'... \@ build-started /gnu/store/pryjyasqnhc69qqjsbvv5f1ksi25mjdc-libgit2-0.28.tar.xz.drv - x86_64-linux /gnu/var/log/guix/drvs/pr//yjyasqnhc69qqjsbvv5f1ksi25mjdc-libgit2-0.28.tar.xz.drv 2110 |@ build-log 2110 252 Backtrace: 2 (primitive-load "/gnu/store/lgad0sg02p56jadwqrq674250d5?") In ice-9/eval.scm: 619:8 1 (_ #f) In unknown file: 0 (setlocale 6 "en_US.utf8") ERROR: In procedure setlocale: In procedure setlocale: Invalid argument builder for `/gnu/store/pryjyasqnhc69qqjsbvv5f1ksi25mjdc-libgit2-0.28.tar.xz.drv' failed with exit code 1 @ build-failed /gnu/store/pryjyasqnhc69qqjsbvv5f1ksi25mjdc-libgit2-0.28.tar.xz.drv - 1 builder for `/gnu/store/pryjyasqnhc69qqjsbvv5f1ksi25mjdc-libgit2-0.28.tar.xz.drv' failed with exit code 1 cannot build derivation `/gnu/store/nj6zd6gn3x1rf08ayxxwd1v0fyg71v9c-libgit2-0.28.2.drv': 1 dependencies couldn't be built cannot build derivation `/gnu/store/82x55s3m26j3rpq45ppijzvvh3rhxhsb-guile-git-0.2.0.drv': 1 dependencies couldn't be built Backtrace: In ./guix/store.scm: 1667:8 19 (_ _) 1667:8 18 (_ _) In ./guix/gexp.scm: 708:2 17 (_ _) In ./guix/monads.scm: 482:9 16 (_ _) In ./guix/gexp.scm: 573:13 15 (_ _) In ./guix/store.scm: 1667:8 14 (_ _) In ./guix/gexp.scm: 708:2 13 (_ _) In ./guix/monads.scm: 482:9 12 (_ _) In ./guix/gexp.scm: 573:13 11 (_ _) In ./guix/store.scm: 1667:8 10 (_ _) In ./guix/gexp.scm: 708:2 9 (_ _) In ./guix/monads.scm: 482:9 8 (_ _) In ./guix/gexp.scm: 573:13 7 (_ _) In ./guix/store.scm: 1667:8 6 (_ _) 1690:38 5 (_ #<store-connection 256.99 d5cfb40>) In ./guix/packages.scm: 936:16 4 (cache! #<weak-table 420/883> #<package guile-git@0.2.?> ?) In ./guix/grafts.scm: 314:4 3 (graft-derivation #<store-connection 256.99 d5cfb40> # # ?) 192:4 2 (references-oracle #<store-connection 256.99 d5cfb40> #) 201:20 1 (_ _ _) In ./guix/store.scm: 1203:15 0 (_ #<store-connection 256.99 d5cfb40> _ _) ./guix/store.scm:1203:15: Throw to key `srfi-34' with args `(#<condition &store-protocol-error [message: "build of `/gnu/store/82x55s3m26j3rpq45ppijzvvh3rhxhsb-guile-git-0.2.0.drv' failed" status: 100] d59ede0>)'. guix pull: error: You found a bug: the program '/gnu/store/2mjaq8zxq60ifqxj3fra7f8gyxxccypm-compute-guix-derivation' failed to compute the derivation for Guix (version: "e26d628b0fabf5a0aa7c4164a9558c66c61e02ab"; system: "x86_64-linux"; host version: "ebd45195dd10eea9ce2c563697989bd4b27dfdd3"; pull-version: 1). Please report it by email to <bug-guix@gnu.org>. --8<---------------cut here---------------end--------------->8--- I’m using “guix” from the result of a previous “guix pull”, but it’s the same if I use a git checkout. The daemon is probably a little special. I’m using the daemon from a git checkout inside of an environment for “guix”, because localstatedir in my case is /gnu/var. I also tried using the daemon from the same “guix pull” tree, after setting GUIX_DATABASE_DIRECTORY=/gnu/var/guix/db and GUIX_STATE_DIRECTORY=/gnu/var/guix. Here’s how I launch the daemon: --8<---------------cut here---------------start------------->8--- #!/bin/bash export GUIX_PROFILE=/gnu/var/guix/profiles/custom/guix-remote/.guix-profile # We need this to augment the GUILE_LOAD_PATH such that it includes # the Guile bindings to gnutls. Sourcing the whole profile is # overkill, but who cares, eh? source ${GUIX_PROFILE}/etc/profile # Fix locale warnings export GUIX_LOCPATH=${GUIX_PROFILE}/lib/locale # Fix certificate validation export SSL_CERT_DIR=${GUIX_PROFILE}/etc/ssl/certs/ #export GUIX_DATABASE_DIRECTORY=/gnu/var/guix/db #export GUIX_STATE_DIRECTORY=/gnu/var/guix #/gnu/remote/.guix-pull/bin/guix-daemon \ #/gnu/remote/guix/pre-inst-env guix-daemon \ exec /gnu/remote/guix/pre-inst-env guix-daemon \ --disable-log-compression \ --build-users-group=guix-builder \ --listen=141.80.186.209:9999 \ --substitute-urls="https://berlin.guixsd.org https://mirror.hydra.gnu.org" $@ --8<---------------cut here---------------end--------------->8--- All communication with the daemon happens over network; the local socket is not involved, but this doesn’t seem to make any difference here. The simplest reproducer is to run Guile where the daemon runs and to evaluate setlocale: --8<---------------cut here---------------start------------->8--- [rwurmus@guix-builder:~] (716) $ /gnu/store/r658y3cgpnf99nxjxqgjiaizx20ac4k0-guile-2.2.4/bin/guile guile: warning: failed to install locale warning: failed to install locale: Invalid argument GNU Guile 2.2.4 Copyright (C) 1995-2017 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guile-user)> (setlocale 6 "en_US.utf8") ERROR: In procedure setlocale: In procedure setlocale: Invalid argument Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(guile-user) [1]> --8<---------------cut here---------------end--------------->8--- This is expected because GUIX_LOCPATH isn’t set in this environment. It’s fine when I set GUIX_LOCPATH to the value it has in the above guix-daemon wrapper: --8<---------------cut here---------------start------------->8--- [rwurmus@guix-builder:~] (719) $ GUIX_LOCPATH=/gnu/var/guix/profiles/custom/guix-remote/.guix-profile/lib/locale /gnu/store/r658y3cgpnf99nxjxqgjiaizx20ac4k0-guile-2.2.4/bin/guile GNU Guile 2.2.4 Copyright (C) 1995-2017 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guile-user)> (setlocale 6 "en_US.utf8") $1 = "en_US.utf8" scheme@(guile-user)> --8<---------------cut here---------------end--------------->8--- I don’t understand why Guile as used in the builder of libgit2-0.28.tar.xz would behave any different as the daemons environment looks fine to me: --8<---------------cut here---------------start------------->8--- [rwurmus@guix-builder:~] (723) $ sudo strings /proc/27562/environ GUIX_LOCPATH=/gnu/var/guix/profiles/custom/guix-remote/.guix-profile/lib/locale NIX_BUILD_HOOK=/gnu/remote/guix/nix/scripts/offload NIX_HASH= NIX_LIBEXEC_DIR=/gnu/remote/guix/nix/scripts LC_ALL=en_US.UTF-8 GUILE_LOAD_PATH=/gnu/remote/guix:/gnu/remote/guix:/gnu/var/guix/profiles/custom/guix-remote/.guix-profile/share/guile/site/2.2 GUIX_PROFILE=/gnu/var/guix/profiles/custom/guix-remote/.guix-profile GUILE_LOAD_COMPILED_PATH=/gnu/remote/guix:/gnu/var/guix/profiles/custom/guix-remote/.guix-profile/lib/guile/2.2/site-ccache PATH=/gnu/remote/guix/scripts:/gnu/remote/guix:/gnu/var/guix/profiles/custom/guix-remote/.guix-profile/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin PWD=/ LANG=en_US.UTF-8 SSL_CERT_DIR=/gnu/var/guix/profiles/custom/guix-remote/.guix-profile/etc/ssl/certs/ SHLVL=0 NIX_ROOT_FINDER=/gnu/remote/guix/nix/scripts/list-runtime-roots GUIX_UNINSTALLED=1 --8<---------------cut here---------------end--------------->8--- What’s going on here? -- Ricardo