bug-gnulib@gnu.org mirror (unofficial)
 help / color / mirror / Atom feed
From: Simon Josefsson via Gnulib discussion list <bug-gnulib@gnu.org>
To: Bruno Haible <bruno@clisp.org>
Cc: Bernhard Voelker <mail@bernhard-voelker.de>,
	 Janneke Nieuwenhuizen <janneke@gnu.org>,
	 bug-gnulib@gnu.org,  Paul Eggert <eggert@cs.ucla.edu>
Subject: Re: full-source bootstrap and Python
Date: Mon, 22 Apr 2024 09:29:00 +0200	[thread overview]
Message-ID: <87sezdetz7.fsf@kaka.sjd.se> (raw)
In-Reply-To: <6072062.karAmqqFpX@nimes> (Bruno Haible's message of "Sun, 21 Apr 2024 18:07:37 +0200")

[-- Attachment #1: Type: text/plain, Size: 3653 bytes --]

Bruno Haible <bruno@clisp.org> writes:

> Janneke Nieuwenhuizen wrote:
>> Are are we creating a problem for
>> bootstrapping (or even a dependency cycle) when introducing this new
>> dependency into a certain package.
>
> I think you answered this question with "no", when writing in [1]:
>
>   "Even more recently (2018), the GNU C Library glibc-2.28 adds Python
>    as a build requirement"
>
> So, how do you avoid Python when building glibc? Do you use musl libc as
> a first stage, and only build glibc once a python built with musl exists?
>
> Also, from the diagrams in [1][2][3] it looks like the full-source bootstrap
> uses tarballs frozen in time (make-3.80, gcc-2.95.3, gcc 4.7.3, etc.). So,
> even if newer versions of 'make' or 'gcc' will use a Python-based gnulib-tool,
> there won't be a problem, because the bootstrap of these old tarballs will
> be unaffected.

While I agree, I think there is one nuance that could be added here: it
is true that full-source bootstraps usually needs to use earlier
releases of software tarballs to build more recent projects because of
cyclic dependencies.  However this cause extra work for people involved.
It also means we will have to keep maintaining and patching all the
software that is involved in the full-source bootstrap to keep it
working in the future.  So there is a cost involved here.

The takeaway from that situation should NOT be "don't use python" or
"don't use modern tools", that would be absurd.

The takeaway should be that one should carefully evaluate the
implications of using Python and modern tools, and look at the costs.

If we want to minimize the work for full-source bootstrap people we
increase the cost of people maintaining modern software, and vice versa,
I don't see how we can get away from this conflict.  If everyone wrote
everything in machine code, there would be nothing for the bootstrap
people to do.

However what we can do is to reduce the total amount of work involved by
not introducing too many bootstrap dependency cycles.  Consider the
extreme situation where gnulib-tool version A would require coreutils
verison B, and coreutils version B+1 would require gnulib-tool version
A+1, and gnulib-tool version A+2 would require coreutils version B+1 and
so on for really short release version increments.  Then a full-source
bootstrap will need to package and keep maintain all those coreutils and
gnulib-tool versions -- or start to patch things to avoid the
dependencies.  (I'm ignoring the fact that normally gnulib-tool is not
involved at all when building projects.)

I think gnulib is already quite careful in dependency tracking, more so
than most projects I'm familiar with, but it doesn't mean this can be
improved.

Janneke: is there any recommendation from you as a bootstrapping person
on what dependency we should be careful with, and which dependencies
that are fine?  I suppose/hope that if gnulib-tool required python
version 2, you would not have a serious problem?  I'm certain that
python version 2 is possible to build using really old toolchains.  At
what version of python would it lead require added another bootstrapping
step to the graph?  Python 3.0, 3.7, 3.12?  Maybe it is not easy to
answer this without generating the graph.  But I also think you would
have a better feeling of what the answer would be than most of us.

/Simon


> Bruno
>
> [1] https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/
> [2] https://guix.gnu.org/manual/en/html_node/Reduced-Binary-Seed-Bootstrap.html
> [3] https://guix.gnu.org/manual/devel/en/html_node/Full_002dSource-Bootstrap.html
>
>
>
>
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

  reply	other threads:[~2024-04-22  7:29 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-20  0:22 beta-tester call draft Bruno Haible
2024-04-20  0:39 ` Bruno Haible
2024-04-20  0:56 ` Collin Funk
2024-04-20  1:49   ` Bruno Haible
2024-04-20  4:27 ` Paul Eggert
2024-04-20 22:31   ` gnulib-tool: In sh+py mode, don't fail because of dangling symlinks Bruno Haible
2024-04-20 22:46   ` beta-tester call draft Bruno Haible
2024-04-20  9:38 ` Simon Josefsson via Gnulib discussion list
2024-04-20 22:50   ` gnulib-tool.py speedup Bruno Haible
2024-04-20 23:01     ` Collin Funk
2024-04-20 23:50       ` Bruno Haible
2024-04-21  0:53         ` Collin Funk
2024-04-20 10:21 ` beta-tester call draft Pádraig Brady
2024-04-20 13:05 ` Bernhard Voelker
2024-04-20 22:54   ` Bruno Haible
2024-04-20 22:57     ` Paul Eggert
2024-04-20 23:14       ` Bruno Haible
2024-04-21 10:53         ` Bernhard Voelker
2024-04-21 14:50           ` future Python evolution Bruno Haible
2024-04-21 15:14             ` Paul Eggert
2024-04-21 22:38               ` Bruno Haible
2024-04-22  7:05                 ` Paul Eggert
2024-04-21 15:26             ` Bernhard Voelker
2024-04-28 14:14             ` Bernhard Voelker
2024-04-21 15:15           ` beta-tester call draft Janneke Nieuwenhuizen
2024-04-21 16:07             ` full-source bootstrap and Python Bruno Haible
2024-04-22  7:29               ` Simon Josefsson via Gnulib discussion list [this message]
2024-04-22 10:07                 ` Bruno Haible
2024-04-22 10:06               ` Janneke Nieuwenhuizen
2024-04-22 11:24                 ` Simon Josefsson via Gnulib discussion list
2024-04-22 15:48                 ` Bruno Haible

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://lists.gnu.org/mailman/listinfo/bug-gnulib

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

  git send-email \
    --in-reply-to=87sezdetz7.fsf@kaka.sjd.se \
    --to=bug-gnulib@gnu.org \
    --cc=bruno@clisp.org \
    --cc=eggert@cs.ucla.edu \
    --cc=janneke@gnu.org \
    --cc=mail@bernhard-voelker.de \
    --cc=simon@josefsson.org \
    /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.
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).