From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33542) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f1pDe-0000DQ-Ek for guix-patches@gnu.org; Fri, 30 Mar 2018 04:17:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f1pDa-0003e2-EX for guix-patches@gnu.org; Fri, 30 Mar 2018 04:17:06 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:51443) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f1pDa-0003dy-B3 for guix-patches@gnu.org; Fri, 30 Mar 2018 04:17:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1f1pDa-0000iu-5S for guix-patches@gnu.org; Fri, 30 Mar 2018 04:17:02 -0400 Subject: [bug#30948] [PATCH core-updates] guix: Reap finished child processes in build containers. Resent-Message-ID: From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) References: <87muyvulwt.fsf@zancanaro.id.au> <87bmf6ve6u.fsf@gnu.org> <87sh8id1mg.fsf@zancanaro.id.au> Date: Fri, 30 Mar 2018 10:16:39 +0200 In-Reply-To: <87sh8id1mg.fsf@zancanaro.id.au> (Carlo Zancanaro's message of "Fri, 30 Mar 2018 08:15:51 +1100") Message-ID: <87vadeou54.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Carlo Zancanaro Cc: 30948@debbugs.gnu.org Heya, Carlo Zancanaro skribis: > On Thu, Mar 29 2018, Ludovic Court=C3=A8s wrote: >> I would rather install the handler as a phase in gnu-build-system: >> this leaves =E2=80=98build-expression->derivation=E2=80=99 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"? I want as little magic as possible around the expression that=E2=80=99s pas= sed to =E2=80=98build-expression->derivation=E2=80=99. > 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. True, but for derivations it=E2=80=99s also =E2=80=9Coptional=E2=80=9D beca= use eventually guix-daemon terminates all its child processes. > Given it's not specific to the gnu-build-system, I don't think it > really fits there. Yes, but note that it would be inherited by all the build systems. >> On my first attempt with: >> >> ./pre-inst-env guix build -e '(@@ (gnu packages commencement) >> findutils-boot0)' >> >> quickly failed: >> >> ... >> >> This is why =E2=80=98install-SIGCHLD-handler=E2=80=99 in the patch does = nothing on >> Guile <=3D 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? Exactly. > 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? There=E2=80=99s the =E2=80=9Chost side=E2=80=9D (the =E2=80=98guix=E2=80=99= commands and related modules), and there=E2=80=99s the =E2=80=9Cbuild side=E2=80=9D (code used in the build en= vironment when building derivations.) The =E2=80=9Cbuild side=E2=80=9D is fully specified: =E2=80=98guix graph=E2= =80=99 shows exactly what Guile is used where, and you can see with, say: guix graph -t derivation \ -e '(@@ (gnu packages commencement) findutils-boot0)' that the early derivations run on Guile 2.0.9. For =E2=80=9Chost side=E2=80=9D code, users can use any Guile >=3D 2.0.13. See also . I hope this clarifies a bit! Ludo=E2=80=99.