From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:56554) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1izLki-00053o-By for guix-patches@gnu.org; Wed, 05 Feb 2020 09:34:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1izLkg-0006FM-PP for guix-patches@gnu.org; Wed, 05 Feb 2020 09:34:04 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:39283) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1izLkg-0006Eh-KE for guix-patches@gnu.org; Wed, 05 Feb 2020 09:34:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1izLkg-0002yL-DA for guix-patches@gnu.org; Wed, 05 Feb 2020 09:34:02 -0500 Subject: [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils Resent-Message-ID: From: Timothy Sample References: <87lfpj7etb.fsf@ngyro.com> <875zgltnp1.fsf@gnu.org> Date: Wed, 05 Feb 2020 09:32:59 -0500 In-Reply-To: <875zgltnp1.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Wed, 05 Feb 2020 09:58:50 +0100") Message-ID: <87sgjpqf38.fsf@ngyro.com> 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: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 38390@debbugs.gnu.org, Jan Nieuwenhuizen Hello, Ludovic Court=C3=A8s writes: > Timothy Sample skribis: > > [...] > >> So I put the program and all its dependencies in an a-list with a >> little loop that writes them to disk, and made a self-extracting >> Scheme script that can unpack compressed tarballs [2]. > > Woow, that is very nice! So all of a sudden there=E2=80=99s an extra bun= ch of > binary seeds we can get rid of, woohoo! I didn=E2=80=99t expect that eve= n bzip2 > and xz would be implemented. I don=E2=80=99t think we could get rid of any binaries just yet. We need G= uile to run Bootar and we can=E2=80=99t get Guile without the statically linked =E2=80=9Ctar=E2=80=9D, =E2=80=9Cxz=E2=80=9D, =E2=80=9Cmkdir=E2=80=9D, and = =E2=80=9Cbash=E2=80=9D. This just removes some references to them. Although, it occurred to me that we could get something like Bootar (perhaps further simplified) to run on Mes, in which case we could use a statically linked Mes to unpack and wrap Guile. That would let us get rid of =E2=80=9C%bootstrap-executables=E2=80=9D. (Note however = that I tried running Bootar in Mes for fun, and the extractor script =E2=80=93 once it w= as simplified =E2=80=93 caused a segfault.) BZip2 and XZ just barely work, by the way. I implemented BZip2, but I skipped over all the CRC checking. XZ has a bug when called with input from stdin, which is how Gash-Utils tries to call it. >> [2] https://git.ngyro.com/bootar/ > > Clean, short, and elegant; brilliant! Thanks! >> [...] >> >> WDYT? > > I think it=E2=80=99s perfect. \o/ > One comment that can be addressed later: > >> From 2cec50928a4ff67df363322d2adfb6aaa5aedc83 Mon Sep 17 00:00:00 2001 >> From: Timothy Sample >> Date: Mon, 3 Feb 2020 10:51:07 -0500 >> Subject: [PATCH 2/3] Simplify bootstrap Gash and Gash-Utils. >> >> This change does three things. First Gash-Utils is updated to >> 0.1.0-preview. Then, the bootstrap Gash and Gash-Utils packages are >> arranged to be built without using 'guild'. Finally, instead of >> using a binary 'tar' via 'bootstrap-executable' to extract Gash and >> Gash-Utils, a self-extracting Scheme implementation of 'tar' and >> 'gzip' is used instead. > > [...] > >> +(define (make-bootstrap-phases version scripts modules) >> + "Create a form that modifies the standard GNU build phases so that >> +they build simple Guile programs using only the bootstrap Guile. The >> +'.in' files in the directory MODULES are configured with VERSION, the >> +'.in' files in the directory SCRIPTS are configured with the bootstrap >> +Guile and its module and object directories, and the Scheme files in the >> +directory MODULES are compiled and installed." >> + `(modify-phases %standard-phases >> + (replace 'configure > > Should this be factorized out in a (guix build gnu-bootstrap) module or > similar? That would keep build-side code separate and would avoid > making =E2=80=98commencement.scm=E2=80=99 bigger. I would be happy to do that. It=E2=80=99s nice having everything in one pl= ace, but having a bootstrap build system would certainly make the packages clearer. I suppose it could also get rid of the implicit inputs for us and use =E2=80=9C%bootstrap-guile=E2=80=9D by default. > I guess the only thing that remains to be done is changing the temporary > URLs to the self-extracting script & co., right? Yup. I=E2=80=99ll release both packages soon. > Thanks a lot! My pleasure! -- Tim