unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Jan Nieuwenhuizen <janneke@gnu.org>
To: Timothy Sample <samplet@ngyro.com>
Cc: "Ludovic Courtès" <ludo@gnu.org>, 54394@debbugs.gnu.org
Subject: [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
Date: Sun, 20 Mar 2022 12:38:50 +0100	[thread overview]
Message-ID: <878rt43lbp.fsf@gnu.org> (raw)
In-Reply-To: <87v8wg40dl.fsf@ngyro.com> (Timothy Sample's message of "Mon, 14 Mar 2022 16:47:50 -0600")

Timothy Sample writes:

Hello!

> This is culmination of a lot of work, so I’m excited to be submitting
> 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
> ‘glibc-mesboot’ fails in a way that I just can’t 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’m not sure, but I think patch is only there
> to avoid using patches in ‘origin’ records during bootstrap.  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’s some detailed info for reviewers.

> Ludovic Courtès writes:
> > The patches all LGTM!  I think you can push them to ‘core-updates’ if
> > there are no objections.

> Pushed!  (Maybe I didn’t leave enough time for objections – apologies if
> it ends up requiring a revert!  I’ll 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’t
> 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

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




      parent reply	other threads:[~2022-03-20 11:41 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 01/12] gnu: hello-mesboot: Downgrade to 2.10 Timothy Sample
2022-03-16 17:25   ` [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Ludovic Courtès
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 02/12] gnu-bootstrap: Configure PACKAGE_NAME Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 03/12] gnu-bootstrap: Allow multiple module directories Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 04/12] gnu: gash-utils: Update to 0.2.0 Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 05/12] gnu: bootar: Update to 1b Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 06/12] gnu: gash: Update to 0.3.0 Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 07/12] gnu: gash-utils-boot: Create 'echo' wrapper Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 08/12] gnu: bzip2-mesboot: Remove package Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 09/12] gnu: sed-mesboot0: " Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 10/12] gnu: binutils-mesboot0: Update to 2.20.1a Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 11/12] gnu: %boot-tcc-inputs: Remove extra "gash-utils" Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities Timothy Sample
2022-03-15 10:34   ` Maxime Devos
2022-03-15 19:35     ` Timothy Sample
2022-03-16 17:25 ` [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Ludovic Courtès
2022-03-16 17:32 ` Ludovic Courtès
2022-03-19 19:53   ` bug#54394: " Timothy Sample
2022-03-21 15:17     ` [bug#54394] " Ludovic Courtès
2022-03-20 11:38 ` Jan Nieuwenhuizen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=878rt43lbp.fsf@gnu.org \
    --to=janneke@gnu.org \
    --cc=54394@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    --cc=samplet@ngyro.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).