From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56210) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gBcFr-0006ES-VC for guix-patches@gnu.org; Sun, 14 Oct 2018 05:00:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gBcFn-0002xS-Ge for guix-patches@gnu.org; Sun, 14 Oct 2018 05:00:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:44534) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gBcFn-0002xF-CI for guix-patches@gnu.org; Sun, 14 Oct 2018 05:00:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gBcFn-0006Hd-A6 for guix-patches@gnu.org; Sun, 14 Oct 2018 05:00:03 -0400 Subject: [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping'. References: <87d0scdi9a.fsf@gnu.org> In-Reply-To: <87d0scdi9a.fsf@gnu.org> Resent-Message-ID: From: Jan Nieuwenhuizen Date: Sun, 14 Oct 2018 10:58:52 +0200 Message-Id: <20181014085857.3863-1-janneke@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 33038@debbugs.gnu.org * doc/guix.texi (Reduced Binary Seed Bootstrap): --- doc/guix.texi | 141 ++++++++++++++++++++++++++------------------------ 1 file changed, 72 insertions(+), 69 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index a213a0324..48f01e989 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -210,7 +210,6 @@ GNU Distribution * Package Modules:: Packages from the programmer's viewpoint. * Packaging Guidelines:: Growing the distribution. * Bootstrapping:: GNU/Linux built from scratch. -* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. * Porting:: Targeting another platform or kernel. System Installation @@ -8695,7 +8694,6 @@ For information on porting to other architectures or kernels, * Package Modules:: Packages from the programmer's viewpoint. * Packaging Guidelines:: Growing the distribution. * Bootstrapping:: GNU/Linux built from scratch. -* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. * Porting:: Targeting another platform or kernel. @end menu @@ -23557,7 +23555,78 @@ 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}. -@unnumberedsubsec Preparing to Use the Bootstrap Binaries +@menu +* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. +* Preparing to Use the Bootstrap Binaries:: Building that what matters most. +@end menu + +@node Reduced Binary Seed Bootstrap +@subsection The Reduced Binary Seed Bootstrap + +Guix---like other GNU/Linux distributions---is traditionally bootstrapped from +a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU +Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the +GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are +``taken for granted.'' + +Taking these binaries for granted means that we consider them to be a correct +and trustworthy `seed' for building the complete system. Therein lies a +problem: the current combined size of these bootstrap binaries is about 250MB +(@pxref{Bootstrappable Builds,,, mes, Mes Reference Manual}). Auditing or +even inspecting these is next to impossible. + +For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced +Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source +Bootstrap'' and while we are working towards that goal it would be hyperbole +to use that term for what we do now.}. + +The Reduced Binary Seed bootstrap removes the most critical tools---from a +trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C +Library are replaced by: @code{mescc-tools-seed} (a tiny assembler and linker) +@code{mes-seed} (a small Scheme Interpreter and a C compiler writen in Scheme) +and @code{tinycc-seed} (the Mes C Library, built for TinyCC). Using these new +binary seeds and a new set of +@c +packages@footnote{@c +mescc-tools-boot, +nyacc-boot, +mes-boot, +tcc-boot0, +tcc-boot, +make-mesboot0, +diffutils-mesboot, +binutils-mesboot0, +gcc-core-mesboot, +mesboot-headers, +glibc-mesboot0, +gcc-mesboot0, +binutils-mesboot, +make-mesboot, +gcc-mesboot1, +gcc-mesboot1-wrapper, +glibc-headers-mesboot, +glibc-mesboot, +gcc-mesboot, +and +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. + +@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. + +@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot} + +@node Preparing to Use the Bootstrap Binaries +@subsection Preparing to Use the Bootstrap Binaries @c As of Emacs 24.3, Info-mode displays the image, but since it's a @c large image, it's hard to scroll. Oh well. @@ -23710,72 +23779,6 @@ bootstrap GCC with a sequence of assemblers, interpreters, and compilers of increasing complexity, which could be built from source starting from a simple and auditable assembler. Your help is welcome! -@node Reduced Binary Seed Bootstrap -@section The Reduced Binary Seed Bootstrap - -Guix---like other GNU/Linux distributions---is traditionally bootstrapped from -a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU -Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the -GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are -``taken for granted.'' - -Taking these binaries for granted means that we consider them to be a correct -and trustworthy `seed' for building the complete system. Therein lies a -problem: the current combined size of these bootstrap binaries is about 250MB -(@pxref{Bootstrappable Builds,,, mes, Mes Reference Manual}). Auditing or -even inspecting these is next to impossible. - -For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced -Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source -Bootstrap'' and while we are working towards that goal it would be hyperbole -to use that term for what we do now.}. - -The Reduced Binary Seed bootstrap removes the most critical tools---from a -trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C -Library are replaced by: @code{mescc-tools-seed} (a tiny assembler and linker) -@code{mes-seed} (a small Scheme Interpreter and a C compiler writen in Scheme) -and @code{tinycc-seed} (the Mes C Library, built for TinyCC). Using these new -binary seeds and a new set of -@c -packages@footnote{@c -mescc-tools-boot, -nyacc-boot, -mes-boot, -tcc-boot0, -tcc-boot, -make-mesboot0, -diffutils-mesboot, -binutils-mesboot0, -gcc-core-mesboot, -mesboot-headers, -glibc-mesboot0, -gcc-mesboot0, -binutils-mesboot, -make-mesboot, -gcc-mesboot1, -gcc-mesboot1-wrapper, -glibc-headers-mesboot, -glibc-mesboot, -gcc-mesboot, -and -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. - -@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. - -@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot} - - @node Porting @section Porting to a New Platform -- 2.18.0