Subject: Re: [bug#36555] [PATCH 1/2] guix system: Add 'reconfigure' module.

From: Ludovic Courtès <[email-masked]>
Date: Mon, 15 Jul 2019 18:32:55 +0200

[email-masked] (Jakob L. Kreuze) skribis:

> Ludovic Courtès <[email-masked]> writes:

[...]

>> In the meantime, what about this patch?
>>
>> diff --git a/guix/remote.scm b/guix/remote.scm
>> index e503c76167..8ada5c0957 100644
>> --- a/guix/remote.scm
>> +++ b/guix/remote.scm
>> @@ -76,8 +76,14 @@ result to the current output port using the (guix repl) protocol."
>>    (with-imported-modules (source-module-closure '((guix repl)))
>>      #~(begin
>>          (use-modules (guix repl))
>> -        (send-repl-response '(primitive-load #$program)
>> +
>> +        ;; We use CURRENT-OUTPUT-PORT for REPL messages, so redirect PROGRAM's
>> +        ;; output to CURRENT-ERROR-PORT so that it does not interfere.
>> +        (send-repl-response '(with-output-to-port (current-error-port)
>> +                               (lambda ()
>> +                                 (primitive-load #$program)))
>>                              (current-output-port))
>> +
>>          (force-output))))
>>  
>>  (define* (remote-eval exp session
>
> LGTM, thanks!

Cool, pushed as 6f8eb9f1d8bc8660349658602698db36965bba5d.

>> ‘live-service-requirement’ gives you the graph of the currently loaded
>> services, but you also need the target service graph to determine what
>> to upgrade; that seems to be missing currently.
>
> Oh, good catch. Reusing 'shepherd-service-upgrade' is certainly the way
> to go, then.

I think so, which brings us back to the need to de-monadify (guix graph).
:-)

Ludo’.