diff mbox

[bug#36162,0/4] Add 'remote-eval'

Message ID 87zhmmvrwg.fsf@gnu.org
State Accepted
Headers show

Commit Message

Ludovic Courtès June 12, 2019, 1:45 p.m. UTC
zerodaysfordays@sdf.lonestar.org (Jakob L. Kreuze) skribis:

> zerodaysfordays@sdf.lonestar.org (Jakob L. Kreuze) writes:
>
>> Wow, this is great! It seems like this patch series is implementing a
>> number of things I'd been wishing I could just import from some other
>> Guix module. I'm signing off for the night, but I'll apply this tomorrow
>> and give you some feedback.
>
> It seems this breaks 'operating-system-derivation'.

[...]

> In guix/derivations.scm:
>    597:28  0 (derivation->output-path #f _)

Oops!  The patch below fixes it.

Let me know if you find other issues.  Thanks for testing!

Ludo’.

Comments

Jakob L. Kreuze June 12, 2019, 3:12 p.m. UTC | #1
Ludovic Courtès <ludo@gnu.org> writes:

> Let me know if you find other issues. Thanks for testing!

This fixes the test suite, but I'm having an issue with 'remote-eval'
now. A G-Expression with no inputs such as

#+BEGIN_SRC scheme
(mlet %store-monad ((result (remote-eval #~(begin (string-append "Hello, " "world!"))
                             (ssh-session machine))))
  (display result)
  (newline))
#+END_SRC

results in the following error:

#+BEGIN_SRC
Backtrace:
          13 (apply-smob/1 #<catch-closure 1954a20>)
In ice-9/boot-9.scm:
    705:2 12 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8 11 (_ #(#(#<directory (guile-user) 19d2140>)))
In guix/ui.scm:
  1747:12 10 (run-guix-command _ . _)
In guix/store.scm:
   623:10  9 (call-with-store _)
In srfi/srfi-1.scm:
    640:9  8 (for-each #<procedure 5fe5600 at guix/scripts/deploy.s…> …)
In guix/scripts/deploy.scm:
    84:20  7 (_ _)
In guix/store.scm:
  1794:24  6 (run-with-store _ _ #:guile-for-build _ #:system _ # _)
In unknown file:
           5 (_ #<procedure 5ff43c0 at ice-9/eval.scm:330:13 ()> #<…> …)
In guix/remote.scm:
   116:10  4 (_ _)
In guix/store.scm:
  1690:38  3 (_ #<store-connection 256.99 5da0960>)
In guix/derivations.scm:
   987:22  2 (build-derivations #<store-connection 256.99 5da0960> # _)
In srfi/srfi-1.scm:
   592:17  1 (map1 ((#<derivation /gnu/store/16c8c8hm1qdn6xz…> . #) …))
In guix/derivations.scm:
   987:27  0 (_ _)

guix/derivations.scm:987:27: Throw to key `match-error' with args `("match" "no matching pattern" (#<derivation /gnu/store/16c8c8hm1qdn6xz8014939mirc7c4d4j-guile-2.2.4.drv => /gnu/store/cz91c7nvg7495vacv44bxmqnn8sha3cb-guile-2.2.4-debug /gnu/store/r658y3cgpnf99nxjxqgjiaizx20ac4k0-guile-2.2.4 47e69b0> . "out"))'.
#+END_SRC

Regards,
Jakob
Ludovic Courtès June 13, 2019, 11:09 a.m. UTC | #2
Hi,

zerodaysfordays@sdf.lonestar.org (Jakob L. Kreuze) skribis:

> In guix/derivations.scm:
>    987:22  2 (build-derivations #<store-connection 256.99 5da0960> # _)
> In srfi/srfi-1.scm:
>    592:17  1 (map1 ((#<derivation /gnu/store/16c8c8hm1qdn6xz…> . #) …))
> In guix/derivations.scm:
>    987:27  0 (_ _)
>
> guix/derivations.scm:987:27: Throw to key `match-error' with args `("match" "no matching pattern" (#<derivation /gnu/store/16c8c8hm1qdn6xz8014939mirc7c4d4j-guile-2.2.4.drv => /gnu/store/cz91c7nvg7495vacv44bxmqnn8sha3cb-guile-2.2.4-debug /gnu/store/r658y3cgpnf99nxjxqgjiaizx20ac4k0-guile-2.2.4 47e69b0> . "out"))'.

I think that’s because you’re on an older Guix, which lacks commit
f8a9f99cd602ce1dc5307cb0c21ae718ad8796bb.

HTH!

Ludo’.
Jakob L. Kreuze June 13, 2019, 1:18 p.m. UTC | #3
Ludovic Courtès <ludo@gnu.org> writes:

> I think that’s because you’re on an older Guix, which lacks commit
> f8a9f99cd602ce1dc5307cb0c21ae718ad8796bb.

Guess I let my feature branch go a little stale. Fetched from upstream
and it works now :)  I'll have a go at reimplementing 'deploy-os' and
let you know if I run into any other issues.
Jakob L. Kreuze June 13, 2019, 4:17 p.m. UTC | #4
zerodaysfordays@sdf.lonestar.org (Jakob L. Kreuze) writes:

> Guess I let my feature branch go a little stale. Fetched from upstream
> and it works now :) I'll have a go at reimplementing 'deploy-os' and
> let you know if I run into any other issues.

Works like a charm! There's more code for me to clean up, but we've got
a preliminary reimplementation of 'deploy-os' using your 'remote-eval'.
Pushed it to my personal branch if you'd like to take a look.

  https://git.sr.ht/~jakob/guix/commit/ca8e7b77cef4a60e9d820d6ae05b8b59f64b4f23

Thanks again for implementing this!

Regards,
Jakob
Ludovic Courtès June 14, 2019, 11:20 a.m. UTC | #5
Hi Jakob,

zerodaysfordays@sdf.lonestar.org (Jakob L. Kreuze) skribis:

> zerodaysfordays@sdf.lonestar.org (Jakob L. Kreuze) writes:
>
>> Guess I let my feature branch go a little stale. Fetched from upstream
>> and it works now :) I'll have a go at reimplementing 'deploy-os' and
>> let you know if I run into any other issues.
>
> Works like a charm! There's more code for me to clean up, but we've got
> a preliminary reimplementation of 'deploy-os' using your 'remote-eval'.
> Pushed it to my personal branch if you'd like to take a look.
>
>   https://git.sr.ht/~jakob/guix/commit/ca8e7b77cef4a60e9d820d6ae05b8b59f64b4f23

Woow, that was fast!  It looks good, and the patch removes a few lines
of code, which is always nice.  :-)

I’ll push the ‘remote-eval’ things shortly.  There’s certainly a few
things we can improve, and one of them is progress report: there’s
currently no call to ‘show-what-to-build’, and that’s obviously not
great.

Thank you for the great feedback!

Ludo’.
Christine Lemmer-Webber June 30, 2019, 1:24 p.m. UTC | #6
Ludovic Courtès writes:

> I’ll push the ‘remote-eval’ things shortly.  There’s certainly a few
> things we can improve, and one of them is progress report: there’s
> currently no call to ‘show-what-to-build’, and that’s obviously not
> great.

Hi Ludo'!

It looks like Jakob's code is nearing the point where we can merge it
into Guix proper.  I'd like to get in the "guix deploy" stuff as soon as
it's good enough to merge.  Would you mind pushing up your remote-eval
stuff, if you're confident enough to do so, since it's a preliminary
requirement for "guix deploy"?
Ludovic Courtès July 4, 2019, 4:22 p.m. UTC | #7
Hello!

Christopher Lemmer Webber <cwebber@dustycloud.org> skribis:

> It looks like Jakob's code is nearing the point where we can merge it
> into Guix proper.  I'd like to get in the "guix deploy" stuff as soon as
> it's good enough to merge.  Would you mind pushing up your remote-eval
> stuff, if you're confident enough to do so, since it's a preliminary
> requirement for "guix deploy"?

I finally went ahead and pushed it, after adding a note about the
instability of the API.  :-)

I think ‘remote-eval’ shouldn’t change much, but I’m not fully satisfied
with ‘lower-gexp’ in that it’s a bit too redundant with <derivation>
etc.  I couldn’t turn that vague feeling into actual code changes
though, so I’ll keep looking at it in the background, and it shouldn’t
have any impact on how ‘guix deploy’ uses ‘remote-eval’.

Apologies for the delay!

Ludo’.
diff mbox

Patch

diff --git a/guix/gexp.scm b/guix/gexp.scm
index 38f64db7f1..ab29c2494e 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -720,7 +720,7 @@  derivations--e.g., code evaluated for its side effects."
                                                        #:system system
                                                        #:module-path module-path
                                                        #:extensions extensions
-                                                       #:guile guile-for-build
+                                                       #:guile guile
                                                        #:pre-load-modules?
                                                        pre-load-modules?
                                                        #:deprecation-warnings
@@ -746,7 +746,7 @@  derivations--e.g., code evaluated for its side effects."
                                     '())
                               ,@(map gexp-input exts)
                               ,@inputs)
-                            guile-for-build
+                            guile
                             load-path
                             load-compiled-path)))))