Package: guix-patches;
Reported by: Jan Nieuwenhuizen <janneke <at> gnu.org>
Date: Tue, 18 Feb 2020 12:45:02 UTC
Severity: normal
Tags: patch
Done: Jan Nieuwenhuizen <janneke <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Jan Nieuwenhuizen <janneke <at> gnu.org> Cc: tracker <at> debbugs.gnu.org Subject: bug#39655: closed ([PATCH core-updates] doc: Add 'Scheme-only Bootstrap' node.) Date: Fri, 22 May 2020 14:21:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Fri, 22 May 2020 16:20:11 +0200 with message-id <874ks8aw6c.fsf <at> gnu.org> and subject line Re: [bug#39655] [PATCH core-updates] doc: Add 'Scheme-only Bootstrap' node. has caused the debbugs.gnu.org bug report #39655, regarding [PATCH core-updates] doc: Add 'Scheme-only Bootstrap' node. to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 39655: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=39655 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Jan Nieuwenhuizen <janneke <at> gnu.org> To: guix-patches <at> gnu.org Subject: [PATCH core-updates] doc: Add 'Scheme-only Bootstrap' node. Date: Tue, 18 Feb 2020 13:44:11 +0100* doc/guix.texi (@detailmenu): Add Bootstrapping menu. (Scheme-only Bootstrap): New node. * doc/images/gcc-core-mesboot0-scheme-only-graph.dot: New image. * doc/local.mk (DOT_FILES): Add it. --- doc/guix.texi | 94 +++++++++++++-- .../gcc-core-mesboot0-scheme-only-graph.dot | 114 ++++++++++++++++++ doc/local.mk | 1 + 3 files changed, 198 insertions(+), 11 deletions(-) create mode 100644 doc/images/gcc-core-mesboot0-scheme-only-graph.dot diff --git a/doc/guix.texi b/doc/guix.texi index 282f9578bf..491fe8b9af 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -35,7 +35,7 @@ Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018, 2019 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016, 2017 ng0@* -Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@* +Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@* @@ -321,6 +321,12 @@ Defining Services * Service Reference:: API reference. * Shepherd Services:: A particular type of service. +Bootstrapping + +* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. +* Scheme-only Bootstrap:: Scheme is all you need. +* Preparing to Use the Bootstrap Binaries:: Building that what matters most. + @end detailmenu @end menu @@ -27973,12 +27979,15 @@ Binutils, libc, and the other packages mentioned above---the These bootstrap binaries are ``taken for granted'', though we can also re-create them if needed (more on that later). -For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is -more elaborate, @pxref{Reduced Binary Seed Bootstrap}. +For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process +is more elaborate. In Guix v1.1 the @pxref{Reduced Binary Seed +Bootstrap} was introduced; a future Guix release will be featuring the +@pxref{Scheme-only Bootstrap}. @menu * Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. -* Preparing to Use the Bootstrap Binaries:: Building that what matters most. +* Scheme-only Bootstrap:: Scheme is all you need. +* Preparing to Use the Bootstrap Binaries:: Building that what matters most. @end menu @node Reduced Binary Seed Bootstrap @@ -28033,17 +28042,80 @@ gcc-mesboot-wrapper. @c the ``missing'' Binutils, GCC, and the GNU C Library are built from source. From here on the more traditional bootstrap process resumes. This approach -has reduced the bootstrap binaries in size to about 130MB. Work is ongoing to -reduce this further. If you are interested, join us on @code{#bootstrappable} -on the Freenode IRC network. +has reduced the bootstrap binaries in size to about 145MB in Guix v1.1. @c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot -@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap -compiler used to build the rest of GuixSD. +compiler used to build the rest of the Guix System. + +@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of gcc-mesboot} + +@node Scheme-only Bootstrap +@section Scheme-only Bootstrap + +The next step that Guix has taken towards a Full Source Bootstrap is to +replace the shell and all its utilities with implementations in Guile +Scheme. Gash (@pxref{Gash,,, gash, The Gash manual}) is a +POSIX-compatible shell that replaces Bash, and it comes with Gash Utils +which has minimalist replacements for Awk, the GNU Core Utilities, Grep, +Gzip, Sed, and Tar. The rest of the bootstrap binary seeds that were +removed are now built from source by adding a new set of +@c +packages <at> footnote{@c +gash-boot, +gash-utils-boot, +%bootstrap-mes-rewired, +gzip-mesboot, +bzip2-mesboot, +bash-mesboot0, +patch-mesboot, +sed-mesboot0, +gawk-mesboot0, +tar-mesboot, +grep-mesboot, +binutils-mesboot1, +coreutils-mesboot0, +make-mesboot, +gawk-mesboot, +sed-mesboot, +gcc-core-mesboot1, +bash-mesboot, +xz-mesboot, +coreutils-mesboot, +gawk-boot0, +sed-boot0, +patch-boot0, +bzip2-boot0, +tar-boot0, +and +coreutils-boot0. +} +@c +As Gash and Gash Utils mature, and GNU packages become more +bootstrappable (e.g., new releases of GNU Sed will also ship in +@code{tar.gz} format), this set of added packages can hopefully be +reduced again. + +@c ./pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' | sed -re 's,((bootstrap-mescc-tools|bootstrap-mes|guile-bootstrap).*shape =) box,\1 ellipse,' > doc/images/gcc-core-mesboot0-scheme-only-graph.dot +@image{images/gcc-core-mesboot0-scheme-only-graph,6in,,Dependency graph of gcc-core-mesboot0} + +The binary bootstrap seeds that remain <at> footnote{Ignoring MesCC-Tools +because it is only 68KB on a total of 57MB, Full Source Bootstrap +versions and a Scheme implementation are in progress} are a Scheme +intepreter and a Scheme compiler: Mes and Guile. + +This approach has reduced the bootstrap binaries in size to about 57MB +for @code{i686-linux} and @code{x86_64-linux} on the @code{core-updates} +branch. + +Work is ongoing to remove all binary blobs from our free software +bootstrap stack, working towards a Full Source Bootstrap. We are also +working to bring these bootstraps to the @code{arm-linux} and +@code{aarch64-linux} architectures and to the Hurd. -@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot} +If you are interested, join us on @code{#bootstrappable} on the Freenode +IRC network. @node Preparing to Use the Bootstrap Binaries @section Preparing to Use the Bootstrap Binaries @@ -28063,7 +28135,7 @@ guix graph -t derivation \ | dot -Tps > gcc.ps @end example -or, for the Reduced Binary Seed bootstrap +or, for the Scheme-only bootstrap @example guix graph -t derivation \ diff --git a/doc/images/gcc-core-mesboot0-scheme-only-graph.dot b/doc/images/gcc-core-mesboot0-scheme-only-graph.dot new file mode 100644 index 0000000000..191582ed4c --- /dev/null +++ b/doc/images/gcc-core-mesboot0-scheme-only-graph.dot @@ -0,0 +1,114 @@ +digraph "Guix package" { + "139781154519456" [label = "gcc-core-mesboot0 <at> 2.95.3", shape = box, fontname = Helvetica]; + "139781154519456" -> "139781154519632" [color = darkgoldenrod]; + "139781154519456" -> "139781154520688" [color = darkgoldenrod]; + "139781154519456" -> "139781034971312" [color = darkgoldenrod]; + "139781154519456" -> "139781154520160" [color = darkgoldenrod]; + "139781154519456" -> "139781034971664" [color = darkgoldenrod]; + "139781154519456" -> "139781154519984" [color = darkgoldenrod]; + "139781154519456" -> "139781154519808" [color = darkgoldenrod]; + "139781154519456" -> "139781154520512" [color = darkgoldenrod]; + "139781154519456" -> "139781034971488" [color = darkgoldenrod]; + "139781154519456" -> "139781034972896" [color = darkgoldenrod]; + "139781154519456" -> "139781034972368" [color = darkgoldenrod]; + "139781154519456" -> "139781034973072" [color = darkgoldenrod]; + "139781154519456" -> "139781131267872" [color = darkgoldenrod]; + "139781154519632" [label = "binutils-mesboot0 <at> 2.14", shape = box, fontname = Helvetica]; + "139781154519632" -> "139781154520688" [color = peachpuff4]; + "139781154519632" -> "139781034971312" [color = peachpuff4]; + "139781154519632" -> "139781154520160" [color = peachpuff4]; + "139781154519632" -> "139781034971664" [color = peachpuff4]; + "139781154519632" -> "139781154519984" [color = peachpuff4]; + "139781154519632" -> "139781154519808" [color = peachpuff4]; + "139781154519632" -> "139781154520512" [color = peachpuff4]; + "139781154519632" -> "139781034971488" [color = peachpuff4]; + "139781154519632" -> "139781034972896" [color = peachpuff4]; + "139781154519632" -> "139781034972368" [color = peachpuff4]; + "139781154519632" -> "139781034973072" [color = peachpuff4]; + "139781154519632" -> "139781131267872" [color = peachpuff4]; + "139781154520688" [label = "bash-mesboot0 <at> 2.05b", shape = box, fontname = Helvetica]; + "139781154520688" -> "139781034971488" [color = magenta]; + "139781154520688" -> "139781034971840" [color = magenta]; + "139781154520688" -> "139781034972896" [color = magenta]; + "139781154520688" -> "139781034972368" [color = magenta]; + "139781154520688" -> "139781034973072" [color = magenta]; + "139781154520688" -> "139781131267872" [color = magenta]; + "139781034971488" [label = "make-mesboot0 <at> 3.80", shape = box, fontname = Helvetica]; + "139781034971488" -> "139781034971840" [color = dimgrey]; + "139781034971488" -> "139781034972896" [color = dimgrey]; + "139781034971488" -> "139781034972368" [color = dimgrey]; + "139781034971488" -> "139781034973072" [color = dimgrey]; + "139781034971488" -> "139781131267872" [color = dimgrey]; + "139781034971840" [label = "tcc-boot0 <at> 0.9.26-1103-g6e62e0e", shape = box, fontname = Helvetica]; + "139781034971840" -> "139781034972016" [color = magenta]; + "139781034971840" -> "139781131266816" [color = magenta]; + "139781034971840" -> "139781034972896" [color = magenta]; + "139781034971840" -> "139781034972368" [color = magenta]; + "139781034971840" -> "139781034973072" [color = magenta]; + "139781034971840" -> "139781131267872" [color = magenta]; + "139781034972016" [label = "mes-boot <at> 0.22", shape = box, fontname = Helvetica]; + "139781034972016" -> "139781034972192" [color = cyan3]; + "139781034972016" -> "139781131266816" [color = cyan3]; + "139781034972016" -> "139781034972896" [color = cyan3]; + "139781034972016" -> "139781034972368" [color = cyan3]; + "139781034972016" -> "139781034973072" [color = cyan3]; + "139781034972016" -> "139781131267872" [color = cyan3]; + "139781034972192" [label = "bootstrap-mes-rewired <at> 0.19", shape = ellipse, fontname = Helvetica]; + "139781034972192" -> "139781131266640" [color = darkseagreen]; + "139781034972192" -> "139781034972896" [color = darkseagreen]; + "139781131266640" [label = "bootstrap-mes <at> 0", shape = ellipse, fontname = Helvetica]; + "139781034972896" [label = "gash-boot <at> 0.2.0", shape = box, fontname = Helvetica]; + "139781034972896" -> "139781034973072" [color = darkviolet]; + "139781034972896" -> "139781131267872" [color = darkviolet]; + "139781034973072" [label = "bootar <at> 1", shape = box, fontname = Helvetica]; + "139781034973072" -> "139781131267872" [color = darkviolet]; + "139781131267872" [label = "guile-bootstrap <at> 2.0", shape = ellipse, fontname = Helvetica]; + "139781131266816" [label = "bootstrap-mescc-tools <at> 0.5.2", shape = ellipse, fontname = Helvetica]; + "139781034972368" [label = "gash-utils-boot <at> 0.1.0", shape = box, fontname = Helvetica]; + "139781034972368" -> "139781034973072" [color = darkseagreen]; + "139781034972368" -> "139781034972896" [color = darkseagreen]; + "139781034972368" -> "139781131267872" [color = darkseagreen]; + "139781034971312" [label = "bzip2-mesboot <at> 1.0.8", shape = box, fontname = Helvetica]; + "139781034971312" -> "139781034971488" [color = cyan3]; + "139781034971312" -> "139781034971840" [color = cyan3]; + "139781034971312" -> "139781034972896" [color = cyan3]; + "139781034971312" -> "139781034972368" [color = cyan3]; + "139781034971312" -> "139781034973072" [color = cyan3]; + "139781034971312" -> "139781131267872" [color = cyan3]; + "139781154520160" [label = "diffutils-mesboot <at> 2.7", shape = box, fontname = Helvetica]; + "139781154520160" -> "139781034971488" [color = red]; + "139781154520160" -> "139781034971840" [color = red]; + "139781154520160" -> "139781034972896" [color = red]; + "139781154520160" -> "139781034972368" [color = red]; + "139781154520160" -> "139781034973072" [color = red]; + "139781154520160" -> "139781131267872" [color = red]; + "139781034971664" [label = "gzip-mesboot <at> 1.2.4", shape = box, fontname = Helvetica]; + "139781034971664" -> "139781034971840" [color = red]; + "139781034971664" -> "139781034972896" [color = red]; + "139781034971664" -> "139781034972368" [color = red]; + "139781034971664" -> "139781034973072" [color = red]; + "139781034971664" -> "139781131267872" [color = red]; + "139781154519984" [label = "patch-mesboot <at> 2.5.9", shape = box, fontname = Helvetica]; + "139781154519984" -> "139781034971488" [color = blue]; + "139781154519984" -> "139781034971840" [color = blue]; + "139781154519984" -> "139781034972896" [color = blue]; + "139781154519984" -> "139781034972368" [color = blue]; + "139781154519984" -> "139781034973072" [color = blue]; + "139781154519984" -> "139781131267872" [color = blue]; + "139781154519808" [label = "sed-mesboot0 <at> 1.18", shape = box, fontname = Helvetica]; + "139781154519808" -> "139781034971488" [color = red]; + "139781154519808" -> "139781034971840" [color = red]; + "139781154519808" -> "139781034972896" [color = red]; + "139781154519808" -> "139781034972368" [color = red]; + "139781154519808" -> "139781034973072" [color = red]; + "139781154519808" -> "139781131267872" [color = red]; + "139781154520512" [label = "tcc-boot <at> 0.9.27", shape = box, fontname = Helvetica]; + "139781154520512" -> "139781034971312" [color = darkviolet]; + "139781154520512" -> "139781034971488" [color = darkviolet]; + "139781154520512" -> "139781034971840" [color = darkviolet]; + "139781154520512" -> "139781034972896" [color = darkviolet]; + "139781154520512" -> "139781034972368" [color = darkviolet]; + "139781154520512" -> "139781034973072" [color = darkviolet]; + "139781154520512" -> "139781131267872" [color = darkviolet]; + +} diff --git a/doc/local.mk b/doc/local.mk index a361f2388e..cf0be7eeff 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -39,6 +39,7 @@ DOT_FILES = \ %D%/images/coreutils-graph.dot \ %D%/images/coreutils-bag-graph.dot \ %D%/images/gcc-mesboot-bag-graph.dot \ + %D%/images/gcc-core-mesboot0-scheme-only-graph.dot \ %D%/images/service-graph.dot \ %D%/images/shepherd-graph.dot -- 2.24.0
[Message part 3 (message/rfc822, inline)]
From: Jan Nieuwenhuizen <janneke <at> gnu.org> To: Timothy Sample <samplet <at> ngyro.com> Cc: 39655-done <at> debbugs.gnu.org, Ludovic Courtès <ludo <at> gnu.org> Subject: Re: [bug#39655] [PATCH core-updates] doc: Add 'Scheme-only Bootstrap' node. Date: Fri, 22 May 2020 16:20:11 +0200Hello! Timothy Sample writes: >> +The only significant binary bootstrap seeds that remain <at> footnote{ >> +Ignoring the 68KB @code{mescc-tools}; that will be removed later, >> +together with @code{mes}.} are a Scheme intepreter and a Scheme >> +compiler: GNU Mes and GNU Guile. > > Is it too confusing to mention the Bash, Tar, and XZ binaries used to > get Guile up and running? IIRC, there are a few packages whose sources > are still patched via “bootstrap-origin”, too. I understand that those > binaries are really insignificant, but maybe someone new to this whole > thing would be surprised to discover “secret” bootstrap binaries. > Perhaps their role in unpacking Guile could be put in the footnote with > messcc-tools. WDYT? Good question -- I've added this compiler: GNU Mes and GNU Guile <at> footnote{Not shown in this graph are the static binaries for @file{bash}, @code{tar}, and @code{xz} that are used to get Guile running.}. Efraim Flashner writes: > > GNU Sed will also ship as gzipped tarballs again, as alternative to the > > hard to bootstrap @code{xz}-compression), this set of added packages can > > hopefully be reduced again. > I have to ask since we're talking about bootstrapability; is it actually > not bootstrappable or is it just harder/more complex? (The question is > more about the wording than about the logistics of it.) Good question, changed it to "hard to bootstrap", like so GNU Sed will also ship as gzipped tarballs again, as alternative to the hard to bootstrap @code{xz}-compression), this set of added packages can hopefully be reduced again. Thanks for your input, pushed to master! janneke -- Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.