From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Subject: Re: Building Bash with Geesh Date: Fri, 07 Dec 2018 23:21:24 +0100 Message-ID: <87sgz9asgr.fsf@gnu.org> References: <87pnudwdda.fsf@ngyro.com> <87o99xp8mh.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:44645) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVOV3-0005OO-3k for guix-devel@gnu.org; Fri, 07 Dec 2018 17:21:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVOV2-0008Im-4i for guix-devel@gnu.org; Fri, 07 Dec 2018 17:21:33 -0500 In-Reply-To: <87o99xp8mh.fsf@gnu.org> (Jan Nieuwenhuizen's message of "Fri, 07 Dec 2018 18:08:38 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Jan Nieuwenhuizen Cc: guix-devel@gnu.org Hello Timothy & Jan! You folks are amazing! Jan Nieuwenhuizen skribis: >> Over the last year, I built Geesh , >> which is a simple Shell interpreter written in Guile Scheme. As of the >> other day, it is capable enough to build Bash! > > That is just amazing, congrats! Indeed, that=E2=80=99s a major achievement! >> =E2=80=A2 It requires Guile 2.2, while (I assume) the current bootst= rap >> Guile is version 2.0; > > That should be OK too, I'll leave Ludo' to comment on this, but Gash > also needs Guile 2.2; on my Guix wip-bootstrap branch I already upgraded > Guile. Which parts of 2.2 that 2.0 lacks does it need? PEG? Overall I=E2=80=99m in favor of changing the bootstrap seeds as rarely as possible. Also, if our horizon is a full Scheme bootstrap has Jan proposed (and I think that=E2=80=99s a great plan!), then perhaps we=E2=80= =99ll have to arrange to not rely on fancy Guile features in build-side code meant to run early on during bootstrap. So far it was easy to keep (guix build =E2= =80=A6)=20 valid for both 2.2 and 2.0, but these are simple modules; I don=E2=80=99t k= now whether that=E2=80=99s reasonably feasible for more complex pieces of softw= are like Geesh and Gash. All that said, the benefit of removing Bash from the seeds may well outweigh the =E2=80=9Ccost=E2=80=9D of upgrading to Guile 2.2. >> Of these, I think fixing the first two will be trivial, while fixing the >> third will require a bit of work (though hopefully not too much). Once >> these things are done, we will be pretty close to being able to retire >> the =E2=80=9Ccoreutils&co=E2=80=9D bootstrap binary. We certainly could= make it a lot >> smaller. (AFAIK, we are still missing a few things, but Jan knows >> better than I do.) > > Just yesterday, I managed to build a minimal bash and make using Gash > and a very simple boot script, so without coreutils&co. A Scheme-only > bootstrap is coming closer... Woohoo! >> You may be thinking at this point, =E2=80=9Cwhat about Gash?=E2=80=9D (= For those who >> don=E2=80=99t know, Gash is also a Shell interpreter written in Guile >> .) The Gash folks and I have been >> thinking for a while about the best way to share work and combine >> efforts. > > Yeah...Gash has an option to use the Geesh LALR parser, however it's not > very well integrated (in fact I fear that the integration may have > bitrotted). > > I think we should either cherry-pick eachother's goodies for a while, or > somehow merge into one project that has two parsers (LALR and PEG), or > spawn a new Guile library that provides the backend (the core-utils and > co). It's a real interesting puzzle. WDYT? It=E2=80=99d be great if both projects could converge; there=E2=80=99ll sti= ll be plenty of challenges to satisfy your playfulness anyway. :-) (Like, say, a shell=E2=86=92tree-il front-end, hint hint ;-)). That said I can imagine it=E2=80=99s not that easy and maybe also less fun = but it would help the longer-term goal of building a solid foundation for bootstrapped distros. Anyway, kudos on these achievements! I guess we at least need Geesh and Gash packages now! :-) Ludo=E2=80=99.