mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
doc: Add a "Boostrapping" section.
* doc/guix.texi (Package Modules): New node, with material formerly under "GNU Distribution". (Bootstrapping): New node. * Makefile.am (EXTRA_DIST): Add doc/images/bootstrap-graph.dot and doc/images/bootstrap-graph.eps. (infoimagedir, dist_infoimage_DATA, DOT_OPTIONS): New variable. (.dot.png, .dot.eps, doc/guix.pdf, doc/guix.info, doc/guix.ps): New targets. * doc/images/bootstrap-graph.dot: New file.
This commit is contained in:
parent
c8ebc82187
commit
401c53c469
4 changed files with 265 additions and 16 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -74,3 +74,5 @@ stamp-h[0-9]
|
||||||
/doc/guix.vr
|
/doc/guix.vr
|
||||||
/doc/guix.vrs
|
/doc/guix.vrs
|
||||||
/nix/scripts/substitute-binary
|
/nix/scripts/substitute-binary
|
||||||
|
/doc/images/bootstrap-graph.png
|
||||||
|
/doc/images/bootstrap-graph.eps
|
||||||
|
|
26
Makefile.am
26
Makefile.am
|
@ -169,7 +169,31 @@ $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
|
||||||
SUBDIRS = po
|
SUBDIRS = po
|
||||||
|
|
||||||
info_TEXINFOS = doc/guix.texi
|
info_TEXINFOS = doc/guix.texi
|
||||||
EXTRA_DIST += doc/fdl-1.3.texi
|
EXTRA_DIST += \
|
||||||
|
doc/fdl-1.3.texi \
|
||||||
|
doc/images/bootstrap-graph.dot \
|
||||||
|
doc/images/bootstrap-graph.eps
|
||||||
|
|
||||||
|
infoimagedir = $(infodir)/images
|
||||||
|
dist_infoimage_DATA = doc/images/bootstrap-graph.png
|
||||||
|
|
||||||
|
# Try hard to obtain an image size and aspect that's reasonable for inclusion
|
||||||
|
# in an Info or PDF document.
|
||||||
|
DOT_OPTIONS = \
|
||||||
|
-Tpng -Gratio=.9 -Gnodesep=.005 -Granksep=.00005 \
|
||||||
|
-Nfontsize=9 -Nheight=.1 -Nwidth=.1
|
||||||
|
|
||||||
|
.dot.png:
|
||||||
|
dot -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp"
|
||||||
|
mv "$@.tmp" "$@"
|
||||||
|
|
||||||
|
.dot.eps:
|
||||||
|
dot -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp"
|
||||||
|
mv "$@.tmp" "$@"
|
||||||
|
|
||||||
|
doc/guix.pdf: doc/images/bootstrap-graph.png
|
||||||
|
doc/guix.info: doc/images/bootstrap-graph.png
|
||||||
|
doc/guix.ps: doc/images/bootstrap-graph.eps
|
||||||
|
|
||||||
if BUILD_DAEMON
|
if BUILD_DAEMON
|
||||||
|
|
||||||
|
|
170
doc/guix.texi
170
doc/guix.texi
|
@ -1426,29 +1426,169 @@ guix package}):
|
||||||
guix package --list-available
|
guix package --list-available
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
The package definitions of the distribution may are provided by Guile
|
|
||||||
modules in the @code{(gnu packages ...)} name space---for instance, the
|
|
||||||
@code{(gnu packages emacs)} module exports a variable named
|
|
||||||
@code{emacs}, which is bound to a @code{<package>} object
|
|
||||||
(@pxref{Defining Packages}). The @code{(gnu packages)} module provides
|
|
||||||
facilities for searching for packages.
|
|
||||||
|
|
||||||
The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}:
|
|
||||||
each package is built based solely on other packages in the
|
|
||||||
distribution. The root of this dependency graph is a small set of
|
|
||||||
@dfn{bootstrap binaries}, provided by the @code{(gnu packages
|
|
||||||
bootstrap)} module. These are statically-linked binaries of the core
|
|
||||||
tools without which building anything at all would be impossible.
|
|
||||||
|
|
||||||
|
|
||||||
Our goal is to build a practical 100% free software distribution of
|
Our goal is to build a practical 100% free software distribution of
|
||||||
Linux-based and other variants of GNU, with a focus on the promotion and
|
Linux-based and other variants of GNU, with a focus on the promotion and
|
||||||
tight integration of GNU components, and an emphasis on programs and
|
tight integration of GNU components, and an emphasis on programs and
|
||||||
tools that help users exert that freedom.
|
tools that help users exert that freedom.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Package Modules:: Packages from the programmer's viewpoint.
|
||||||
|
* Bootstrapping:: GNU/Linux built from scratch.
|
||||||
|
@end menu
|
||||||
|
|
||||||
Building this distribution is a cooperative effort, and you are invited
|
Building this distribution is a cooperative effort, and you are invited
|
||||||
to join! @ref{Contributing}, for information about how you can help.
|
to join! @ref{Contributing}, for information about how you can help.
|
||||||
|
|
||||||
|
@node Package Modules
|
||||||
|
@section Package Modules
|
||||||
|
|
||||||
|
From a programming viewpoint, the package definitions of the
|
||||||
|
distribution are provided by Guile modules in the @code{(gnu packages
|
||||||
|
...)} name space---for instance, the @code{(gnu packages emacs)} module
|
||||||
|
exports a variable named @code{emacs}, which is bound to a
|
||||||
|
@code{<package>} object (@pxref{Defining Packages}). The @code{(gnu
|
||||||
|
packages)} module provides facilities for searching for packages.
|
||||||
|
|
||||||
|
The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}:
|
||||||
|
each package is built based solely on other packages in the
|
||||||
|
distribution. The root of this dependency graph is a small set of
|
||||||
|
@dfn{bootstrap binaries}, provided by the @code{(gnu packages
|
||||||
|
bootstrap)} module. More on this in the next section.
|
||||||
|
|
||||||
|
|
||||||
|
@node Bootstrapping
|
||||||
|
@section Bootstrapping
|
||||||
|
|
||||||
|
@c Adapted from the ELS 2013 paper.
|
||||||
|
|
||||||
|
@cindex bootstrapping
|
||||||
|
|
||||||
|
Bootstrapping in our context refers to how the distribution gets built
|
||||||
|
``from nothing''. Remember that the build environment of a derivation
|
||||||
|
contains nothing but its declared inputs (@pxref{Introduction}). So
|
||||||
|
there's an obvious chicken-and-egg problem: how does the first package
|
||||||
|
get built? How does the first compiler get compiled? Note that this is
|
||||||
|
a question of interest only to the curious hacker, not to the regular
|
||||||
|
user, so you can shamelessly skip this section if you consider yourself
|
||||||
|
a ``regular user''.
|
||||||
|
|
||||||
|
@cindex bootstrap binaries
|
||||||
|
The GNU system is primarily made of C code, with libc at its core. The
|
||||||
|
GNU build system itself assumes the availability of a Bourne shell and
|
||||||
|
command-line tools provided by GNU Coreutils, Awk, Findutils, `sed', and
|
||||||
|
`grep'. Furthermore, build programs---programs that run
|
||||||
|
@code{./configure}, @code{make}, etc.---are written in Guile Scheme
|
||||||
|
(@pxref{Derivations}). Consequently, to be able to build anything at
|
||||||
|
all, from scratch, Guix relies on pre-built binaries of Guile, GCC,
|
||||||
|
Binutils, libc, and the other packages mentioned above---the
|
||||||
|
@dfn{bootstrap binaries}.
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
@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.
|
||||||
|
@image{images/bootstrap-graph,,,Dependency graph of the early bootstrap derivations}
|
||||||
|
|
||||||
|
The figure above shows the very beginning of the dependency graph of the
|
||||||
|
distribution, corresponding to the package definitions of the @code{(gnu
|
||||||
|
packages bootstrap)} module. At this level of detail, things are
|
||||||
|
slightly complex. First, Guile itself consists of an ELF executable,
|
||||||
|
along with many source and compiled Scheme files that are dynamically
|
||||||
|
loaded when it runs. This gets stored in the @file{guile-2.0.7.tar.xz}
|
||||||
|
tarball shown in this graph. This tarball is part of Guix's ``source''
|
||||||
|
distribution, and gets inserted into the store with @code{add-to-store}
|
||||||
|
(@pxref{The Store}).
|
||||||
|
|
||||||
|
But how do we write a derivation that unpacks this tarball and adds it
|
||||||
|
to the store? To solve this problem, the @code{guile-bootstrap-2.0.drv}
|
||||||
|
derivation---the first one that gets built---uses @code{bash} as its
|
||||||
|
builder, which runs @code{build-bootstrap-guile.sh}, which in turn calls
|
||||||
|
@code{tar} to unpack the tarball. Thus, @file{bash}, @file{tar},
|
||||||
|
@file{xz}, and @file{mkdir} are statically-linked binaries, also part of
|
||||||
|
the Guix source distribution, whose sole purpose is to allow the Guile
|
||||||
|
tarball to be unpacked.
|
||||||
|
|
||||||
|
Once @code{guile-bootstrap-2.0.drv} is built, we have a functioning
|
||||||
|
Guile that can be used to run subsequent build programs. Its first task
|
||||||
|
is to download tarballs containing the other pre-built binaries---this
|
||||||
|
is what the @code{.tar.xz.drv} derivations do. Guix modules such as
|
||||||
|
@code{ftp-client.scm} are used for this purpose. The
|
||||||
|
@code{module-import.drv} derivations import those modules in a directory
|
||||||
|
in the store, using the original layout. The
|
||||||
|
@code{module-import-compiled.drv} derivations compile those modules, and
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
@unnumberedsubsec Building the Build Tools
|
||||||
|
|
||||||
|
@c TODO: Add a package-level dependency graph generated from (gnu
|
||||||
|
@c packages base).
|
||||||
|
|
||||||
|
Bootstrapping is complete when we have a full tool chain that does not
|
||||||
|
depend on the pre-built bootstrap tools discussed above. This
|
||||||
|
no-dependency requirement is verified by checking whether the files of
|
||||||
|
the final tool chain contain references to the @file{/nix/store}
|
||||||
|
directories of the bootstrap inputs. The process that leads to this
|
||||||
|
``final'' tool chain is described by the package definitions found in
|
||||||
|
the @code{(gnu packages base)} module.
|
||||||
|
|
||||||
|
@c See <http://lists.gnu.org/archive/html/gnu-system-discuss/2012-10/msg00000.html>.
|
||||||
|
The first tool that gets built with the bootstrap binaries is
|
||||||
|
GNU Make, which is a prerequisite for all the following packages.
|
||||||
|
From there Findutils and Diffutils get built.
|
||||||
|
|
||||||
|
Then come the first-stage Binutils and GCC, built as pseudo cross
|
||||||
|
tools---i.e., with @code{--target} equal to @code{--host}. They are
|
||||||
|
used to build libc. Thanks to this cross-build trick, this libc is
|
||||||
|
guaranteed not to hold any reference to the initial tool chain.
|
||||||
|
|
||||||
|
From there the final Binutils and GCC are built. GCC uses @code{ld}
|
||||||
|
from the final Binutils, and links programs against the just-built libc.
|
||||||
|
This tool chain is used to build the other packages used by Guix and by
|
||||||
|
the GNU Build System: Guile, Bash, Coreutils, etc.
|
||||||
|
|
||||||
|
And voilà! At this point we have the complete set of build tools that
|
||||||
|
the GNU Build System expects. These are in the @code{%final-inputs}
|
||||||
|
variables of the @code{(gnu packages base)} module, and are implicitly
|
||||||
|
used by any package that uses @code{gnu-build-system} (@pxref{Defining
|
||||||
|
Packages}).
|
||||||
|
|
||||||
|
|
||||||
|
@unnumberedsubsec Building the Bootstrap Binaries
|
||||||
|
|
||||||
|
Because the final tool chain does not depend on the bootstrap binaries,
|
||||||
|
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):
|
||||||
|
|
||||||
|
@example
|
||||||
|
guix build bootstrap-tarballs
|
||||||
|
@end example
|
||||||
|
|
||||||
|
The generated tarballs are those that should be referred to in the
|
||||||
|
@code{(gnu packages bootstrap)} module mentioned at the beginning of
|
||||||
|
this section.
|
||||||
|
|
||||||
|
Still here? Then perhaps by now you've started to wonder: when do we
|
||||||
|
reach a fixed point? That is an interesting question! The answer is
|
||||||
|
unknown, but if you would like to investigate further (and have
|
||||||
|
significant computational and storage resources to do so), then let us
|
||||||
|
know.
|
||||||
|
|
||||||
|
|
||||||
@c *********************************************************************
|
@c *********************************************************************
|
||||||
@node Contributing
|
@node Contributing
|
||||||
@chapter Contributing
|
@chapter Contributing
|
||||||
|
|
83
doc/images/bootstrap-graph.dot
Normal file
83
doc/images/bootstrap-graph.dot
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
# Obtained by running "nix-store --graph" on the first GCC derivation.
|
||||||
|
|
||||||
|
digraph G {
|
||||||
|
"/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [label = "gcc-bootstrap-0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "black"];
|
||||||
|
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "red"];
|
||||||
|
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "green"];
|
||||||
|
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "blue"];
|
||||||
|
"/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "magenta"];
|
||||||
|
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "burlywood"];
|
||||||
|
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "black"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "red"];
|
||||||
|
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "green"];
|
||||||
|
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" [label = "tar", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [label = "glibc-bootstrap-0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "blue"];
|
||||||
|
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "magenta"];
|
||||||
|
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "burlywood"];
|
||||||
|
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "black"];
|
||||||
|
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "red"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "green"];
|
||||||
|
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "blue"];
|
||||||
|
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" [label = "xz", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [label = "glibc-bootstrap-0-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [color = "magenta"];
|
||||||
|
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [color = "burlywood"];
|
||||||
|
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [label = "module-import.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "black"];
|
||||||
|
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "red"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "green"];
|
||||||
|
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [label = "module-import-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [color = "blue"];
|
||||||
|
"/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [label = "gcc-4.7.2.tar.xz.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "magenta"];
|
||||||
|
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "burlywood"];
|
||||||
|
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "black"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "red"];
|
||||||
|
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" [label = "gcc-4.7.2.tar.xz-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" [label = "bash", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [label = "module-import.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "green"];
|
||||||
|
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "blue"];
|
||||||
|
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "magenta"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "burlywood"];
|
||||||
|
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "black"];
|
||||||
|
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" [label = "ftp-client.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" [label = "download.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" [label = "utils.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "red"];
|
||||||
|
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "green"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "blue"];
|
||||||
|
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [label = "gcc-bootstrap-0-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "magenta"];
|
||||||
|
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "burlywood"];
|
||||||
|
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "black"];
|
||||||
|
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [label = "glibc-2.17.tar.xz.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "red"];
|
||||||
|
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "green"];
|
||||||
|
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "blue"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "magenta"];
|
||||||
|
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" [label = "glibc-2.17.tar.xz-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [label = "guile-bootstrap-2.0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" -> "/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [color = "burlywood"];
|
||||||
|
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [color = "black"];
|
||||||
|
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [label = "build-bootstrap-guile.sh", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "red"];
|
||||||
|
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "green"];
|
||||||
|
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "blue"];
|
||||||
|
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "magenta"];
|
||||||
|
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" [label = "mkdir", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" [label = "guile-2.0.7.tar.xz", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "burlywood"];
|
||||||
|
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "black"];
|
||||||
|
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "red"];
|
||||||
|
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [label = "module-import-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||||
|
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "green"];
|
||||||
|
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "blue"];
|
||||||
|
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "magenta"];
|
||||||
|
}
|
Loading…
Reference in a new issue