summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/guix.texi128
-rw-r--r--doc/images/gcc-mesboot-bag-graph.dot126
-rw-r--r--doc/local.mk1
3 files changed, 238 insertions, 17 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 20b5013fd9..2376cedc68 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -24191,7 +24191,80 @@ 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).
-@unnumberedsubsec Preparing to Use the Bootstrap Binaries
+For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is
+more elaborate, @pxref{Reduced Binary Seed Bootstrap}.
+
+@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, GNU Mes}). 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{bootstrap-mescc-tools} (a tiny assembler and
+linker) and @code{bootstrap-mes} (a small Scheme Interpreter and a C compiler
+written in Scheme and the Mes C Library, built for TinyCC and for GCC). Using
+these new binary seeds and a new set of
+@c
+packages@footnote{@c
+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.
@@ -24205,7 +24278,15 @@ packages bootstrap)} module. A similar figure can be generated with
@example
guix graph -t derivation \
-e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \
- | dot -Tps > t.ps
+ | dot -Tps > gcc.ps
+@end example
+
+or, for the Reduced Binary Seed bootstrap
+
+@example
+guix graph -t derivation \
+ -e '(@@@@ (gnu packages bootstrap) %bootstrap-mes)' \
+ | dot -Tps > mes.ps
@end example
At this level of detail, things are
@@ -24237,10 +24318,10 @@ write them in an output directory with the right layout. This
corresponds to the @code{#:modules} argument of
@code{build-expression->derivation} (@pxref{Derivations}).
-Finally, the various tarballs are unpacked by the
-derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv},
-etc., at which point we have a working C tool chain.
-
+Finally, the various tarballs are unpacked by the derivations
+@code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, or
+@code{bootstrap-mes-0.drv} and @code{bootstrap-mescc-tools-0.drv}, at which
+point we have a working C tool chain.
@unnumberedsubsec Building the Build Tools
@@ -24305,9 +24386,11 @@ those rarely need to be updated. Nevertheless, it is useful to have an
automated way to produce them, should an update occur, and this is what
the @code{(gnu packages make-bootstrap)} module provides.
-The following command builds the tarballs containing the bootstrap
-binaries (Guile, Binutils, GCC, libc, and a tarball containing a mixture
-of Coreutils and other basic command-line tools):
+The following command builds the tarballs containing the bootstrap binaries
+(Binutils, GCC, glibc, for the traditional bootstrap and linux-libre-headers,
+bootstrap-mescc-tools, bootstrap-mes for the Reduced Binary Seed bootstrap,
+and Guile, and a tarball containing a mixture of Coreutils and other basic
+command-line tools):
@example
guix build bootstrap-tarballs
@@ -24325,12 +24408,12 @@ know.
@unnumberedsubsec Reducing the Set of Bootstrap Binaries
-Our bootstrap binaries currently include GCC, Guile, etc. That's a lot
-of binary code! Why is that a problem? It's a problem because these
-big chunks of binary code are practically non-auditable, which makes it
-hard to establish what source code produced them. Every unauditable
-binary also leaves us vulnerable to compiler backdoors as described by
-Ken Thompson in the 1984 paper @emph{Reflections on Trusting Trust}.
+Our traditional bootstrap includes GCC, GNU Libc, Guile, etc. That's a lot of
+binary code! Why is that a problem? It's a problem because these big chunks
+of binary code are practically non-auditable, which makes it hard to establish
+what source code produced them. Every unauditable binary also leaves us
+vulnerable to compiler backdoors as described by Ken Thompson in the 1984
+paper @emph{Reflections on Trusting Trust}.
This is mitigated by the fact that our bootstrap binaries were generated
from an earlier Guix revision. Nevertheless it lacks the level of
@@ -24342,8 +24425,19 @@ The @uref{http://bootstrappable.org, Bootstrappable.org web site} lists
on-going projects to do that. One of these is about replacing the
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!
-
+a simple and auditable assembler.
+
+Our first major achievement is the replacement of of GCC, the GNU C Library
+and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes
+(@pxref{Top, GNU Mes Reference Manual,, mes, GNU Mes}, a Scheme interpreter
+and C compiler in Scheme). Neither MesCC-Tools nor Mes can be fully
+bootstrapped yet and thus we inject them as binary seeds. We call this the
+Reduced Binary Seed bootstrap, as it has halved the size of our bootstrap
+binaries! Also, it has eliminated the C compiler binary; i686-linux and
+x86_64-linux Guix packages are now bootstrapped without any binary C compiler.
+
+Work is ongoing to make MesCC-Tools and Mes fully bootstrappable and we are
+also looking at any other bootstrap binaries. Your help is welcome!
@node Porting
@section Porting to a New Platform
diff --git a/doc/images/gcc-mesboot-bag-graph.dot b/doc/images/gcc-mesboot-bag-graph.dot
new file mode 100644
index 0000000000..a49f5070ed
--- /dev/null
+++ b/doc/images/gcc-mesboot-bag-graph.dot
@@ -0,0 +1,126 @@
+digraph "Guix bag" {
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" [color = blue];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/gjzjhr6h3lq58kb2dv989pl4y1bbk2wg-gcc-mesboot1-wrapper-4.7.4.drv" [color = blue];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" [color = blue];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" [color = blue];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = blue];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = blue];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = blue];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [color = blue];
+ "/gnu/store/szgq0x7gm43xafbvg2ps1vp63zlzbj59-gcc-mesboot-4.9.4.drv" -> "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" [color = blue];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" [color = darkseagreen];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkseagreen];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkseagreen];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = darkseagreen];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
+ "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" [color = darkseagreen];
+ "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica];
+ "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/b2hc3h7h61yaaifk8w4iapvx3s0w8yk6-tcc-boot-0.9.27.drv" [color = red];
+ "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = red];
+ "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = red];
+ "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = red];
+ "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" [color = red];
+ "/gnu/store/b2hc3h7h61yaaifk8w4iapvx3s0w8yk6-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
+ "/gnu/store/b2hc3h7h61yaaifk8w4iapvx3s0w8yk6-tcc-boot-0.9.27.drv" -> "/gnu/store/fr8h0pkfnvk4yhx5i9k8alfc86yhmhri-mes-boot-0.18-0.08f04f5.drv" [color = darkseagreen];
+ "/gnu/store/b2hc3h7h61yaaifk8w4iapvx3s0w8yk6-tcc-boot-0.9.27.drv" -> "/gnu/store/vv6vl6l8y60vjbby6mwk41zkfc4x7mcr-tcc-boot0-0.9.26-5.c7b3f59.drv" [color = darkseagreen];
+ "/gnu/store/b2hc3h7h61yaaifk8w4iapvx3s0w8yk6-tcc-boot-0.9.27.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkseagreen];
+ "/gnu/store/fr8h0pkfnvk4yhx5i9k8alfc86yhmhri-mes-boot-0.18-0.08f04f5.drv" [label = "mes-boot@0.18-0.08f04f5", shape = box, fontname = Helvetica];
+ "/gnu/store/fr8h0pkfnvk4yhx5i9k8alfc86yhmhri-mes-boot-0.18-0.08f04f5.drv" -> "/gnu/store/pn5wxcxg4bgmyzidc519kyfd609m9kw3-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey];
+ "/gnu/store/fr8h0pkfnvk4yhx5i9k8alfc86yhmhri-mes-boot-0.18-0.08f04f5.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = dimgrey];
+ "/gnu/store/fr8h0pkfnvk4yhx5i9k8alfc86yhmhri-mes-boot-0.18-0.08f04f5.drv" -> "/gnu/store/9qw55y8fgq9q0h3wz47lih78cwd0zz0q-bootstrap-mes-0.drv" [color = dimgrey];
+ "/gnu/store/fr8h0pkfnvk4yhx5i9k8alfc86yhmhri-mes-boot-0.18-0.08f04f5.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = dimgrey];
+ "/gnu/store/pn5wxcxg4bgmyzidc519kyfd609m9kw3-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
+ "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica];
+ "/gnu/store/9qw55y8fgq9q0h3wz47lih78cwd0zz0q-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica];
+ "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [label = "guile-bootstrap@2.0", shape = box, fontname = Helvetica];
+ "/gnu/store/vv6vl6l8y60vjbby6mwk41zkfc4x7mcr-tcc-boot0-0.9.26-5.c7b3f59.drv" [label = "tcc-boot0@0.9.26-5.c7b3f59", shape = box, fontname = Helvetica];
+ "/gnu/store/vv6vl6l8y60vjbby6mwk41zkfc4x7mcr-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/fr8h0pkfnvk4yhx5i9k8alfc86yhmhri-mes-boot-0.18-0.08f04f5.drv" [color = peachpuff4];
+ "/gnu/store/vv6vl6l8y60vjbby6mwk41zkfc4x7mcr-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/pn5wxcxg4bgmyzidc519kyfd609m9kw3-bootstrap-mescc-tools-0.5.2.drv" [color = peachpuff4];
+ "/gnu/store/vv6vl6l8y60vjbby6mwk41zkfc4x7mcr-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = peachpuff4];
+ "/gnu/store/vv6vl6l8y60vjbby6mwk41zkfc4x7mcr-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/9qw55y8fgq9q0h3wz47lih78cwd0zz0q-bootstrap-mes-0.drv" [color = peachpuff4];
+ "/gnu/store/vv6vl6l8y60vjbby6mwk41zkfc4x7mcr-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = peachpuff4];
+ "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
+ "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" -> "/gnu/store/fr8h0pkfnvk4yhx5i9k8alfc86yhmhri-mes-boot-0.18-0.08f04f5.drv" [color = darkgoldenrod];
+ "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" -> "/gnu/store/b2hc3h7h61yaaifk8w4iapvx3s0w8yk6-tcc-boot-0.9.27.drv" [color = darkgoldenrod];
+ "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkgoldenrod];
+ "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkgoldenrod];
+ "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" -> "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" [color = darkgoldenrod];
+ "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
+ "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" -> "/gnu/store/b2hc3h7h61yaaifk8w4iapvx3s0w8yk6-tcc-boot-0.9.27.drv" [color = darkviolet];
+ "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkviolet];
+ "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkviolet];
+ "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica];
+ "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" [color = magenta];
+ "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" [color = magenta];
+ "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = magenta];
+ "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = magenta];
+ "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = magenta];
+ "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/s03mkbbgz3zvqw0mgadrj4rj52kaliy3-mesboot-headers-0.18-0.08f04f5.drv" [color = magenta];
+ "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" [color = magenta];
+ "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica];
+ "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" [color = cyan3];
+ "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/b2hc3h7h61yaaifk8w4iapvx3s0w8yk6-tcc-boot-0.9.27.drv" [color = cyan3];
+ "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = cyan3];
+ "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = cyan3];
+ "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = cyan3];
+ "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" [color = cyan3];
+ "/gnu/store/s03mkbbgz3zvqw0mgadrj4rj52kaliy3-mesboot-headers-0.18-0.08f04f5.drv" [label = "mesboot-headers@0.18-0.08f04f5", shape = box, fontname = Helvetica];
+ "/gnu/store/s03mkbbgz3zvqw0mgadrj4rj52kaliy3-mesboot-headers-0.18-0.08f04f5.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = dimgrey];
+ "/gnu/store/s03mkbbgz3zvqw0mgadrj4rj52kaliy3-mesboot-headers-0.18-0.08f04f5.drv" -> "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [color = dimgrey];
+ "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" [color = darkgoldenrod];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/mkb8vw25b18nw49afj21w4c9v1f7ik1f-gcc-core-mesboot-2.95.3.drv" [color = darkgoldenrod];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" [color = darkgoldenrod];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkgoldenrod];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkgoldenrod];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = darkgoldenrod];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod];
+ "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" [color = darkgoldenrod];
+ "/gnu/store/gjzjhr6h3lq58kb2dv989pl4y1bbk2wg-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica];
+ "/gnu/store/gjzjhr6h3lq58kb2dv989pl4y1bbk2wg-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = cyan3];
+ "/gnu/store/gjzjhr6h3lq58kb2dv989pl4y1bbk2wg-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" [color = cyan3];
+ "/gnu/store/gjzjhr6h3lq58kb2dv989pl4y1bbk2wg-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" [color = cyan3];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" [color = darkseagreen];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" [color = darkseagreen];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" [color = darkseagreen];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkseagreen];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = darkseagreen];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = darkseagreen];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
+ "/gnu/store/mk9p60ajavjha1ybrgh3wm47k5fqmi2c-glibc-mesboot-2.16.0.drv" -> "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" [color = darkseagreen];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" [color = blue];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" [color = blue];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" [color = blue];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/s03mkbbgz3zvqw0mgadrj4rj52kaliy3-mesboot-headers-0.18-0.08f04f5.drv" [color = blue];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = blue];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = blue];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = blue];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [color = blue];
+ "/gnu/store/9hxjjd75ck45v1lq07mlari4j65yzpal-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" [color = blue];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/9anasaq20q8rlq036lswazs8k8h3b3bz-binutils-mesboot-2.20.1a.drv" [color = magenta];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" [color = magenta];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" [color = magenta];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = magenta];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = magenta];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/9k08vfps0s8hjdrgag1vvaainr3vbs2i-diffutils-mesboot-2.7.drv" [color = magenta];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [color = magenta];
+ "/gnu/store/dbdm0njsi3dvwa63d97dl5bhc3l5lqnq-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" [color = magenta];
+ "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica];
+ "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" -> "/gnu/store/gvh9xfc5cl5d4s256pvm7w7rhw413piv-binutils-mesboot0-2.20.1a.drv" [color = magenta];
+ "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" -> "/gnu/store/sr7l7m4q6g5anghww1klqx3q38wywp8v-glibc-mesboot0-2.2.5.drv" [color = magenta];
+ "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" -> "/gnu/store/kfw0qp3885yd2blygsfsml7rr8vn1k77-gcc-mesboot0-2.95.3.drv" [color = magenta];
+ "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" -> "/gnu/store/iskgf1pd99455dfxnkqbb6ibj06jihhl-make-mesboot0-3.80.drv" [color = magenta];
+ "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = magenta];
+ "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" -> "/gnu/store/9l87r75n3rgsxc9230r4bxhd8dljfx6x-bootstrap-binaries-0.drv" [color = magenta];
+ "/gnu/store/bdl4qbzwsx7mwhi4zsbim2jnrqlzyl07-make-mesboot-3.82.drv" -> "/gnu/store/3hmp33npkfndjpikabxxcv2qb5pv9qwj-linux-libre-headers-bootstrap-0.drv" [color = magenta];
+
+}
diff --git a/doc/local.mk b/doc/local.mk
index adb7b5102d..525772019c 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -34,6 +34,7 @@ DOT_FILES = \
%D%/images/bootstrap-packages.dot \
%D%/images/coreutils-graph.dot \
%D%/images/coreutils-bag-graph.dot \
+ %D%/images/gcc-mesboot-bag-graph.dot \
%D%/images/service-graph.dot \
%D%/images/shepherd-graph.dot