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

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

Divan Santana <[email-masked]> writes:

> 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 ~$

I'm wondering if for others, by default does ssh a-guixsd-system env
|grep GUILE_ return something?

If so, why on my system, and ng0 is it not set.
--
Divan