guix offload error messages need improvements

  • Open
  • quality assurance status badge
Details
One participant
  • levenson
Owner
unassigned
Submitted by
levenson
Severity
normal
L
L
levenson wrote on 15 Mar 2020 19:57
(address . bug-guix@gnu.org)
84mu8higzg.fsf@mmer.org
Hi Guix,

guix offload error messages are cumbersome. With a help from guys on irc channel(many thanks), I finally manage it to work by installing guix and guile packages under the remote user.

Toggle snippet (16 lines)
# local
aabramov@delta:~/factory/guix$ guix describe
Generation 340 Mar 12 2020 18:23:16 (current)
guix be78906
repository URL: file:///home/aabramov/factory/guix
branch: master
commit: be78906592c761aa2a67e979074561e459efdcac
# remote
[aabramov@minion100 ~]$ guix describe
Generation 2 Mar 15 2020 17:42:04 (current)
guix be78906
repository URL: file:///home/aabramov/guix
branch: master
commit: be78906592c761aa2a67e979074561e459efdcac

machines.scm is ready, and here is my fist attempt to run offload test.

Toggle snippet (7 lines)
aabramov@delta:~/factory/guix$ guix offload test
guix offload: testing 1 build machines defined in '/etc/guix/machines.scm'...
guix offload: Guix is usable on 'minion100' (test returned "/gnu/store/883yjkl46dxw9mzykykmbs0yzwyxm17z-test")
guix offload: 'minion100' is running GNU Guile 3.0.1
guix offload: error: failed to connect to `#<input-output: channel (open) 7fc8c903a260>': Protocol error

There is no errors in my local guix-daemon nor remote one. --debugs doesn't help either

Same thing with copy.

Toggle snippet (6 lines)
aabramov@delta:~/factory/guix$ guix copy --to=minion100 hello
guix copy: error: failed to connect to `#<input-output: channel (open) 7f64d7d18de0>': Protocol error
aabramov@delta:~/factory/guix$ guix copy --from=minion100 hello
guix copy: error: failed to connect to `#<input-output: channel (open) 7f314e202cc0>': Protocol error

Guix says that my minion is running GNU Guile 3.0 which is for me a good sign, but apparently it is not.

I thought that guile 3.0 is an issues, so let's install guile-2. Here is my remote profile:

Toggle snippet (14 lines)
[aabramov@minion100 ~]$ guix package -l
Generation 1 Mar 09 2020 22:22:03
glibc-locales 2.29 out /gnu/store/03nvilh2x4z07dxv7h13gh986vvgpnsf-glibc-locales-2.29

Generation 2 Mar 09 2020 22:28:46
+ emacs-next 27.0.50-0.36abf68 out /gnu/store/61bwd5sn4s25lm2m9shbrja5d6z1d17y-emacs-next-27.0.50-0.36abf68

Generation 3 Mar 15 2020 16:54:24
+ sshuttle 0.78.5 out /gnu/store/13s2jadhdvpk99mnkf6y1r42mamijzrd-sshuttle-0.78.5

Generation 4 Mar 15 2020 17:56:00
+ guile 2.2.7 out /gnu/store/jgl9d4axpavsv83z2f1z1himnkbsxxqj-guile-2.2.7

guix offload test fails with a diffrent error. I also tried to use #:log-verbosity 'protocol, but it doesn't help.

Toggle snippet (9 lines)
aabramov@delta:~/factory/guix$ guix offload test
guix offload: testing 1 build machines defined in '/etc/guix/machines.scm'...
guix offload: Guix is usable on 'minion100' (test returned "/gnu/store/883yjkl46dxw9mzykykmbs0yzwyxm17z-test")
guix offload: 'minion100' is running GNU Guile 3.0.1
sending 1 store item (0 MiB) to 'minion100'...
exporting path `/gnu/store/wc2vv8kcf634gijak07sadwmkck903lq-export-test'
guix offload: error: unknown error while sending files over SSH

In the meantime copy fails differently:

Toggle snippet (10 lines)
aabramov@delta:~/factory/guix$ guix copy --from=minion100 hello
guix copy: error: Guile modules not found on remote host 'minion100'
hint: Make sure `GUILE_LOAD_PATH' includes Guix' own module directory. Run `ssh minion100 env | grep GUILE_LOAD_PATH' to check.

aabramov@delta:~/factory/guix$ guix copy --to=minion100 hello
sending 1 store item (0 MiB) to 'minion100'...
guix copy: error: unknown error while sending files over SSH
aabramov@delta:~/factory/guix$ ssh minion100 env | grep GUILE_LOAD_PATH

`copy from' check gives a hint, but even though I have GUIX_PROFILE defined in my .bash_profile:

Toggle snippet (5 lines)
aabramov@delta:~/factory/guix$ ssh minion100 tail -n2 .bash_profile
export GUIX_PROFILE=~/.guix-profile
source "${GUIX_PROFILE}/etc/profile"

for some reason I still don't have any GUILE_LOAD variables defined

Toggle snippet (16 lines)
[aabramov@minion100 ~]$ cat .guix-profile/etc/profile
# Source this file to define all the relevant environment variables in Bash
# for this profile. You may want to define the 'GUIX_PROFILE' environment
# variable to point to the "visible" name of the profile, like this:
#
# GUIX_PROFILE=/path/to/profile ; \
# source /path/to/profile/etc/profile
#
# When GUIX_PROFILE is undefined, the various environment variables refer
# to this specific profile generation.

export PATH="${GUIX_PROFILE:-/gnu/store/lz99sh2a2kgcxb7wr5lf2vk9yzwb9lmm-profile}/bin${PATH:+:}$PATH"
export EMACSLOADPATH="${GUIX_PROFILE:-/gnu/store/lz99sh2a2kgcxb7wr5lf2vk9yzwb9lmm-profile}/share/emacs/site-lisp:${GUIX_PROFILE:-/gnu/store/lz99sh2a2kgcxb7wr5lf2vk9yzwb9lmm-profile}/share/emacs/27.0.50/lisp${EMACSLOADPATH:+:}$EMACSLOADPATH"
export INFOPATH="${GUIX_PROFILE:-/gnu/store/lz99sh2a2kgcxb7wr5lf2vk9yzwb9lmm-profile}/share/info${INFOPATH:+:}$INFOPATH"

OK, I saw some notes about guile-ssh and decided to install it. It seems like guix adds GUILE_LOAD vars only when you install some guile libs.

Toggle snippet (17 lines)
[aabramov@minion100 ~]$ guix package -l
Generation 1 Mar 09 2020 22:22:03
glibc-locales 2.29 out /gnu/store/03nvilh2x4z07dxv7h13gh986vvgpnsf-glibc-locales-2.29

Generation 2 Mar 09 2020 22:28:46
+ emacs-next 27.0.50-0.36abf68 out /gnu/store/61bwd5sn4s25lm2m9shbrja5d6z1d17y-emacs-next-27.0.50-0.36abf68

Generation 3 Mar 15 2020 16:54:24
+ sshuttle 0.78.5 out /gnu/store/13s2jadhdvpk99mnkf6y1r42mamijzrd-sshuttle-0.78.5

Generation 4 Mar 15 2020 17:56:00
+ guile 2.2.7 out /gnu/store/jgl9d4axpavsv83z2f1z1himnkbsxxqj-guile-2.2.7

Generation 5 Mar 15 2020 18:02:58 (current)
+ guile-ssh 0.12.0 out /gnu/store/qqpigisk01ivzvb9pyi4d4d6v5p6djzw-guile-ssh-0.12.0

So now I have all the vars in place, but the copy command still complains:

Toggle snippet (13 lines)
aabramov@delta:~/factory/guix$ ssh minion100 env | grep GUILE_
GUILE_LOAD_PATH=/home/aabramov/.guix-profile/share/guile/site/2.2
GUILE_LOAD_COMPILED_PATH=/home/aabramov/.guix-profile/lib/guile/2.2/site-ccache

aabramov@delta:~/factory/guix$ guix copy --from=minion100 hello
guix copy: error: Guile modules not found on remote host 'minion100'
hint: Make sure `GUILE_LOAD_PATH' includes Guix' own module directory. Run `ssh minion100 env | grep GUILE_LOAD_PATH' to check.

aabramov@delta:~/factory/guix$ guix copy --to=minion100 hello
sending 1 store item (0 MiB) to 'minion100'...
guix copy: error: unknown error while sending files over SSH

Finally guix installation does the trick:

Toggle snippet (17 lines)
aabramov@delta:~/factory/guix$ guix offload test
guix offload: testing 1 build machines defined in '/etc/guix/machines.scm'...
guix offload: Guix is usable on 'minion100' (test returned "/gnu/store/883yjkl46dxw9mzykykmbs0yzwyxm17z-test")
guix offload: 'minion100' is running GNU Guile 2.2.6
sending 1 store item (0 MiB) to 'minion100'...
exporting path `/gnu/store/9lj51ppm9a92yfk7jxpv4vjqpcpbcxh6-export-test'
guix offload: 'minion100' successfully imported '/gnu/store/9lj51ppm9a92yfk7jxpv4vjqpcpbcxh6-export-test'
retrieving 1 store item from 'minion100'...
guix offload: successfully imported '/gnu/store/877wz9nrnpk8zljj8gzvvlnpwlg01240-import-test' from 'minion100'
aabramov@delta:~/factory/guix$ guix copy --to=minion100 hello
sending 1 store item (0 MiB) to 'minion100'...
/gnu/store/kg9mirg6xbvzcp0a98v7326n1nvvwgsj-hello-2.10
aabramov@delta:~/factory/guix$ guix copy --from=minion100 hello
retrieving 0 store items from 'minion100'...


--
Alexey
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 40082@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 40082
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch