From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id yGqtLuwUN2K6aQAAgWs5BA (envelope-from ) for ; Sun, 20 Mar 2022 12:50:04 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id +JkkK+wUN2KhggEAauVa8A (envelope-from ) for ; Sun, 20 Mar 2022 12:50:04 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 5BFBD37C67 for ; Sun, 20 Mar 2022 12:50:04 +0100 (CET) Received: from localhost ([::1]:42552 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nVu4R-0001av-Dw for larch@yhetil.org; Sun, 20 Mar 2022 07:50:03 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36214) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nVu2s-0001Ax-A8 for guix-devel@gnu.org; Sun, 20 Mar 2022 07:48:27 -0400 Received: from [2001:470:142:3::e] (port=51256 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nVu2q-0001el-3g; Sun, 20 Mar 2022 07:48:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=EZdoa88MZ2YCICH5HWZjwjRubgc4/Sh77WY90Deg5q8=; b=Tz359b43+iWNki7cXOOV RD6EA/VfD0b6ktEgTDamBrDMuslwuU0K03Y1K8l8vV//yOI5dhabSpqDibio5F6zDumcKcSU8O0R6 yf9d2h45jFVivm3TFnulp13jIziFYPcIVqYuzygJO7GWkKC4jlE8IEHQdRLYhKpgo/q6HsItsgkFn W8fHe8J8+g926ELXnNf48iL6+5J9FuYNZo+2GyWWumsyVr+3ZWLpu4J4lnL+n04oB5ghfs6/7+AiG y2GzTxaPN0Dre+nvBDY+LXhMM6C3oL4c8UF6hPmj7EvyeTPMnkY+IAGqPoslc3FfLROd+4eDgYxqL j94jlu2V4g/uvg==; Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=39466 helo=dundal.janneke.lilypond.org) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nVu2p-00066n-Hu; Sun, 20 Mar 2022 07:48:23 -0400 From: Jan Nieuwenhuizen To: Timothy Sample Subject: Re: [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Organization: AvatarAcademy.nl References: <87v8wg40dl.fsf@ngyro.com> X-Url: http://AvatarAcademy.nl Date: Sun, 20 Mar 2022 12:48:21 +0100 In-Reply-To: <87v8wg40dl.fsf@ngyro.com> (Timothy Sample's message of "Mon, 14 Mar 2022 16:47:50 -0600") Message-ID: <87lex426be.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: guix-devel@gnu.org Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1647777004; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=EZdoa88MZ2YCICH5HWZjwjRubgc4/Sh77WY90Deg5q8=; b=uAB9r0Dw3iZ9KObdwWoF+pVZMTK2qmYRU6yJeos/MZUj4Enjg3MJvq0qBtRgwlluR7SRXK ZI74Y0NWPMCeFng8oo3HQsEY/gQ2x6/GUkk8TTPC70aCbqGuvSM/B6GvXyBUb03E2W4JbC wWo4jtjEuRR0xpmadifi9esdfG/3VRtBSBXsDpALFlE3sbUfbV/wxJ+CwVRBYj16kY1xa8 3O51QbMD9AI0jm/9LWZDMaAVEsOnMeUFe7+pxgyKuBFD0Ohvg3p4H4D4k+uJwN2Z35u6A3 cdi/ds/SJx1J/W6T8IUl4Drz1OiGd4eieWIORItyRgG+MQKqLThR+vsCGBRjsA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1647777004; a=rsa-sha256; cv=none; b=QXjusIEKv8MhBrWv6M+Ddn4X43iQ1eAGSoKfTGJUorsIDOVA8Ulq4lw2JbMGPbMZ1Rx+tu Z2UYy6gwSHVDEmKYs3+b7UnJ3gf+YrBI/WPTz+Ub7QEQf515wVOdqmP2ZkeOkaudqRbgzP mLFQREvcdWsEIDAJ1AwhN4F34lWu5dRLkMSqnud2inVtTXgpQ43orxkp9KP3SDyoGnu+A3 f4XtZ87mZ6BFZasEIoXJhlgJr8d1+t8cAVeP+hEDBBUosmThIVOw9WFFF1buwVrVaeMpJH JRmVLNMjTUHTFod666nbdZNZrkzStGAwFP1KYJ9jmHxefP1V/iJF5pZGRov8eA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gnu.org header.s=fencepost-gnu-org header.b=Tz359b43; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -9.23 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gnu.org header.s=fencepost-gnu-org header.b=Tz359b43; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 5BFBD37C67 X-Spam-Score: -9.23 X-Migadu-Scanner: scn0.migadu.com X-TUID: E91mRooFh3Xv Timothy Sample writes: Hello! > This is culmination of a lot of work, so I=E2=80=99m excited to be submit= ting > it! The main thrust of this series is to update Gash and Gash-Utils, > and then remove most of the old GNU utilities we use during early > bootstrap. To elaborate, the current situation is that we climb a > ladder through time: first we build Bash 2, then we build Bash 4, and > finally we build Bash 5. This is true for most GNU utilities: Sed, > Gawk, Coreutils, etc. The reason? Until now, our Scheme > implementations of those utilities (Gash and Gash-Utils) were very > limited. Bash 2 used to be a lot more useful then Gash, for example. > Now, with recent releases of Gash and Gash-Utils, the Scheme utilities > are, in general, capable of powering the builds of modern GNU software. What an amazing piece of work. Not only adding support for this in Gash and Gash-Utils, also adding the "follow-up" for the Guix bootstrap. Wow! Not meaning to create more unwanted work for you, but I believe this could do with a blog post. I very much like your "climb a ladder through time" description. > To be clear, we still climb the time-ladder in a few cases. The main > ones are GCC, Glibc, and Binutils. For example, we have to use GCC 2 to > transition from TCC To GCC 4 (which is the last non-C++ GCC [1]). > Fixing this would require quite a bit of TCC hacking Yes, that needs work on MesCC, especially the Mes C Library, and TCC. Possibly some work on mpz/gmp. We definately want to jump from TCC to GCC 4.6 (the last modular distribution) in the (near) future. > We still use old versions of Gzip, Make, patch, and > Gawk. The fact that Gawk is still there disappoints me quite a bit, but > =E2=80=98glibc-mesboot=E2=80=99 fails in a way that I just can=E2=80=99t = figure out when > building with Gash-Utils. Yeah, I can imagine, especially after your (2nd?) rewrite of AWK. > Gzip is not strictly necessary, but also pretty easy to replace. and replacing possibly has quite a speed penalty. > I=E2=80=99m not sure, but I think patch is only there > to avoid using patches in =E2=80=98origin=E2=80=99 records during bootstr= ap. We now > have a way to do that, so it may no longer be necessary. Yes, I believe patch is needed for the manual "apply-boot-patch" stages to avoid adding a dependency on xz, created by adding patches to "origin" records. > Make will likely need to be rewritten in Scheme, but we have a head > start: Potato Make [2]. > > [2] https://github.com/spk121/potato-make Interesting! POSIX Makefile Parser Recipes can contain the following parser function (parse ...) reads a standard Makefile and creates rules based on its contents. Building glibc without GNU Make may be pretty difficult, though. > Here=E2=80=99s some detailed info for reviewers. > Ludovic Court=C3=A8s writes: > > The patches all LGTM! I think you can push them to =E2=80=98core-updat= es=E2=80=99 if > > there are no objections. > Pushed! (Maybe I didn=E2=80=99t leave enough time for objections =E2=80= =93 apologies if > it ends up requiring a revert! I=E2=80=99ll be around to work through any > issues this might cause.) Patches LGTM, and thanks for pushing. > The rest hopefully speak for themselves. Sadly, the last one is > something of a jumble. Originally I wanted to remove the utilities one > at a time, but it turns out there are interference effects. I can=E2=80= =99t > remember the exact details now, but to get an idea, removing both old > Bash and old Grep might work, but removing one and then the other (in > either order) might not. Hence, many utilities get updated in one > commit. That's quite understandable, and certainly acceptable. Much of this time-ladder was created by me, it was an enormous effort to find old (and some ancient) versions of the tools that worked well together. There are undocumented build dependencies all around. Some newer packages cannot be used to build older versions of other packages, etc. So, while this kludge was a necessary evil, I'm extremely happy we can now do without it. We should work towards a bootstrap that depends mainly on current packages, and strive to keep current packages bootstrappable. To summarize what you removed: bzip2 (not an old version) sed-1.18 sed-4.0.6 binutils-2.14 (really great!) bash-2.05b bash-4.4 gawk-3.0.0 tar-1.22 grep-2.0 coreutils-5.0 xz-5.0.0 (wow, that was difficult to build) that's 11 old and ancient packages, if have counted correctly. Greetings, Janneke --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com