Subject: [bug#30948] [PATCH core-updates] guix: Reap finished child processes in build containers.

From: Carlo Zancanaro <[email-masked]>
Date: Fri, 30 Mar 2018 08:15:51 +1100

Hey Ludo,

On Thu, Mar 29 2018, Ludovic Courtès wrote:
> I would rather install the handler as a phase in 
> gnu-build-system: this leaves ‘build-expression->derivation’ 
> generic, and also gives us more flexibility (e.g., we can 
> disable that phase without doing a full rebuild if needed.)  See 
> the patch below.
>
> WDYT?

What do you mean by "generic"? From what I can understand it's one 
of pid 1's responsiblities to reap child processes, so I would 
expect this to be set up for every builder, before the builder is 
run. Given it's not specific to the gnu-build-system, I don't 
think it really fits there.

> On my first attempt with:
>
>   ./pre-inst-env guix build -e '(@@ (gnu packages commencement) 
>   findutils-boot0)'
>
> quickly failed:
>
> ...
>
> This is why ‘install-SIGCHLD-handler’ in the patch does nothing 
> on Guile <= 2.0.9.

From what I understand, Guix depends on Guile 2.0.13 or later, so 
I didn't think it needed to work with 2.0.9. From my quick check, 
though, our bootstrap binaries are Guile 2.0.9? I can see how that 
might cause a problem. In what sense does Guix require 2.0.13 (as 
the manual claims) rather than 2.0.9?

> Now, we’d need to test it for real with Guile 2.2.  I suppose 
> one way to
> test without rebuilding it all would be to add this phase 
> explicitly in
> a package and try building it with --rounds=10 or something. 
> Would you
> like to try that?

Yeah, I'll give it a go.

Carlo