Hello! The ‘wip-guile-ssh’ branch is finally getting into shape. As soon as a new Guile-SSH release is out, I’ll merge it on master.
The goal of this branch is to use Guile-SSH (libssh bindings) instead of invoking ‘lsh’ when offloading builds (see <https://www.gnu.org/software/guix/manual/html_node/Daemon-Offload-Setup.html> for background.) The new code is shorter(!), more efficient, more elegant, and hopefully more reliable. The efficiency gains come from the fact that we can reuse SSH sessions in an intelligent way. The elegance has to do with the fact that we have direct access to the SSH API, as opposed to invoking ‘lsh’ and checking its exit status. Improved reliability (well, modulo new bugs ;-)) comes from the fact that we open a direct connection to the remote guix-daemon for the duration of the offload, which allows us to better control GC root registration—we can use the ‘add-temp-root’ RPC directly instead of writing indirect root files in $HOME. Before we put it in production on hydra.gnu.org :-), I’d welcome more testing! To do that you need a current Guile-SSH (with the ‘channel-send-eof!’ procedure), and the ‘build-machine’ form is slightly different than before: it has a new ‘host-key’ field to contain the OpenSSH-formatted host key of the machine. I’ve updated the doc to reflect that. Feedback welcome! Ludo’.