Subject: Re: bug#46756: guix deploy not copying remote-gexp.scm
From: Ludovic Courtès <[email-masked]>
To: Maxim Cournoyer <[email-masked]>
Cc: Katherine Cox-Buday <[email-masked]>, pkill9 <[email-masked]>, [email-masked]
Date: Thu, 28 Oct 2021 00:51:04 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi!

Maxim Cournoyer <[email-masked]> skribis:

> I get this as well.  Here's the backtrace:
>
>  In ice-9/boot-9.scm:
>    1731:15 19 (with-exception-handler #<procedure 7fb17c1e8870 at ice-9/boot-9.scm:1815:7 (exn)> _ # _ # …)
>  In guix/status.scm:
>      793:4 18 (call-with-status-report _ _)
>  In ice-9/boot-9.scm:
>    1736:10 17 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
>  In guix/store.scm:
>     636:37 16 (thunk)
>     1305:8 15 (call-with-build-handler _ _)
>     1305:8 14 (call-with-build-handler _ _)
>     1305:8 13 (call-with-build-handler _ _)
>     1305:8 12 (call-with-build-handler #<procedure 7fb17922a3f0 at guix/ui.scm:1171:2 (continue store …> …)
>  In guix/scripts/deploy.scm:
>     170:14 11 (_)
>  In guix/store.scm:
>     1346:2 10 (map/accumulate-builds #<store-connection 256.99 7fb179220870> _ _)
>  In srfi/srfi-1.scm:
>     586:17  9 (map1 (#<<unresolved> things: (("/gnu/store/7hj8kbsqkm3qcpd8dyayx1c53r59ma2v-guile-3.0.2…>))
>  In guix/store.scm:
>     1305:8  8 (call-with-build-handler #<procedure build-accumulator (continue store things mode)> _)
>  In ice-9/boot-9.scm:
>    1736:10  7 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
>  In guix/scripts/deploy.scm:
>      144:6  6 (_)
>  In guix/store.scm:
>    2066:24  5 (run-with-store #<store-connection 256.99 7fb179220870> _ #:guile-for-build _ #:system _ # …)
>  In gnu/machine/ssh.scm:
>      450:6  4 (_ _)
>  In guix/remote.scm:
>      86:17  3 (_ _)
>  In ice-9/boot-9.scm:
>    1669:16  2 (raise-exception _ #:continuable? _)
>    1669:16  1 (raise-exception _ #:continuable? _)
>    1669:16  0 (raise-exception _ #:continuable? _)
>
>  ice-9/boot-9.scm:1669:16: In procedure raise-exception:
>  ERROR:
>    1. &inferior-exception:
>        arguments: (system-error "open-file" "~A: ~S" ("No such file or directory" "/gnu/store/4q0sl8b1wg6nwiiz6xzhy8iskmyc43gv-remote-exp.scm") (2))
>        inferior: #f
>        stack: ()
>
> As a workaround, one can build the machine's profile locally (the
> default, so by removing (build-locally? #f) or setting the value to #t
> in the machines' machine-ssh-configuration).  That's not satisfying

I believe this is fixed by b19250eec6f92308f237a09a43e8e3e2355345b9,
lemme know!

Following our discussion on IRC, I noticed that derivations would
actually be built locally, and thus their output (‘remote-exp.scm’
above) would not be found.

Why are they getting built locally?  Because ‘guix deploy’ installs a
build handler.  Thus, when ‘remote-eval’ makes this call:

  (build-derivations remote inputs)

the build handler kicks in and starts building locally rather than on
‘remote’.  In fact, that’s more of a bug in ‘build-accumulator’ in (guix
store); it should check whether it’s talking to the right store.

Thanks,
Ludo’.