Subject: bug#27157: [PATCH] Re: bug#27157: Building Guile 2.2 "times out"

From: [email-masked] (Ludovic Courtès)
Date: Sat, 03 Jun 2017 23:37:55 +0200

Maxim Cournoyer <[email-masked]> skribis:

> [email-masked] (Ludovic Courtès) writes:
>
>> Maxim Cournoyer <[email-masked]> skribis:
>>
>>> Guix build doesn't come with default option value for the
>>> max-silent-time, but guix environment does, and it is set to 3600
>>> s. This is defined under (guix scripts environment):
>>>
>>> (define %default-options
>>>   `((system . ,(%current-system))
>>>     (substitutes? . #t)
>>>     (graft? . #t)
>>>     (max-silent-time . 3600)
>>>     (verbosity . 0)))
>>>
>>> If this is by design, I guess this issue can be closed.
>>
>> Good catch!
>>
>> However, according to ‘set-build-options’ in (guix store),
>> #:max-silent-time #f is equivalent to #:max-silent-time 3600.
>
> IIUC, this should only be true when (< (nix-server-minor-version
> server) #x61), as can be seen in (guix store):
>
>     (when (< (nix-server-minor-version server) #x61)
>       (let ((max-build-jobs (or max-build-jobs 1))
>             (xomax-silent-time (or max-silent-time 3600)))
>         (send (integer max-build-jobs) (integer max-silent-time))))

Oooh, indeed, sorry for the confusion.  So what happens when
#:max-silent-time is #f is that we use the daemon’s default value, which
is infinite (zero) by default (see libstore/globals.cc).

> Given that the the nix worker protocole PROTOCOL_VERSION was bumped to
> 0x161 in commit deac976d3d26c7b85b9c90efb424b0aa94f1027c last January, I
> would *not* expect this condition to be evaluated.
>
> By the way, I find it weird that these conditions be expressed in terms
> of the minor version number only. The correctness of those is thus only
> guaranteed as long as the major number version is not bumped; this seems
> unwise.

Historical baggage: the major number was never bumped, I think.  :-)
You’re right though.

>> At any rate, it would be good to remove ‘max-silent-time’ from all the
>> ‘%default-options’ variables, for consistency.
>>
>> Ludo’.
>
> I agree! In my view, interactive user commands should expect the users
> to take action themselves (e.g.; user notice no output for 3 hours; hits
> C-c. Or, user notice no output for 3 hours, check the process in top,
> sees it's still doing something, decides to leave it running a couple
> more hours).

Yes.  Would you like to prepare a patch to remove ‘max-silent-time’ from
all the ‘%default-options’?

In the meantime I’ll add --timeout and --max-silent-time as options to
guix-daemon.

Thanks!

Ludo’.