Roel Janssen <[email protected]> skribis: > Ludovic Courtès writes: > >> Roel Janssen <[email protected]> skribis: >> >>> In an attempt to bootstrap Guix, I repeatedly encounter the same error. >>> I attached the last 5000 lines of the build output of the command: >>> guix build bootstrap-tarballs >>> >>> When running the daemon, I used the following environment variables: >>> NIX_STORE_DIR=/hpc/store >>> NIX_CONF_DIR=/hpc/etc/guix >>> NIX_STATE_DIR=/hpc/var/guix >>> NIX_LOG_DIR=/hpc/log >> >> And TMPDIR? > > I didn't set TMPDIR. Should I do that?
No, just wanted to make sure. >> Note that these environment variables are undocumented; use at your own >> risks. :-) > > Ha! I found them in the code for the guix-daemon. Unrelated to this > bugreport, but don't you think we should rename these to GUIX_* > equivalent environment variables? Yes we should: <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22459>. >>> The same environment variables (and values) were set when running the >>> guix build command. >>> >>> What am I doing that causes the build to fail? >> >> Did you pass the --disable-chroot or --chroot-directory options of >> guix-daemon? > > No, but I have made some modifications to the code to make it run > completely in userspace. “User space” is usually taken to mean something else: <https://en.wikipedia.org/wiki/User-space>. I think you mean running guix-daemon as an unprivileged user, right? > The code should effectively disable chrooting (unfortunately). The patch is roughly equivalent to --disable-chroot, right? Then I’m afraid this voids your warranty. :-) This “Build Environment Setup” section mentions it. Most likely something somewhere stealthily picks up /usr/bin/ld, /usr/bin/libstdc++.so, or something along these lines. It’s very hard to tell what. One way to search for the culprit would be “grep -r /usr” in the GCC source tree. But it could be something else; for instance our bootstrap libc might honor /etc/ld.so.{conf,cache}, which can break everything (this can be checked with ‘strace’.) It would be interesting to know. It wouldn’t be enough to fix this use case though; that would require Linux user name spaces (what ‘guix environment --container’ uses.) Ludo’.
