Subject: bug#20217: closed (Re: bug#20217: Allow users to use the daemon's default settings)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 15 Jan 2017 14:58:02 +0000

Your bug report

#20217: Allow users to use the daemon's default settings

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
20217: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20217
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#20217: Allow users to use the daemon's default settings
From: [email-masked] (Ludovic Courtès)
To: [email-masked]
Date: Sun, 15 Jan 2017 15:57:13 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

[email-masked] (Ludovic Courtès) skribis:

> [email-masked] (Ludovic Courtès) skribis:
>
>> Mark H Weaver <[email-masked]> skribis:
>>
>>> Ludovic Courtès <[email-masked]> writes:
>>>
>>>> commit 4d58122071bbd7bb56c9658a9bbe7621bf3e423d
>>>> Author: Ludovic Courtès <[email-masked]>
>>>> Date:   Sun Mar 22 23:43:25 2015 +0100
>>>>
>>>>     store: Default to a non-empty list of substituters.
>>>>     
>>>>     Fixes <http://bugs.gnu.org/20163>.
>>>>     Reported by Mark H Weaver <[email-masked]>.
>>>>     
>>>>     * guix/store.scm (%default-substitute-urls): New variable.
>>>>       (set-build-options): Change default value of #:substitute-urls to
>>>>       %DEFAULT-SUBSTITUTE-URLS.
>>
>> [...]
>>
>>> Does this mean that even if I've configured my daemon to use a different
>>> set of substitute-urls, when I run 'guix' as root those settings will be
>>> overridden?
>>
>> Yes.
>
> This particular issue of substitute URLs is fixed in fb4bf72.
>
> The more general problem remains though: for all the other options, like
> max-build-jobs, timeout, etc., the client settings take precedence over
> the daemon settings because the ‘set-build-options’ RPC doesn’t provide
> a way to say “use default value.”

Fixed in commit deac976d3d26c7b85b9c90efb424b0aa94f1027c (at last!) by
moving max-build-jobs, build-cores, and max-silent-time to the optional
key/value option list at the end of ‘set-build-options’.

Ludo’.

Subject: Allow users to use the daemon's default settings
From: [email-masked] (Ludovic Courtès)
To: [email-masked]
Date: Sat, 28 Mar 2015 15:36:19 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

The message below from guix-devel says it all.

Ludo’.

Subject: Using the daemon’s default settings
From: [email-masked] (Ludovic Courtès)
To: Mark H Weaver <[email-masked]>
Cc: [email-masked]
Date: Mon, 23 Mar 2015 22:11:17 +0100
List-Id: "Development of GNU Guix and the GNU System distribution." <guix-devel.gnu.org>

Mark H Weaver <[email-masked]> skribis:

> Ludovic Courtès <[email-masked]> writes:
>
>> commit 4d58122071bbd7bb56c9658a9bbe7621bf3e423d
>> Author: Ludovic Courtès <[email-masked]>
>> Date:   Sun Mar 22 23:43:25 2015 +0100
>>
>>     store: Default to a non-empty list of substituters.
>>     
>>     Fixes <http://bugs.gnu.org/20163>.
>>     Reported by Mark H Weaver <[email-masked]>.
>>     
>>     * guix/store.scm (%default-substitute-urls): New variable.
>>       (set-build-options): Change default value of #:substitute-urls to
>>       %DEFAULT-SUBSTITUTE-URLS.

[...]

> Does this mean that even if I've configured my daemon to use a different
> set of substitute-urls, when I run 'guix' as root those settings will be
> overridden?

Yes.

> That seems suboptimal.

Right.

> We have a similar problem with the values of --cores and --max-jobs
> passed to guix-daemon being ignored because they are always overridden
> by our client.

Indeed.

> How can we fix these so that the daemon's settings are used unless the
> user specifically asks to override them in the client?

If you look at nix-daemon.cc:543, there’s currently no way for a client
to say “default value.”  The only way for a client to get the daemon’s
default values is to not call the ‘set-build-options’ RPC at all; it’s
all or nothing.

I think the way forward would be to add a new RPC, say
‘set-build-options2’, that would take a list of key/value pairs, where
keys are option names.  Options not mentioned in a ‘set-build-options2’
call would keep their default value.

How does that sound?

Thanks,
Ludo’.