mbox series

[bug#55227,core-updates,0/8] The Full Source Bootstrap

Message ID 20220502182105.32068-1-janneke@gnu.org
Headers show
Series The Full Source Bootstrap | expand

Message

Jan Nieuwenhuizen May 2, 2022, 6:21 p.m. UTC
About a year ago we cheered something like:  WE DID IT!!!

Today I am very excited to finally have released GNU Mes 0.24 which supports
the Full Source Bootstrap.  So we did what?  As Carl Dong once so eloquently
put it

   The holy grail of bootstrappability will be connecting mes to hex0

which is exactly what this patch series brings.

Starting from an 357-byte hex0 provided by the new bootstrap-seeds package,
the new stage0-posix package builds hex0, kaem, hex1, catm, hex2, M0, cc_x86,
M1, M2, get_machine, (mescc-tools), and M2-Planet.  The 0.24 release of Mes
can now be built using this M2-Planet.

This means that the bootstrap binaries that were added as part of the Reduced
Binary Seed Bootstrap (see
https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25):
%bootstrap-mescc-tools, %bootstrap-mes, are now removed again.

Greetings,
Janneke


Jan (janneke) Nieuwenhuizen (8):
  commencement: Add bootstrap-seeds.
  commencement: Add stage0-posix.
  commencement: mes-boot: Update to 0.24, build with M2-Planet.
  commencement: tcc-boot0: Use NYACC-1.00.2.
  commencement: tcc-boot0: Update to 0.9.26-1136-g0fbeb2dd.
  bootstrap: Remove %bootstrap-mescc-tools, %bootstrap-mes.
  commencement: Remove %bootstrap-mes-rewired.
  doc: Add the "Full Source Bootstrap".

 doc/guix.texi                          |  77 +++---
 doc/images/gcc-core-mesboot0-graph.dot | 187 ++++++-------
 gnu/packages/bootstrap.scm             |   4 +-
 gnu/packages/commencement.scm          | 355 ++++++++++++++-----------
 4 files changed, 315 insertions(+), 308 deletions(-)

Comments

Ludovic Courtès May 12, 2022, 11:09 a.m. UTC | #1
Hello!

"Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> skribis:

> About a year ago we cheered something like:  WE DID IT!!!
>
> Today I am very excited to finally have released GNU Mes 0.24 which supports
> the Full Source Bootstrap.  So we did what?  As Carl Dong once so eloquently
> put it
>
>    The holy grail of bootstrappability will be connecting mes to hex0
>
> which is exactly what this patch series brings.

Woohoo!!  Truly amazing.  I just can’t believe it’s become a reality!

> Starting from an 357-byte hex0 provided by the new bootstrap-seeds package,
> the new stage0-posix package builds hex0, kaem, hex1, catm, hex2, M0, cc_x86,
> M1, M2, get_machine, (mescc-tools), and M2-Planet.  The 0.24 release of Mes
> can now be built using this M2-Planet.
>
> This means that the bootstrap binaries that were added as part of the Reduced
> Binary Seed Bootstrap (see
> https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25):
> %bootstrap-mescc-tools, %bootstrap-mes, are now removed again.

Yay!  (And we’ll need a new blog post once that’s merged!)

>   commencement: Add bootstrap-seeds.
>   commencement: Add stage0-posix.
>   commencement: mes-boot: Update to 0.24, build with M2-Planet.
>   commencement: tcc-boot0: Use NYACC-1.00.2.
>   commencement: tcc-boot0: Update to 0.9.26-1136-g0fbeb2dd.
>   bootstrap: Remove %bootstrap-mescc-tools, %bootstrap-mes.
>   commencement: Remove %bootstrap-mes-rewired.
>   doc: Add the "Full Source Bootstrap".

I haven’t checked but if you confirm that ‘guix build coreutils’ or
similar passes (and that the output of ‘guix build coreutils -s
powerpc64le -d’, for example, is unaffected), this can go on
‘core-updates’.

Please add “gnu:” as a prefix to the commit log of patches that modify
gnu/packages/*.

>  4 files changed, 315 insertions(+), 308 deletions(-)

And on top of that, it comes almost for free in terms of lines of code
on our side.  :-)

One last thing: *thank you*.  Thank you for bringing it to completion,
for never giving up in the face of a mountain of challenges of all
sorts; thank you for inspiring us!

Ludo’.
Jan Nieuwenhuizen May 13, 2022, 8:07 a.m. UTC | #2
Ludovic Courtès writes:

Hello!

> "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> skribis:
>
>> About a year ago we cheered something like:  WE DID IT!!!
>>
>> Today I am very excited to finally have released GNU Mes 0.24 which supports
>> the Full Source Bootstrap.  So we did what?  As Carl Dong once so eloquently
>> put it
>>
>>    The holy grail of bootstrappability will be connecting mes to hex0
>>
>> which is exactly what this patch series brings.
>
> Woohoo!!  Truly amazing.  I just can’t believe it’s become a reality!

My thoughts exactly, and very nice to hear you say it too!

>> Starting from an 357-byte hex0 provided by the new bootstrap-seeds package,
>> the new stage0-posix package builds hex0, kaem, hex1, catm, hex2, M0, cc_x86,
>> M1, M2, get_machine, (mescc-tools), and M2-Planet.  The 0.24 release of Mes
>> can now be built using this M2-Planet.
>>
>> This means that the bootstrap binaries that were added as part of the Reduced
>> Binary Seed Bootstrap (see
>> https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25):
>> %bootstrap-mescc-tools, %bootstrap-mes, are now removed again.
>
> Yay!  (And we’ll need a new blog post once that’s merged!)

Sure!

> I haven’t checked but if you confirm that ‘guix build coreutils’ or
> similar passes

Re-confirming this now, "already" up to...

    building /gnu/store/1kj9y2qkd7nc7jhyfa0ywqkbmbv4a8ki-gcc-mesboot-4.9.4.drv...

> (and that the output of ‘guix build coreutils -s powerpc64le -d’, for
> example, is unaffected),

Ah that's a nice trick.  No changes!

    $ ./pre-inst-env guix build coreutils -s powerpc64le-linux -d
    /gnu/store/rsg7k7rih8giz2a3gbd281ygzixzg5yn-coreutils-8.32.drv

> this can go on ‘core-updates’.

OK.  I have reset wip-full-source-bootstrap and will send a v3 patch
series.  We probably want to think about/change the actual mirror spell
"mirror://gnu/guix/mirror/" (?) to use (see other mails).

> Please add “gnu:” as a prefix to the commit log of patches that modify
> gnu/packages/*.

Done.

>>  4 files changed, 315 insertions(+), 308 deletions(-)
>
> And on top of that, it comes almost for free in terms of lines of code
> on our side.  :-)

Yeah, what a bonus.  The thing is that stage0-posix includes mescc-tools
and m2-planet; we were expecting at least two extra packages...

> One last thing: *thank you*.  Thank you for bringing it to completion,
> for never giving up in the face of a mountain of challenges of all
> sorts; thank you for inspiring us!

Thats really great to hear, it means a lot to me.  I'm very grateful for
all your support in this journey and for Guix, that presented me with a
beautiful piece of code to play with and prototype the bootstraps.  And
also, many thanks for the opportunity to stepwise introduce these
changes.  Time to start thinking about the next big step for
bootstrappable!

Greetings,
Janneke
Maxim Cournoyer May 16, 2022, 4:58 a.m. UTC | #3
Hi Jan,

"Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> writes:

> About a year ago we cheered something like:  WE DID IT!!!
>
> Today I am very excited to finally have released GNU Mes 0.24 which supports
> the Full Source Bootstrap.  So we did what?  As Carl Dong once so eloquently
> put it
>
>    The holy grail of bootstrappability will be connecting mes to hex0
>
> which is exactly what this patch series brings.
>
> Starting from an 357-byte hex0 provided by the new bootstrap-seeds package,
> the new stage0-posix package builds hex0, kaem, hex1, catm, hex2, M0, cc_x86,
> M1, M2, get_machine, (mescc-tools), and M2-Planet.  The 0.24 release of Mes
> can now be built using this M2-Planet.
>
> This means that the bootstrap binaries that were added as part of the Reduced
> Binary Seed Bootstrap (see
> https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25):
> %bootstrap-mescc-tools, %bootstrap-mes, are now removed again.
>
> Greetings,
> Janneke
>
>
> Jan (janneke) Nieuwenhuizen (8):
>   commencement: Add bootstrap-seeds.
>   commencement: Add stage0-posix.
>   commencement: mes-boot: Update to 0.24, build with M2-Planet.
>   commencement: tcc-boot0: Use NYACC-1.00.2.
>   commencement: tcc-boot0: Update to 0.9.26-1136-g0fbeb2dd.
>   bootstrap: Remove %bootstrap-mescc-tools, %bootstrap-mes.
>   commencement: Remove %bootstrap-mes-rewired.
>   doc: Add the "Full Source Bootstrap".

Woohoo!  Thank you for dedicating lots of your energy to this noble
cause! :-) I'll try to enjoy the finer details when I have a chance
but... a blog post could be nice to shine a light on this amazing
achievement!

Thank you, and happy continuation!

Maxim
Jan Nieuwenhuizen May 16, 2022, 5:17 a.m. UTC | #4
Maxim Cournoyer writes:

Hello Maxim,

> "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> writes:
>
>> About a year ago we cheered something like:  WE DID IT!!!
[..]
>>   commencement: Add bootstrap-seeds.
>>   commencement: Add stage0-posix.
>>   commencement: mes-boot: Update to 0.24, build with M2-Planet.
>>   commencement: tcc-boot0: Use NYACC-1.00.2.
>>   commencement: tcc-boot0: Update to 0.9.26-1136-g0fbeb2dd.
>>   bootstrap: Remove %bootstrap-mescc-tools, %bootstrap-mes.
>>   commencement: Remove %bootstrap-mes-rewired.
>>   doc: Add the "Full Source Bootstrap".
>
> Woohoo!  Thank you for dedicating lots of your energy to this noble
> cause! :-) I'll try to enjoy the finer details when I have a chance
> but... a blog post could be nice to shine a light on this amazing
> achievement!

Thanks for your appreciation, that means a lot to me!  It's been quite
some work and also a lot of fun, most of the time ;).  And it feels very
good when the work is so welcomed.  I am grateful for having the
opportunity to work on this, and Guix makes it so easy!

There will definately be a blog-post; I have already started to work on
it.  I think it's probably best to time it after core-utils has been
merged into master, when "guix pull; guix system init .." actually
installs a system built from 357 bytes.

> Thank you, and happy continuation!

Very welcome, thanks,
Janneke