Subject: Re: bug#27386: offloading documentation and env

From: Divan Santana <[email-masked]>
Date: Thu, 28 Sep 2017 21:40:49 +0200

So I'm trying to set up the same offloading and followed the
documentation and seem to have resulted in the same issue as ng0.

Ludovic Courtès <[email-masked]> writes:

> ng0 <[email-masked]> skribis:
>
>> Ludovic Courtès transcribed 2.1K bytes:
>>> ng0 <[email-masked]> skribis:
>>>
>>> > And this is from master running an offloading test as it is right now.
>>> > Both ends have GuixSD.
>>> >
>>> > user@abyayala ~$ guix offload test
>>> > guix offload: testing 1 build machines defined in '/usr/local/etc/guix/machines.scm'...
>>> > guix offload: '192.168.1.179' is running guile (GNU Guile) 2.2.2
>>> > Backtrace:
>>> >            7 (primitive-load "/gnu/store/js4ml3w20ysh4znp9wl0da0ljji…")
>>> > In guix/ui.scm:
>>> >    1321:8  6 (run-guix-command _ . _)
>>> > In ice-9/boot-9.scm:
>>> >     837:9  5 (catch srfi-34 #<procedure 1cc6cc0 at guix/ui.scm:450:…> …)
>>> >     837:9  4 (catch system-error #<procedure 1cc6ce0 at guix/script…> …)
>>> > In guix/scripts/offload.scm:
>>> >     611:6  3 (check-machine-availability _ _)
>>> > In srfi/srfi-1.scm:
>>> >    656:11  2 (for-each #<procedure assert-node-has-guix (node name)> …)
>>> > In guix/scripts/offload.scm:
>>> >     543:2  1 (assert-node-has-guix #<node [email-masked]:22555/…> …)
>>> > In ssh/dist/node.scm:
>>> >     397:8  0 (node-eval #<node [email-masked]:22555/37146 1ceaa…> …)
>>> >
>>> > ssh/dist/node.scm:397:8: In procedure node-eval:
>>> > ssh/dist/node.scm:397:8: Throw to key `node-repl-error' with args `("Evaluation failed" "scheme@(guile-user)> While compiling expression:\nERROR: no code for module (guix)" ())'.
>>>
>>> This means that you need to make sure that the target machine has (guix)
>>> in its load path.
>>
>> I assume that you have read the rest of my messages and not just skipped
>> through them. I thought my messages were clear that (guix) is in the
>> loadpath, but only *locally* on the machine, not when connecting to it
>> via ssh.
>
> Right, this is why I suggested testing that *with a non-interactive
> connection*, as in:
>
>   ssh HOST env | grep GUILE
>
>> So I'm guessing here: the not so obvious yet very obvious solution is to
>> put guix into the global (packages)?
>> Where global means the canonical /etc/config.scm
>
> On GuixSD, Guix is always in the global profile.
>
>>> The test is to run something like:
>>>
>>>   $ ssh localhost env |grep GUILE_
>>>   GUILE_LOAD_COMPILED_PATH=/home/ludo/.guix-profile/lib/guile/2.2/site-ccache:/home/ludo/.guix-profile/share/guile/site/2.2:/run/current-system/profile/lib/guile/2.2/site-ccache:/run/current-system/profile/share/guile/site/2.2
>>>   GUILE_LOAD_PATH=/home/ludo/.guix-profile/share/guile/site/2.2:/run/current-system/profile/share/guile/site/2.2
>>>
>>> and you should see /run/current-system/profile/share/guile/site/2.2.  If
>>> not, you’ll have to add it somehow.
>
> What does the above give for you?

So guixsd.santanas.co.za is my build system VM.
Laptop, is a guixsd system I want to not compile code, and rather offload.

root@laptop ~# ssh [email-masked] env |grep GUILE_

Returns nothing.

However, an interactive session has the correct environment variables.
So I suppose one could set this via the .zshenv or .bash_profile .

Though I'm wondering what others do? Secondly, should the official docs
be updated?

root@guixsd ~# su - admin
admin@guixsd ~$ env|grep GUILE_
GUILE_LOAD_COMPILED_PATH=/run/current-system/profile/lib/guile/2.2/site-ccache:/run/current-system/profile/share/guile/site/2.2
GUILE_LOAD_PATH=/run/current-system/profile/share/guile/site/2.2
admin@guixsd ~$

--
Divan