Subject: bug#37347: 'guix environment' fails after trying to follow the steps from "Running Guix Before It Is Installed" page

From: Julien Lepiller <[email-masked]>
Date: Mon, 09 Sep 2019 08:23:50 +0200

Le 9 septembre 2019 03:14:05 GMT+02:00, Jesse Gibbons <[email-masked]> a écrit :
>On Mon, 2019-09-09 at 02:49 +0200, Jan wrote:
>> Hi, I'm a new Guix user and I wanted to hack on Guix and update a
>> package, I hadn't known exactly how to do this, so I started
>> following
>> instructions from
>> https://guix.gnu.org/manual/en/html_node/Running-Guix-Before-It-Is-In
>> stalled.html#Running-Guix-Before-It-Is-Installed
>> and
>> https://guix.gnu.org/blog/2018/a-packaging-tutorial-for-guix/
>> 
>> The situation started to be interesting, when the tutorial told me to
>> run "cd $GUIX_CHECKOUT" and "./pre-inst-env guix package
>> --list-available=ruby"
>> I was confused, because I couldn't find any "./pre-inst-env" file, so
>> I
>> used 'find' to search for it and there were one file with a similar
>> name
>> in $GUIX_CHECKOUT/build-aux - ./pre-inst-env.in (as I'm composing
>> this
>> email now I see that's stupid, but I tried using this file, as I
>> don't
>> know what I was doing (still don't know))
>> So I started running the following stupid commands:
>> 
>> ----------------
>> user@machine ~/Prog/repo/guix [env]$ sudo -E ./pre-inst-env.in
>> guix-daemon --build-users-group=guixbuild
>> 
>> sudo: /gnu/store/z26h622slm8p61myhk45v3jjg8p7qm8z-profile/bin/sudo
>> must
>> be owned by uid 0 and have the setuid bit set 
>> 
>> user@machine ~/Prog/repo/guix [env]$ ./pre-inst-env.in
>> bash: ./pre-inst-env.in: No such file or directory 
>> user@machine ~/Prog/repo/guix [env]$ cd build-aux/ 
>> user@machine ~/Prog/repo/guix/build-aux [env]$ sudo
>> -E ./pre-inst-env.in guix-daemon --build-users-group=guixbuild
>> sudo: /gnu/store/z26h622slm8p61myhk45v3jjg8p7qm8z-profile/bin/sudo
>> must
>> be owned by uid 0 and have the setuid bit set 
>> user@machine ~/Prog/repo/guix/build-aux [env]$ exit
>> ---------------
>> 
>> And then:
>> 
>> ------------------
>> user@machine ~/Prog/repo/guix/build-aux$ chmod +x ./pre-inst-env.in 
>> user@machine ~/Prog/repo/guix/build-aux$ sudo -E ./pre-inst-env.in
>> guix-daemon --build-users-group=guixbuild Password: 
>> ./pre-inst-env.in: line 33: cd: @abs_top_srcdir@:
>> there is no such file or directory 
>> ./pre-inst-env.in: line 34: cd:
>> @abs_top_builddir@: there is no such file or directory
>> --------------------
>> 
>> And after that I couldn't run "guix
>> environment" anymore, it threw an error:
>> 
>> guix environment: error: failed to connect to
>> `/var/guix/daemon-socket/socket': Connection refused
>> 
>> Restarting the computer helps, but doing the same stuff breaks it
>> again, so guess it's reproducible.
>> 
>> After doing it I ran the "history" command so you can know what I did
>> exactly (some commands were unfortunately run in an environment and I
>> can't provide them), here it is:
>> 
>>   371  git clone --recurse-submodules
>>   git://git.savannah.gnu.org/guix.git 
>>   372  guix environment guix --pure
>>   373  sudo -E
>>   374  sudo --help
>>   375  guix environment guix --pure
>>   376  guix environment guix --pure --ad-hoc sudo 
>>   377  ls
>>   378  cd guix/
>>   379  ls
>>   380  cd build-aux/
>>   381  ls
>>   382  .
>>   383  guix environment guix --pure
>>   384  chmod +x ./pre-inst-env.in 
>>   385  sudo -E ./pre-inst-env.in guix-daemon
>>   --build-users-group=guixbuild 
>>   386  ls
>>   387  cd ..
>>   388  ./configure 
>>   389  guix environment guix --pure
>>   390  history
>> 
>> As stupid and complicated as it is, something is definitely broken
>> here.
>> 
>> Sincerely,
>> Jan Wielkiewicz
>> 
>> 
>> 
>
>pre-inst-env.in is for generating the pre-inst-env script. Have you
>tried:
>./bootstrap
>./configure
>
>This should generate pre-inst-env for you.
>
>Also, make sure the guix daemon is running after you restart.

Do not run ./configure alone, always specify --localstatedir=/var unless you plan to run the daemon from the repo too (then it's fine without the option, but you won't be able to pull or you'll get into trouble iiuc).