After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 953 KiB |
After Width: | Height: | Size: 854 KiB |
After Width: | Height: | Size: 967 KiB |
|
@ -0,0 +1,292 @@
|
|||
# time grep -E '^([^#]|$)' autocue.org | sed -re 's/^[*]+.*/. . slide. ./' | head -264 | tr '\n' ' ' | espeak -s 110 -l 1
|
||||
#+TITLE: GNU Mes
|
||||
|
||||
* Introduction
|
||||
|
||||
hello, i am janneke.
|
||||
|
||||
this talk is about GNU Mes and the ongoing effort to remove all
|
||||
the binaries that we inject into our free software stack.
|
||||
|
||||
** Scheme-only bootstrap: Why?
|
||||
|
||||
hopefully you will learn what the new bootstrapping hype is all about.
|
||||
|
||||
** Scheme-only bootstrap: GNU Mes
|
||||
|
||||
to crack the chicken and egg problem that bootstrapping is, i wrote GNU
|
||||
Mes.
|
||||
|
||||
MesCC is a C99 compiler written in a subset of Guile Scheme and comes
|
||||
with Mes, a Scheme interpreter to run it.
|
||||
|
||||
** Auditable Elegance
|
||||
|
||||
it has been known from the early days of computing that LISP gives us an
|
||||
excellent way to jump from a low level language to an elegant, high
|
||||
level language.
|
||||
|
||||
** Long path: Best Practice
|
||||
|
||||
before we had mes, how were our systems bootstrapped, you may wonder?
|
||||
|
||||
in short: they weren't, really.
|
||||
|
||||
** Reduce binary seeds to bare minimum
|
||||
|
||||
not so GNU Guix. Like NixOS, it has had a proper bootstrap.
|
||||
|
||||
** Guix /pronounced geeks/
|
||||
|
||||
So what is different? Ludovic noted that injecting these binary
|
||||
bootstrap seeds is a problem, and suggested we get rid of them.
|
||||
|
||||
** A big problem, predicted 40y ago
|
||||
|
||||
in the eighties, ken thompson showed us that we were having a big problem
|
||||
in computing.
|
||||
|
||||
how do we react when someone points out a big problem that will be
|
||||
affecting almost everyone and is very hard to solve?
|
||||
|
||||
** Long path: Ignoring the problem
|
||||
|
||||
we ignore it.
|
||||
|
||||
** Long path: GNU Guix System v1.0
|
||||
|
||||
Guix and its sister Nix use a much smaller set of binary bootstrap
|
||||
seeds.
|
||||
|
||||
but there is a another reason why Nix and Guix are great for
|
||||
bootstrapping research and experiments.
|
||||
|
||||
the dependencies between packages are an acyclic, directed graph; unlike
|
||||
others there are no bootstrap cycles.
|
||||
|
||||
this means that if we find a way to reduce the bootstrap binary seed,
|
||||
the the system will still build.
|
||||
|
||||
** Carl Dong -- bitcoin build system security
|
||||
|
||||
the importance of this was evident to bitcoin developer Carl Dong of
|
||||
Chaincode Labs.
|
||||
|
||||
i warmly recommend his talk he gave this summer at the breaking bitcoin
|
||||
conference, it will only take 18 minutes of your time.
|
||||
|
||||
** Reproducible-Builds.org
|
||||
|
||||
carl dong explains that bitcoin, driven by the wish to provide secure
|
||||
bitcoin downloads, have implemented Gitian, a system that uses
|
||||
reproducible builds.
|
||||
|
||||
** What is a Bootstrap?
|
||||
|
||||
in computing, bootstrapping is slang for doing something that is
|
||||
impossible.
|
||||
|
||||
for example, let's say you wrote the very first C compiler in C and you
|
||||
called it GNU CC; it is impossible to compile this C source code into a
|
||||
a working gcc program.
|
||||
|
||||
** How to Bootstrap: An Old Recipe...
|
||||
|
||||
when we want to do something that is impossible, yet we know something
|
||||
quite similar has been done before, what do we do? we just ask grandma.
|
||||
|
||||
grandma, show mee again how you made that yoghurt. well son, you can
|
||||
use fresh milk, and add a some yoghurt leftover from yesterday.
|
||||
|
||||
** How to Bootstrap: Create your second GCC
|
||||
|
||||
using this wisdom, we can now create our second GCC!
|
||||
|
||||
** Pour milk
|
||||
|
||||
we would like this second GCC to be really bug-free, feature-full and
|
||||
secure. so while this may look like ordinary milk, it is actually a
|
||||
carefully crafted piece of software. a masterpiece. peer reviewed.
|
||||
free software, the real difficult bits may have been pair programmed.
|
||||
|
||||
if at all possible, we apply formal verification methods to make our
|
||||
second compiler really secure!
|
||||
|
||||
** Add yoghurt
|
||||
|
||||
we publish the recipe, so that others may verify the result. their
|
||||
second compiler.
|
||||
|
||||
** We're reproducible
|
||||
|
||||
and low and behold, your second compiler exactly matches ours!
|
||||
|
||||
as long as you follow our recipe.
|
||||
|
||||
** Add evil yoghurt
|
||||
|
||||
and use the exact same, FIRST compiler...
|
||||
|
||||
** We're reproducible
|
||||
|
||||
everyone is ...
|
||||
|
||||
** Evil yoghurt
|
||||
|
||||
just as bug-free and secure
|
||||
|
||||
** We're reproducibly malicous
|
||||
|
||||
as our shared, FIRST compiler is
|
||||
|
||||
** Reproducibility is not enough
|
||||
|
||||
reproducibility is no substitute for bootstrappability
|
||||
|
||||
** Reproducibility plus clean source code is not enough
|
||||
|
||||
and while bug-free source code remains important, we need something
|
||||
else.
|
||||
|
||||
** Guix /pronounced geeks/
|
||||
|
||||
Carl Dong noticed that Gitian, to build reproducibly, starts by
|
||||
downloading "almost all of ubuntu".
|
||||
|
||||
so as an attempt to create a more secure and trustworthy bitcoin binary
|
||||
download, we download a whole lot of binaries that we must first trust.
|
||||
|
||||
hmm?
|
||||
|
||||
Carl went looking for a more acceptable solution and found it in Guix.
|
||||
|
||||
** Long path: Reduced Binary Seed bootstrap
|
||||
|
||||
last year at fosdem, i presented the reduced binary seed bootstrap.
|
||||
the next release of Guix has a bootstrap path without GCC.
|
||||
|
||||
no more trusting the first GCC.
|
||||
|
||||
** GCC mesboot0
|
||||
|
||||
could we possibly reduce the binary seed even further? we would have to
|
||||
remove bash, core utils, awk, grep, gzip, make, sed, tar.
|
||||
|
||||
that's a lot of work.
|
||||
|
||||
** NLnet Foundation
|
||||
|
||||
so we are very excited that NlNet believes that what we are doing is
|
||||
important. nlnet provided a grant for me to work on the Scheme-only
|
||||
bootstrap.
|
||||
|
||||
|
||||
** Long path: Scheme-only bootstrap
|
||||
|
||||
and that's what i present you this year; another reduction by 50%
|
||||
|
||||
** Scheme-only bootstrap: Gash Core Utils
|
||||
|
||||
a key ingredient was the development of gash core utils. currently
|
||||
focussed single-mindedly on supporting the bootstrap, we plan to create
|
||||
a scheme library for shell scripting.
|
||||
|
||||
** GCC core-mesboot0-scheme-only
|
||||
|
||||
this is what the graph looks like now: the only interesting binaries
|
||||
left, are a scheme interpreter and scheme compiler: mes and guile.
|
||||
|
||||
** GCC mesboot0-scheme-only
|
||||
|
||||
???
|
||||
|
||||
** Cross distro reproducibility
|
||||
|
||||
after Vagrant Cascadian packaged Mes for Debian and got it into
|
||||
unstable, he wondered if there was something we could do to increase the
|
||||
trust in Mes.
|
||||
|
||||
when he suggested a cross-distro reproducibility test at the
|
||||
reproducible build summit, david terry and jelle van der waa joined in
|
||||
|
||||
** The holy grail
|
||||
|
||||
something else we can do?
|
||||
|
||||
** Full Source Bootstrap
|
||||
|
||||
given that we dislike downloading binaries and trusting them, why not
|
||||
stop doing so altogether?
|
||||
|
||||
** Long path: Full Source Bootstrap
|
||||
|
||||
the coming year, we will create a full source bootstrap path
|
||||
|
||||
** Trusted Computing Base
|
||||
|
||||
anything else?
|
||||
|
||||
** Trusted Computing Base
|
||||
|
||||
when building a package on Guix, the trusted computing base includes
|
||||
the build daemon and the linux kernel.
|
||||
|
||||
ludovic has built a package in the intial ramdisk, thereby removing the
|
||||
build daemon from the trusted computing base.
|
||||
|
||||
an obvious next step is linux.
|
||||
|
||||
mes v0.22 now runs on the hurd, a micro kernel is another possibility to
|
||||
reduce the trusted computing base.
|
||||
|
||||
** Raising the bar on auditibility
|
||||
|
||||
are our efforts coming to an end? jeremiah orians has some ideas to
|
||||
keep us busy.
|
||||
|
||||
** Won't your life be boring?
|
||||
|
||||
and so does mark weaver, who is making an excellent point.
|
||||
|
||||
** Joy of Source
|
||||
|
||||
are we doing this only to counter the trusting trust attack?
|
||||
|
||||
i'm not sure, i think that building from source is the proper way to do
|
||||
computing; and the trusting trust attack is only a symptom of confusing
|
||||
a binary substitute with the compilation of source code.
|
||||
|
||||
* Thanks
|
||||
|
||||
i am very grateful for getting so much help and seeing this crazy
|
||||
project grow!
|
||||
|
||||
** Want to join?
|
||||
|
||||
that's all folks!
|
||||
|
||||
*** You can help
|
||||
* make Guix run on Mes
|
||||
* write a bootstrappable syntax-case
|
||||
* simplify MesCC and target GCC-4.6
|
||||
* bootstrap NixOS, Debian
|
||||
* port MesCC to the Hurd, FreeBSD
|
||||
* spread the message
|
||||
* retweet =@janneke_gnu= =janneke@octodon.social=
|
||||
|
||||
*** Connect
|
||||
* irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
|
||||
* mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
|
||||
* git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
|
||||
* web [[http://bootstrappable.org][bootstrappable.org]]
|
||||
|
||||
* legalese
|
||||
Copyright \copy 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
|
||||
#+BEGIN_QUOTE
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts.
|
||||
#+END_QUOTE
|
|
@ -0,0 +1,27 @@
|
|||
% GNU Mes --- Maxwell Equations of Software
|
||||
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
%
|
||||
% This file is part of GNU Mes.
|
||||
%
|
||||
% GNU Mes is free software; you can redistribute it and/or modify it
|
||||
% under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 3 of the License, or (at
|
||||
% your option) any later version.
|
||||
%
|
||||
% GNU Mes is distributed in the hope that it will be useful, but
|
||||
% WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
\usecolortheme{spruce}
|
||||
\setbeamercolor*{structure}{fg=blue!25!white}
|
||||
\setbeamercolor*{structure}{fg=MSUgreen!80!white}
|
||||
\setbeamercolor{block title}{use=structure,fg=white,bg=structure.fg!75!black}
|
||||
|
||||
\mode
|
||||
<all>
|
|
@ -0,0 +1,36 @@
|
|||
% GNU Mes --- Maxwell Equations of Software
|
||||
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
%
|
||||
% This file is part of GNU Mes.
|
||||
%
|
||||
% GNU Mes is free software; you can redistribute it and/or modify it
|
||||
% under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 3 of the License, or (at
|
||||
% your option) any later version.
|
||||
%
|
||||
% GNU Mes is distributed in the hope that it will be useful, but
|
||||
% WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
\setbeamertemplate{navigation symbols}{}
|
||||
|
||||
\newif\ifbeamer@secheader
|
||||
\beamer@secheaderfalse
|
||||
|
||||
\DeclareOptionBeamer{secheader}{\beamer@secheadertrue}
|
||||
\ProcessOptionsBeamer
|
||||
|
||||
\usecolortheme{X}
|
||||
\useinnertheme[shadow]{rounded}
|
||||
\useoutertheme{infolines}
|
||||
|
||||
\ifbeamer@secheader\else\setbeamertemplate{headline}[default]\fi
|
||||
|
||||
\mode
|
||||
<all>
|
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 551 KiB |
After Width: | Height: | Size: 936 KiB |
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 915 KiB |
After Width: | Height: | Size: 760 KiB |
After Width: | Height: | Size: 768 KiB |
After Width: | Height: | Size: 684 KiB |
After Width: | Height: | Size: 814 KiB |
|
@ -0,0 +1,572 @@
|
|||
#+TITLE: GNU Mes
|
||||
#+TITLE: \smaller[2]{-- Scheme-only bootstrap}
|
||||
#+DATE:2020-02-02
|
||||
#+EMAIL: janneke@gnu.org
|
||||
#+AUTHOR: janneke@gnu.org
|
||||
#+COPYRIGHT: janneke (Jan) Nieuwenhuizen <janneke@gn.org>
|
||||
#+LICENSE: GNU Free Documentation License, version 1.3 or later.
|
||||
#+OPTIONS: H:2 @:t ::t
|
||||
#+OPTIONS: tex:t latex:t todo:t tasks:t
|
||||
#+LATEX_HEADER:\institute{FOSDEM'20}
|
||||
#+LATEX_HEADER:\def\ahref#1#2{\htmladdnormallink{#2}{#1}}
|
||||
#+LATEX_CLASS: beamer
|
||||
#+LATEX_CLASS_OPTIONS: [presentation]
|
||||
#+LATEX_HEADER: \usepackage{relsize}
|
||||
#+LATEX_HEADER: \usepackage{hyperref}
|
||||
#+LATEX_HEADER: \mode<beamer>{\usetheme{X}}
|
||||
#+KEYWORDS: GNU, Mes, Mes, Guix, bootstrappable, reproducible
|
||||
#+BEAMER_THEME: X
|
||||
#+BEAMER_FRAME_LEVEL: 2
|
||||
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
|
||||
# #+LATEX_HEADER:\usepackage{pgfpages}
|
||||
# #+LATEX_HEADER:\setbeameroption{show notes}
|
||||
# #+LATEX_HEADER:\setbeameroption{show notes on second screen=left}
|
||||
|
||||
|
||||
* Introduction
|
||||
|
||||
** Scheme-only bootstrap: Why?
|
||||
|
||||
#+LATEX:\begin{center}
|
||||
Why bootstrapping is important to you.
|
||||
|
||||
or
|
||||
|
||||
Why bootstrapping is something you wish to ignore.
|
||||
#+LATEX:\end{center}
|
||||
|
||||
** Scheme-only bootstrap: GNU Mes
|
||||
|
||||
*** GNU Mes
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.6
|
||||
:BEAMER_ENV: block
|
||||
:END:
|
||||
|
||||
* A Scheme interpreter written in ~5,000LOC of simple C.
|
||||
|
||||
* A C compiler written in Scheme.
|
||||
|
||||
* Built on LISP: eval/apply, the *Maxwell Equations of Software*.
|
||||
*** LOGO
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.3
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\rightskip=2cm\includegraphics[width=0.7\textwidth]{mes.png}
|
||||
|
||||
|
||||
** Auditable Elegance
|
||||
|
||||
#+LATEX:\tiny
|
||||
#+BEGIN_SRC scheme
|
||||
(define (apply fn x a)
|
||||
(cond
|
||||
((atom fn)
|
||||
(cond
|
||||
((eq fn CAR) (caar x))
|
||||
((eq fn CDR) (cdar x))
|
||||
((eq fn CONS) (cons (car x) (cadr x)))
|
||||
((eq fn ATOM) (atom (car x)))
|
||||
((eq fn EQ) (eq (car x) (cadr x)))
|
||||
(#t (apply (eval fn a) x a))))
|
||||
((eq (car fn) LAMBDA)
|
||||
(eval (caddr fn) (pairlis (cadr fn) x a)))
|
||||
((eq (car fn) LABEL)
|
||||
(apply (caddr fn) x
|
||||
(cons (cons (cadr fn) (caddr fn)) a)))))
|
||||
|
||||
(define (eval e a)
|
||||
(cond
|
||||
((atom e) (cdr (assoc e a)))
|
||||
((atom (car e))
|
||||
(cond ((eq (car e) QUOTE) (cadr e))
|
||||
((eq (car e) COND) (evcon (cdr e) a))
|
||||
(#t (apply (car e) (evlis (cdr e) a) a))))
|
||||
(#t (apply (car e) (evlis (cdr e) a) a))))
|
||||
#+END_SRC
|
||||
#+LATEX:\normalsize
|
||||
|
||||
=eval= and =apply= are mutual recursing functions that---using
|
||||
a few helper functions---describe the universe of computing.
|
||||
|
||||
** Long path: Best Practice
|
||||
#+LATEX:\Large
|
||||
*** GNU Mes
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.7
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\normalfont
|
||||
* *500+ MB:* no bootstrap
|
||||
#+LATEX:\vskip 10cm
|
||||
*** LOGO
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.3
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
|
||||
#+LATEX:\vskip 10cm
|
||||
#+LATEX:\normalsize
|
||||
|
||||
** Guix /pronounced geeks/
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{guix-pronounced-geeks.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Reduce binary seeds to bare minimum
|
||||
#+BEGIN_QUOTE
|
||||
These big chunks of binary code are practically non-auditable which
|
||||
breaks the source to binary transparency that we get in the rest of
|
||||
the package dependency graph.
|
||||
#+END_QUOTE
|
||||
#+BEGIN_QUOTE
|
||||
Every unauditable binary leaves us vulnerable to compiler backdoors as
|
||||
described by Ken Thompson in the 1984 paper *Reflections on Trusting
|
||||
Trust*.
|
||||
#+END_QUOTE
|
||||
#+BEGIN_QUOTE
|
||||
Thus, our goal is to reduce the set of bootstrap binaries to the bare
|
||||
minimum. -- Ludovic Courtès (GNU Guix documentation, December 2017)
|
||||
#+END_QUOTE
|
||||
|
||||
** A big problem, predicted 40y ago
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{ken-thompson.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Long path: Ignoring the Problem
|
||||
#+LATEX:\Large
|
||||
*** GNU Mes
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.7
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\normalfont
|
||||
* *500+ MB:* no bootstrap
|
||||
*** LOGO
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.3
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
|
||||
#+LATEX:\normalsize
|
||||
*** FOO
|
||||
:PROPERTIES:
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\includegraphics[width=2cm]{logos/android.png}
|
||||
#+LATEX:{\includegraphics[height=0.8cm]{logos/apple.png}\includegraphics[width=1.2cm]{logos/macos.png}}
|
||||
#+LATEX:\includegraphics[height=1cm]{logos/debian.png}
|
||||
#+LATEX:\includegraphics[width=2cm]{logos/fedora.png}
|
||||
#+LATEX:\includegraphics[height=0.8cm]{logos/freebsd.png}
|
||||
#+LATEX:\includegraphics[height=0.8cm]{logos/netbsd.png}
|
||||
#+LATEX:\includegraphics[height=1cm]{logos/openbsd.png}
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/opensuse.png}
|
||||
#+LATEX:\includegraphics[width=2cm]{logos/redhat.png}
|
||||
#+LATEX:\includegraphics[width=2cm]{logos/ubuntu.png}
|
||||
#+LATEX:\includegraphics[width=2.2cm]{logos/windows.png}
|
||||
#+LATEX:\vskip 5cm
|
||||
#+LATEX:\normalsize
|
||||
|
||||
|
||||
** Long path: GNU Guix System v1.0
|
||||
#+LATEX:\Large
|
||||
*** GNU Mes
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.75
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\normalfont
|
||||
* *500+ MB:* no bootstrap
|
||||
* *252 MB:* GNU Guix System v1.0
|
||||
#+LATEX:\vskip 6cm
|
||||
*** LOGO
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.25
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
|
||||
#+LATEX:\vskip 5.5cm
|
||||
#+LATEX:\normalsize
|
||||
|
||||
* Reproducibility
|
||||
** Carl Dong -- bitcoin build system security
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{bitcoin-carl-dong.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Reproducible-Builds.org
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** What is a Bootstrap?
|
||||
*** Impossible task: pull yourself up on your boot straps
|
||||
|
||||
#+LATEX:\rightskip=2cm\includegraphics[width=0.3\textwidth]{boot-strap.png}
|
||||
|
||||
*** Software: to create your first: kernel, shell, C compiler, ...
|
||||
|
||||
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
|
||||
#+LATEX:{\fontsize{20}{10}\selectfont source\normalsize}
|
||||
#+LATEX:{\fontsize{40}{20}\selectfont + ?? =}
|
||||
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
|
||||
#+LATEX:{\fontsize{20}{10}\selectfont binary\normalsize}
|
||||
|
||||
** How to Bootstrap: An Old Recipe...
|
||||
#+LATEX:\rightskip=2cm\includegraphics[width=0.3\textwidth]{yoghurt.png}\\
|
||||
#+BEGIN_QUOTE
|
||||
Recipe for yoghurt: Add yoghurt to milk -- Anonymous
|
||||
#+END_QUOTE
|
||||
** How to Bootstrap: Create your second GCC
|
||||
|
||||
*** IGNORE
|
||||
:PROPERTIES:
|
||||
:BEAMER_env: ignoreheading
|
||||
:END:
|
||||
|
||||
Traditional recipe: like yoghurt
|
||||
#+LATEX:\\[1cm]
|
||||
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
|
||||
#+LATEX:{\fontsize{10}{5}\selectfont source\normalsize}
|
||||
#+LATEX:{\fontsize{40}{20}\selectfont +}
|
||||
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
|
||||
#+LATEX:{\fontsize{10}{5}\selectfont binary - 1\normalsize}
|
||||
#+LATEX:{\fontsize{40}{10}\selectfont = \normalsize}
|
||||
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
|
||||
#+LATEX:{\fontsize{10}{5}\selectfont binary\normalsize}
|
||||
#+LATEX:\\[1cm]
|
||||
|
||||
*** IGNORE
|
||||
:PROPERTIES:
|
||||
:BEAMER_env: ignoreheading
|
||||
:END:
|
||||
|
||||
... and done!
|
||||
|
||||
** Pour milk
|
||||
#+LATEX:{\begin{frame}[plain]
|
||||
#+LATEX:{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{pour-milk.png}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Add yoghurt
|
||||
#+LATEX:{\begin{frame}[plain]
|
||||
#+LATEX:{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{add-yoghurt.png}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** We're reproducible
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducible.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Add evil yoghurt
|
||||
#+LATEX:{\begin{frame}[plain]
|
||||
#+LATEX:{\vskip-2.5cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{add-evil-yoghurt.png}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** We're reproducible
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducible.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Evil yoghurt
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{evil-yoghurt-rect-black.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** We're reproducibly malicous
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducibly-malicious.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Reproducibility is not enough
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducibility-is-not-enough.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
|
||||
** Reproducibility plus clean source code is not enough
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducibility+clean-source-code.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
|
||||
* Bootstrappability
|
||||
|
||||
** Guix /pronounced geeks/
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{guix-pronounced-geeks.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Long path: Reduced Binary Seed bootstrap
|
||||
#+LATEX:\Large
|
||||
*** GNU Mes
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.75
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\normalfont
|
||||
* *500+ MB:* no bootstrap
|
||||
* *252 MB:* GNU Guix System v1.0
|
||||
* *145 MB:* Reduced Binary Seed
|
||||
+ master branch
|
||||
+ +GCC+, +GLIBC+, +Binutils+
|
||||
+ + MesCC-Tools, + Mes
|
||||
#+LATEX:\vskip 5cm
|
||||
*** LOGO
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.25
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\[1cm]
|
||||
#+LATEX:\vskip 4.75cm
|
||||
#+LATEX:\normalsize
|
||||
|
||||
** GCC mesboot0
|
||||
#+LATEX:{\hspace{-0.55cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-1.9cm\includegraphics[width=1\paperwidth,height=1\paperheight]{gcc-mesboot0-unversioned.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** NLnet Foundation
|
||||
#+LATEX:\begin{center}
|
||||
#+LATEX:\includegraphics[width=0.5\paperwidth,height=0.5\paperheight]{nl-net.png}
|
||||
#+LATEX:\end{center}
|
||||
|
||||
** Long path: Scheme-only bootstrap
|
||||
#+LATEX:\Large
|
||||
*** GNU Mes
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.75
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\normalfont
|
||||
* *500+ MB:* no bootstrap
|
||||
* *252 MB:* GNU Guix System v1.0
|
||||
* *145 MB:* Reduced Binary Seed
|
||||
+ master branch
|
||||
+ +GCC+, +GLIBC+, +Binutils+
|
||||
+ + MesCC-Tools, + Mes
|
||||
* *57 MB:* Scheme-only
|
||||
+ wip-bootstrap branch
|
||||
+ +Awk+, +Bash+, +Bzip2+, +GNU Core Utilities+, +Grep+, +Gzip+,
|
||||
+Make+, +Patch+, +Sed+, +Tar+, and +XZ+.
|
||||
+ + Gash (source only!)
|
||||
#+LATEX:\vskip 3cm
|
||||
*** LOGO
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.25
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\[1cm]
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\
|
||||
#+LATEX:\vskip 4.75cm
|
||||
#+LATEX:\normalsize
|
||||
|
||||
** Scheme-only bootstrap: Gash Core Utils
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
awk cp gash mv sleep uname
|
||||
basename cut grep pwd sort uniq
|
||||
bash diff gzip reboot tar wc
|
||||
cat dirname head rm test which
|
||||
chmod expr ln rmdir touch
|
||||
cmp false ls sed tr
|
||||
compress find mkdir sh true
|
||||
#+END_SRC
|
||||
|
||||
|
||||
** GCC core-mesboot0-scheme-only
|
||||
#+LATEX:{\hspace{-0.55cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-1.9cm\includegraphics[width=1\paperwidth,height=1\paperheight]{gcc-core-mesboot0-scheme-only-unversioned.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** GCC mesboot0-scheme-only
|
||||
#+LATEX:{\hspace{-0.55cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-1.9cm\includegraphics[width=1\paperwidth,height=1\paperheight]{gcc-mesboot0-scheme-only-unversioned.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
|
||||
** Cross distro reproducibility
|
||||
The sha256sum for bin/mes-mescc on x86 shall be
|
||||
|
||||
#+LATEX:\scriptsize
|
||||
#+BEGIN_SRC sh
|
||||
722790ed261954eb53cf2cd2906c89c7589ef72b66171bbe2a9dce0f0af20232 v0.22
|
||||
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb v0.21
|
||||
#+END_SRC
|
||||
#+LATEX:\normalsize
|
||||
|
||||
only differing in the version number string.
|
||||
|
||||
#+LATEX:\begin{center}
|
||||
#+LATEX:\begin{minipage}{0.8\paperwidth}
|
||||
#+LATEX:$\vcenter{\hbox{\includegraphics[height=1.5cm]{logos/debian.png}}}$
|
||||
#+LATEX:$\vcenter{\hbox{\includegraphics[height=0.5cm]{chain.png}}}$
|
||||
#+LATEX:$\vcenter{\hbox{\includegraphics[height=1.5cm]{logos/guix.png}}}$
|
||||
#+LATEX:$\vcenter{\hbox{\includegraphics[height=0.5cm]{chain.png}}}$
|
||||
#+LATEX:$\vcenter{\hbox{\includegraphics[height=0.8cm]{logos/nixos.png}}}$
|
||||
#+LATEX:\end{minipage}
|
||||
#+LATEX:\end{center}
|
||||
|
||||
For v0.21 this has been verified on Guix System, Debian GNU/Linux and NixOS.
|
||||
|
||||
** The holy grail
|
||||
#+BEGIN_QUOTE
|
||||
The holy grail of bootstrappability will be connecting mes to hex0.
|
||||
|
||||
-- Carl Dong, Chaincode Labs
|
||||
#+END_QUOTE
|
||||
|
||||
** Full Source Bootstrap
|
||||
#+LATEX:\begin{center}
|
||||
#+LATEX:\includegraphics[width=0.6\textwidth]{fsb-logo-guile-guix-mes.png}
|
||||
#+LATEX:\end{center}
|
||||
|
||||
** Long path: Full Source Bootstrap
|
||||
#+LATEX:\Large
|
||||
*** GNU Mes
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.75
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\normalfont
|
||||
* *500+ MB:* no bootstrap
|
||||
* *252 MB:* GNU Guix System v1.0
|
||||
* *145 MB:* Reduced Binary Seed
|
||||
+ master branch
|
||||
+ +GCC+, +GLIBC+, +Binutils+
|
||||
+ + MesCC-Tools, + Mes
|
||||
* *57 MB:* Scheme-only
|
||||
+ wip-bootstrap branch
|
||||
+ +Awk+, +Bash+, +Bzip2+, +GNU Core Utilities+, +Grep+, +Gzip+,
|
||||
+Make+, +Patch+, +Sed+, +Tar+, and +XZ+.
|
||||
+ + Gash (source only!)
|
||||
* *357 bytes:* Full Source
|
||||
+ +MesCC-Tools+, +Mes+
|
||||
+ + Stage0: 357 bytes (x86)
|
||||
#+LATEX:\vskip 1cm
|
||||
*** LOGO
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.25
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\[1cm]
|
||||
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\
|
||||
#+LATEX:\vskip 4.2cm
|
||||
#+LATEX:\normalsize
|
||||
|
||||
|
||||
** Trusted Computing Base
|
||||
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
|
||||
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{bowl-empty-spoon.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Trusted Computing Base
|
||||
* Source code
|
||||
* Binary seeds
|
||||
* Guix System
|
||||
* Linux
|
||||
|
||||
** Raising the bar on auditibility
|
||||
#+BEGIN_QUOTE
|
||||
I want code easy to reason about at the heart of this bootstrap, so that
|
||||
everyone will be able to sit down in the morning and be done by lunch
|
||||
time; understanding how every piece of it works.
|
||||
-- Jeremiah Orians
|
||||
#+END_QUOTE
|
||||
|
||||
** Won't your life be boring?
|
||||
#+BEGIN_QUOTE
|
||||
MesCC should optimize for the ease of convincing us of its correctness.
|
||||
-- Mark H Weaver
|
||||
#+END_QUOTE
|
||||
|
||||
** Joy of Source
|
||||
#+LATEX:\large
|
||||
#+BEGIN_QUOTE
|
||||
Vulnerability to a *trusting trust attack* is a symptom of an
|
||||
unauditable or missing bootstrap story. -- janneke
|
||||
#+END_QUOTE
|
||||
#+LATEX:\normalsize
|
||||
|
||||
* Thanks
|
||||
** Thanks
|
||||
# *** Mortals :B_block:BMCOL:
|
||||
# :PROPERTIES:
|
||||
# :BEAMER_COL: 0.48
|
||||
# :BEAMER_ENV: block
|
||||
# :END:
|
||||
* Carl Dong
|
||||
* Danny Milosavljevic
|
||||
* David Terry
|
||||
* Jeremiah Orians
|
||||
* Ludovic Courtès
|
||||
* Matt Wette
|
||||
* Pjotr Prins
|
||||
* Rutger van Beusekom
|
||||
* Timothy Sample
|
||||
* Vagrant Cascadian
|
||||
# *** All the Giants :B_block:BMCOL:
|
||||
# :PROPERTIES:
|
||||
# :BEAMER_COL: 0.48
|
||||
# :xBEAMER_ACT: <2->
|
||||
# :BEAMER_ENV: block
|
||||
# :END:
|
||||
# * ...
|
||||
# *** Connect
|
||||
# * irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
|
||||
# * mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
|
||||
# * git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
|
||||
# * web [[http://bootstrappable.org][bootstrappable.org]]
|
||||
|
||||
** Want to join?
|
||||
*** You can help
|
||||
* make Guix run on Mes
|
||||
* write a bootstrappable syntax-case
|
||||
* simplify MesCC and target GCC-4.6
|
||||
* bootstrap NixOS, Debian
|
||||
* port MesCC to the Hurd, FreeBSD
|
||||
* spread the message
|
||||
* retweet =@janneke_gnu= =janneke@octodon.social=
|
||||
|
||||
*** Connect
|
||||
* irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
|
||||
* mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
|
||||
* git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
|
||||
* web [[http://bootstrappable.org][bootstrappable.org]]
|
||||
|
||||
* legalese
|
||||
:PROPERTIES:
|
||||
:BEAMER_ENV: note
|
||||
:COPYING: t
|
||||
:END:
|
||||
|
||||
Copyright \copy 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
|
||||
#+BEGIN_QUOTE
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation License,
|
||||
Version 1.3 or any later version published by the Free Software
|
||||
Foundation; with no Invariant Sections, with no Front-Cover Texts,
|
||||
and with no Back-Cover Texts.
|
||||
#+END_QUOTE
|
||||
|
||||
By Debian - www.debian.org/logos/, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=3330975
|
||||
By Canonical Ltd. - http://design.ubuntu.com/wp-content/uploads/logo-ubuntu_no%C2%AE-black_orange-hex.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=18296544
|
||||
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=60635229
|
||||
By Original: Apple Inc.Vectorization: Totie - https://www.apple.com/macos/high-sierra/, Public Domain, https://commons.wikimedia.org/w/index.php?curid=59644704
|
||||
By Original: Rob Janoff - https://www.apple.com/ac/globalnav/2.0/en_US/images/ac-globalnav/globalnav/apple/image_large.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=10472152
|
||||
|
||||
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=26987122
|
||||
By Source (WP:NFCC#4), Fair use, https://en.wikipedia.org/w/index.php?curid=38767733
|
||||
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=13822991
|
||||
By Microsoft - File:Windows Server 2012 logo.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=45931123
|
||||
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=28200444
|
After Width: | Height: | Size: 300 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 222 KiB |
|
@ -0,0 +1,116 @@
|
|||
digraph "Guix package" {
|
||||
"gcc-core0" [label = "gcc-core0", shape = box, fontname = Helvetica];
|
||||
"gcc-core0" -> "binutils0" [color = peachpuff4];
|
||||
"gcc-core0" -> "bash0" [color = peachpuff4];
|
||||
"gcc-core0" -> "bzip2" [color = peachpuff4];
|
||||
"gcc-core0" -> "diffutils" [color = peachpuff4];
|
||||
"gcc-core0" -> "gzip" [color = peachpuff4];
|
||||
"gcc-core0" -> "patch" [color = peachpuff4];
|
||||
"gcc-core0" -> "sed0" [color = peachpuff4];
|
||||
"gcc-core0" -> "tcc" [color = peachpuff4];
|
||||
"gcc-core0" -> "make0" [color = peachpuff4];
|
||||
"gcc-core0" -> "gash" [color = peachpuff4];
|
||||
"gcc-core0" -> "gash core utils" [color = peachpuff4];
|
||||
# "gcc-core0" -> "139838140100384" [color = peachpuff4];
|
||||
"gcc-core0" -> "bootstrap-guile" [color = peachpuff4];
|
||||
"binutils0" [label = "binutils0", shape = box, fontname = Helvetica];
|
||||
"binutils0" -> "bash0" [color = cyan3];
|
||||
"binutils0" -> "bzip2" [color = cyan3];
|
||||
"binutils0" -> "diffutils" [color = cyan3];
|
||||
"binutils0" -> "gzip" [color = cyan3];
|
||||
"binutils0" -> "patch" [color = cyan3];
|
||||
"binutils0" -> "sed0" [color = cyan3];
|
||||
"binutils0" -> "tcc" [color = cyan3];
|
||||
"binutils0" -> "make0" [color = cyan3];
|
||||
"binutils0" -> "gash" [color = cyan3];
|
||||
"binutils0" -> "gash core utils" [color = cyan3];
|
||||
# "binutils0" -> "139838140100384" [color = cyan3];
|
||||
"binutils0" -> "bootstrap-guile" [color = cyan3];
|
||||
"bash0" [label = "bash0", shape = box, fontname = Helvetica];
|
||||
"bash0" -> "make0" [color = darkgoldenrod];
|
||||
"bash0" -> "tcc0" [color = darkgoldenrod];
|
||||
"bash0" -> "gash" [color = darkgoldenrod];
|
||||
"bash0" -> "gash core utils" [color = darkgoldenrod];
|
||||
# "bash0" -> "139838140100384" [color = darkgoldenrod];
|
||||
"bash0" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
"make0" [label = "make0", shape = box, fontname = Helvetica];
|
||||
"make0" -> "tcc0" [color = blue];
|
||||
"make0" -> "gash" [color = blue];
|
||||
"make0" -> "gash core utils" [color = blue];
|
||||
# "make0" -> "139838140100384" [color = blue];
|
||||
"make0" -> "bootstrap-guile" [color = blue];
|
||||
"tcc0" [label = "tcc0", shape = box, fontname = Helvetica];
|
||||
"tcc0" -> "mes" [color = red];
|
||||
"tcc0" -> "bootstrap-mescc-tools" [color = red];
|
||||
"tcc0" -> "gash" [color = red];
|
||||
"tcc0" -> "gash core utils" [color = red];
|
||||
# "tcc0" -> "139838140100384" [color = red];
|
||||
"tcc0" -> "bootstrap-guile" [color = red];
|
||||
#"mes" [label = "mes", shape = box, fontname = Helvetica];
|
||||
"mes" [label = "mes", shape = box, fontname = Helvetica];
|
||||
"mes" -> "bootstrap-mes" [color = cyan3];
|
||||
"mes" -> "bootstrap-mescc-tools" [color = cyan3];
|
||||
"mes" -> "gash" [color = cyan3];
|
||||
"mes" -> "gash core utils" [color = cyan3];
|
||||
# "mes" -> "139838140100384" [color = cyan3];
|
||||
"mes" -> "bootstrap-guile" [color = cyan3];
|
||||
#"139837957673136" [label = "bootstrap-mes-rewired", shape = box, fontname = Helvetica];
|
||||
#"139837957673136" [label = "bootstrap-mes", fontname = Helvetica];
|
||||
#"bootstrap-mes" -> "139838140099152" [color = darkseagreen];
|
||||
#"bootstrap-mes" -> "gash" [color = darkseagreen];
|
||||
#"139838140099152" [label = "bootstrap-mes", shape = box, fontname = Helvetica];
|
||||
#"139838140099152" [label = "bootstrap-mes", fontname = Helvetica];
|
||||
"gash" [label = "gash", shape = box, fontname = Helvetica];
|
||||
"gash" -> "bootstrap-guile" [color = red];
|
||||
#"bootstrap-guile" [label = "bootstrap-guile+guild", shape = box, fontname = Helvetica];
|
||||
"bootstrap-guile" [label = "bootstrap-guile", fontname = Helvetica];
|
||||
# "bootstrap-guile" -> "139838140100384" [color = darkviolet];
|
||||
# "139838140100384" [label = "bootstrap-guile", shape = box, fontname = Helvetica];
|
||||
#"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools", shape = box, fontname = Helvetica];
|
||||
"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools", fontname = Helvetica];
|
||||
"gash core utils" [label = "gash-core-utils", shape = box, fontname = Helvetica];
|
||||
"gash core utils" -> "bootstrap-guile" [color = red];
|
||||
"gash core utils" -> "gash" [color = red];
|
||||
"bzip2" [label = "bzip2", shape = box, fontname = Helvetica];
|
||||
"bzip2" -> "make0" [color = red];
|
||||
"bzip2" -> "tcc0" [color = red];
|
||||
"bzip2" -> "gash" [color = red];
|
||||
"bzip2" -> "gash core utils" [color = red];
|
||||
# "bzip2" -> "139838140100384" [color = red];
|
||||
"bzip2" -> "bootstrap-guile" [color = red];
|
||||
"diffutils" [label = "diffutils", shape = box, fontname = Helvetica];
|
||||
"diffutils" -> "make0" [color = blue];
|
||||
"diffutils" -> "tcc0" [color = blue];
|
||||
"diffutils" -> "gash" [color = blue];
|
||||
"diffutils" -> "gash core utils" [color = blue];
|
||||
# "diffutils" -> "139838140100384" [color = blue];
|
||||
"diffutils" -> "bootstrap-guile" [color = blue];
|
||||
"gzip" [label = "gzip", shape = box, fontname = Helvetica];
|
||||
"gzip" -> "tcc0" [color = blue];
|
||||
"gzip" -> "gash" [color = blue];
|
||||
"gzip" -> "gash core utils" [color = blue];
|
||||
# "gzip" -> "139838140100384" [color = blue];
|
||||
"gzip" -> "bootstrap-guile" [color = blue];
|
||||
"patch" [label = "patch", shape = box, fontname = Helvetica];
|
||||
"patch" -> "make0" [color = blue];
|
||||
"patch" -> "tcc0" [color = blue];
|
||||
"patch" -> "gash" [color = blue];
|
||||
"patch" -> "gash core utils" [color = blue];
|
||||
# "patch" -> "139838140100384" [color = blue];
|
||||
"patch" -> "bootstrap-guile" [color = blue];
|
||||
"sed0" [label = "sed0", shape = box, fontname = Helvetica];
|
||||
"sed0" -> "make0" [color = magenta];
|
||||
"sed0" -> "tcc0" [color = magenta];
|
||||
"sed0" -> "gash" [color = magenta];
|
||||
"sed0" -> "gash core utils" [color = magenta];
|
||||
# "sed0" -> "139838140100384" [color = magenta];
|
||||
"sed0" -> "bootstrap-guile" [color = magenta];
|
||||
"tcc" [label = "tcc", shape = box, fontname = Helvetica];
|
||||
"tcc" -> "bzip2" [color = darkviolet];
|
||||
"tcc" -> "make0" [color = darkviolet];
|
||||
"tcc" -> "tcc0" [color = darkviolet];
|
||||
"tcc" -> "gash" [color = darkviolet];
|
||||
"tcc" -> "gash core utils" [color = darkviolet];
|
||||
# "tcc" -> "139838140100384" [color = darkviolet];
|
||||
"tcc" -> "bootstrap-guile" [color = darkviolet];
|
||||
}
|
After Width: | Height: | Size: 395 KiB |
|
@ -0,0 +1,116 @@
|
|||
digraph "Guix package" {
|
||||
"gcc-core0" [label = "gcc-core0@2.95.3", shape = box, fontname = Helvetica];
|
||||
"gcc-core0" -> "binutils0" [color = peachpuff4];
|
||||
"gcc-core0" -> "bash0" [color = peachpuff4];
|
||||
"gcc-core0" -> "bzip2" [color = peachpuff4];
|
||||
"gcc-core0" -> "diffutils" [color = peachpuff4];
|
||||
"gcc-core0" -> "gzip" [color = peachpuff4];
|
||||
"gcc-core0" -> "patch" [color = peachpuff4];
|
||||
"gcc-core0" -> "sed0" [color = peachpuff4];
|
||||
"gcc-core0" -> "tcc" [color = peachpuff4];
|
||||
"gcc-core0" -> "make0" [color = peachpuff4];
|
||||
"gcc-core0" -> "gash" [color = peachpuff4];
|
||||
"gcc-core0" -> "gash core utils" [color = peachpuff4];
|
||||
# "gcc-core0" -> "139838140100384" [color = peachpuff4];
|
||||
"gcc-core0" -> "bootstrap-guile" [color = peachpuff4];
|
||||
"binutils0" [label = "binutils0@2.14", shape = box, fontname = Helvetica];
|
||||
"binutils0" -> "bash0" [color = cyan3];
|
||||
"binutils0" -> "bzip2" [color = cyan3];
|
||||
"binutils0" -> "diffutils" [color = cyan3];
|
||||
"binutils0" -> "gzip" [color = cyan3];
|
||||
"binutils0" -> "patch" [color = cyan3];
|
||||
"binutils0" -> "sed0" [color = cyan3];
|
||||
"binutils0" -> "tcc" [color = cyan3];
|
||||
"binutils0" -> "make0" [color = cyan3];
|
||||
"binutils0" -> "gash" [color = cyan3];
|
||||
"binutils0" -> "gash core utils" [color = cyan3];
|
||||
# "binutils0" -> "139838140100384" [color = cyan3];
|
||||
"binutils0" -> "bootstrap-guile" [color = cyan3];
|
||||
"bash0" [label = "bash0@2.05b", shape = box, fontname = Helvetica];
|
||||
"bash0" -> "make0" [color = darkgoldenrod];
|
||||
"bash0" -> "tcc0" [color = darkgoldenrod];
|
||||
"bash0" -> "gash" [color = darkgoldenrod];
|
||||
"bash0" -> "gash core utils" [color = darkgoldenrod];
|
||||
# "bash0" -> "139838140100384" [color = darkgoldenrod];
|
||||
"bash0" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
"make0" [label = "make0@3.80", shape = box, fontname = Helvetica];
|
||||
"make0" -> "tcc0" [color = blue];
|
||||
"make0" -> "gash" [color = blue];
|
||||
"make0" -> "gash core utils" [color = blue];
|
||||
# "make0" -> "139838140100384" [color = blue];
|
||||
"make0" -> "bootstrap-guile" [color = blue];
|
||||
"tcc0" [label = "tcc0@0.9.26", shape = box, fontname = Helvetica];
|
||||
"tcc0" -> "mes" [color = red];
|
||||
"tcc0" -> "bootstrap-mescc-tools" [color = red];
|
||||
"tcc0" -> "gash" [color = red];
|
||||
"tcc0" -> "gash core utils" [color = red];
|
||||
# "tcc0" -> "139838140100384" [color = red];
|
||||
"tcc0" -> "bootstrap-guile" [color = red];
|
||||
#"mes" [label = "mes@0.21-54-g85cadbb2c", shape = box, fontname = Helvetica];
|
||||
"mes" [label = "mes@0.22", shape = box, fontname = Helvetica];
|
||||
"mes" -> "bootstrap-mes@0.19" [color = cyan3];
|
||||
"mes" -> "bootstrap-mescc-tools" [color = cyan3];
|
||||
"mes" -> "gash" [color = cyan3];
|
||||
"mes" -> "gash core utils" [color = cyan3];
|
||||
# "mes" -> "139838140100384" [color = cyan3];
|
||||
"mes" -> "bootstrap-guile" [color = cyan3];
|
||||
#"139837957673136" [label = "bootstrap-mes-rewired@0.19", shape = box, fontname = Helvetica];
|
||||
#"139837957673136" [label = "bootstrap-mes@0.19", fontname = Helvetica];
|
||||
#"bootstrap-mes" -> "139838140099152" [color = darkseagreen];
|
||||
#"bootstrap-mes" -> "gash" [color = darkseagreen];
|
||||
#"139838140099152" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica];
|
||||
#"139838140099152" [label = "bootstrap-mes@0.19", fontname = Helvetica];
|
||||
"gash" [label = "gash@0.2.0", shape = box, fontname = Helvetica];
|
||||
"gash" -> "bootstrap-guile" [color = red];
|
||||
#"bootstrap-guile" [label = "bootstrap-guile+guild@2.0", shape = box, fontname = Helvetica];
|
||||
"bootstrap-guile" [label = "bootstrap-guile@2.0", fontname = Helvetica];
|
||||
# "bootstrap-guile" -> "139838140100384" [color = darkviolet];
|
||||
# "139838140100384" [label = "bootstrap-guile@2.0", shape = box, fontname = Helvetica];
|
||||
#"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
|
||||
"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools@0.5.2", fontname = Helvetica];
|
||||
"gash core utils" [label = "gash-core-utils@0.0", shape = box, fontname = Helvetica];
|
||||
"gash core utils" -> "bootstrap-guile" [color = red];
|
||||
"gash core utils" -> "gash" [color = red];
|
||||
"bzip2" [label = "bzip2@1.0.6", shape = box, fontname = Helvetica];
|
||||
"bzip2" -> "make0" [color = red];
|
||||
"bzip2" -> "tcc0" [color = red];
|
||||
"bzip2" -> "gash" [color = red];
|
||||
"bzip2" -> "gash core utils" [color = red];
|
||||
# "bzip2" -> "139838140100384" [color = red];
|
||||
"bzip2" -> "bootstrap-guile" [color = red];
|
||||
"diffutils" [label = "diffutils@2.7", shape = box, fontname = Helvetica];
|
||||
"diffutils" -> "make0" [color = blue];
|
||||
"diffutils" -> "tcc0" [color = blue];
|
||||
"diffutils" -> "gash" [color = blue];
|
||||
"diffutils" -> "gash core utils" [color = blue];
|
||||
# "diffutils" -> "139838140100384" [color = blue];
|
||||
"diffutils" -> "bootstrap-guile" [color = blue];
|
||||
"gzip" [label = "gzip@1.2.4", shape = box, fontname = Helvetica];
|
||||
"gzip" -> "tcc0" [color = blue];
|
||||
"gzip" -> "gash" [color = blue];
|
||||
"gzip" -> "gash core utils" [color = blue];
|
||||
# "gzip" -> "139838140100384" [color = blue];
|
||||
"gzip" -> "bootstrap-guile" [color = blue];
|
||||
"patch" [label = "patch@2.5.9", shape = box, fontname = Helvetica];
|
||||
"patch" -> "make0" [color = blue];
|
||||
"patch" -> "tcc0" [color = blue];
|
||||
"patch" -> "gash" [color = blue];
|
||||
"patch" -> "gash core utils" [color = blue];
|
||||
# "patch" -> "139838140100384" [color = blue];
|
||||
"patch" -> "bootstrap-guile" [color = blue];
|
||||
"sed0" [label = "sed0@1.18", shape = box, fontname = Helvetica];
|
||||
"sed0" -> "make0" [color = magenta];
|
||||
"sed0" -> "tcc0" [color = magenta];
|
||||
"sed0" -> "gash" [color = magenta];
|
||||
"sed0" -> "gash core utils" [color = magenta];
|
||||
# "sed0" -> "139838140100384" [color = magenta];
|
||||
"sed0" -> "bootstrap-guile" [color = magenta];
|
||||
"tcc" [label = "tcc@0.9.27", shape = box, fontname = Helvetica];
|
||||
"tcc" -> "bzip2" [color = darkviolet];
|
||||
"tcc" -> "make0" [color = darkviolet];
|
||||
"tcc" -> "tcc0" [color = darkviolet];
|
||||
"tcc" -> "gash" [color = darkviolet];
|
||||
"tcc" -> "gash core utils" [color = darkviolet];
|
||||
# "tcc" -> "139838140100384" [color = darkviolet];
|
||||
"tcc" -> "bootstrap-guile" [color = darkviolet];
|
||||
}
|
After Width: | Height: | Size: 427 KiB |
|
@ -0,0 +1,180 @@
|
|||
digraph "Guix package" {
|
||||
"gcc0" [label = "gcc0", shape = box, fontname = Helvetica];
|
||||
"gcc0" -> "glibc0" [color = red];
|
||||
"gcc0" -> "linux-libre-headers" [color = red];
|
||||
"gcc0" -> "binutils0" [color = red];
|
||||
"gcc0" -> "gawk0" [color = red];
|
||||
"gcc0" -> "gcc-core0" [color = red];
|
||||
"gcc0" -> "bash0" [color = red];
|
||||
"gcc0" -> "bzip2" [color = red];
|
||||
"gcc0" -> "diffutils" [color = red];
|
||||
"gcc0" -> "gzip" [color = red];
|
||||
"gcc0" -> "patch" [color = red];
|
||||
"gcc0" -> "sed0" [color = red];
|
||||
"gcc0" -> "make0" [color = red];
|
||||
"gcc0" -> "gash" [color = red];
|
||||
"gcc0" -> "gash-core-utils" [color = red];
|
||||
"gcc0" -> "bootstrap-guile" [color = red];
|
||||
#"gcc0" -> "guile-bootstrap+guild" [color = red];
|
||||
"glibc0" [label = "glibc0", shape = box, fontname = Helvetica];
|
||||
"glibc0" -> "mes-headers" [color = dimgrey];
|
||||
"glibc0" -> "binutils0" [color = dimgrey];
|
||||
"glibc0" -> "gawk0" [color = dimgrey];
|
||||
"glibc0" -> "gcc-core0" [color = dimgrey];
|
||||
"glibc0" -> "bash0" [color = dimgrey];
|
||||
"glibc0" -> "bzip2" [color = dimgrey];
|
||||
"glibc0" -> "diffutils" [color = dimgrey];
|
||||
"glibc0" -> "gzip" [color = dimgrey];
|
||||
"glibc0" -> "patch" [color = dimgrey];
|
||||
"glibc0" -> "sed0" [color = dimgrey];
|
||||
"glibc0" -> "make0" [color = dimgrey];
|
||||
"glibc0" -> "gash" [color = dimgrey];
|
||||
"glibc0" -> "gash-core-utils" [color = dimgrey];
|
||||
"glibc0" -> "bootstrap-guile" [color = dimgrey];
|
||||
#"glibc0" -> "guile-bootstrap+guild" [color = dimgrey];
|
||||
"mes-headers" [label = "mes-headers", shape = box, fontname = Helvetica];
|
||||
"mes-headers" -> "linux-libre-headers" [color = blue];
|
||||
"mes-headers" -> "bash0" [color = blue];
|
||||
"mes-headers" -> "bzip2" [color = blue];
|
||||
"mes-headers" -> "diffutils" [color = blue];
|
||||
"mes-headers" -> "gzip" [color = blue];
|
||||
"mes-headers" -> "patch" [color = blue];
|
||||
"mes-headers" -> "sed0" [color = blue];
|
||||
"mes-headers" -> "tcc" [color = blue];
|
||||
"mes-headers" -> "make0" [color = blue];
|
||||
"mes-headers" -> "gash" [color = blue];
|
||||
"mes-headers" -> "gash-core-utils" [color = blue];
|
||||
"mes-headers" -> "bootstrap-guile" [color = blue];
|
||||
#"mes-headers" -> "guile-bootstrap+guild" [color = blue];
|
||||
#"linux-libre-headers" [label = "linux-libre-headers-bootstrap", shape = box, fontname = Helvetica];
|
||||
"linux-libre-headers" [label = "bootstrap-linux-libre-headers", fontname = Helvetica];
|
||||
"bash0" [label = "bash0", shape = box, fontname = Helvetica];
|
||||
"bash0" -> "make0" [color = dimgrey];
|
||||
"bash0" -> "tcc0" [color = dimgrey];
|
||||
"bash0" -> "gash" [color = dimgrey];
|
||||
"bash0" -> "gash-core-utils" [color = dimgrey];
|
||||
"bash0" -> "bootstrap-guile" [color = dimgrey];
|
||||
#"bash0" -> "guile-bootstrap+guild" [color = dimgrey];
|
||||
"make0" [label = "make0", shape = box, fontname = Helvetica];
|
||||
"make0" -> "tcc0" [color = red];
|
||||
"make0" -> "gash" [color = red];
|
||||
"make0" -> "gash-core-utils" [color = red];
|
||||
"make0" -> "bootstrap-guile" [color = red];
|
||||
#"make0" -> "guile-bootstrap+guild" [color = red];
|
||||
"tcc0" [label = "tcc0", shape = box, fontname = Helvetica];
|
||||
"tcc0" -> "mes" [color = darkgoldenrod];
|
||||
"tcc0" -> "bootstrap-mescc-tools" [color = darkgoldenrod];
|
||||
"tcc0" -> "gash" [color = darkgoldenrod];
|
||||
"tcc0" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"tcc0" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"tcc0" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
"mes" [label = "mes", shape = box, fontname = Helvetica];
|
||||
#"mes" -> "bootstrap-mes-rewired" [color = darkgoldenrod];
|
||||
"mes" -> "bootstrap-mes" [color = darkgoldenrod];
|
||||
"mes" -> "bootstrap-mescc-tools" [color = darkgoldenrod];
|
||||
"mes" -> "gash" [color = darkgoldenrod];
|
||||
"mes" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"mes" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"mes" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
#"bootstrap-mes-rewired" [label = "bootstrap-mes-rewired", shape = box, fontname = Helvetica];
|
||||
#"bootstrap-mes-rewired" -> "bootstrap-mes" [color = dimgrey];
|
||||
#"bootstrap-mes-rewired" -> "gash" [color = dimgrey];
|
||||
#"bootstrap-mes" [label = "bootstrap-mes", shape = box, fontname = Helvetica];
|
||||
"bootstrap-mes" [label = "bootstrap-mes", fontname = Helvetica];
|
||||
"gash" [label = "gash", shape = box, fontname = Helvetica];
|
||||
"gash" -> "bootstrap-guile" [color = darkviolet];
|
||||
# "guile-bootstrap+guild" [label = "guile-bootstrap+guild", shape = box, fontname = Helvetica];
|
||||
# "guile-bootstrap+guild" -> "bootstrap-guile" [color = blue];
|
||||
|
||||
#"bootstrap-guile" [label = "guile-bootstrap", shape = box, fontname = Helvetica];
|
||||
"bootstrap-guile" [label = "guile-bootstrap", fontname = Helvetica];
|
||||
#"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools", shape = box, fontname = Helvetica];
|
||||
"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools", fontname = Helvetica];
|
||||
|
||||
"gash-core-utils" [label = "gash-core-utils", shape = box, fontname = Helvetica];
|
||||
"gash-core-utils" -> "bootstrap-guile" [color = red];
|
||||
"gash-core-utils" -> "gash" [color = red];
|
||||
"bzip2" [label = "bzip2", shape = box, fontname = Helvetica];
|
||||
"bzip2" -> "make0" [color = darkgoldenrod];
|
||||
"bzip2" -> "tcc0" [color = darkgoldenrod];
|
||||
"bzip2" -> "gash" [color = darkgoldenrod];
|
||||
"bzip2" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"bzip2" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"bzip2" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
"diffutils" [label = "diffutils", shape = box, fontname = Helvetica];
|
||||
"diffutils" -> "make0" [color = darkgoldenrod];
|
||||
"diffutils" -> "tcc0" [color = darkgoldenrod];
|
||||
"diffutils" -> "gash" [color = darkgoldenrod];
|
||||
"diffutils" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"diffutils" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"diffutils" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
"gzip" [label = "gzip", shape = box, fontname = Helvetica];
|
||||
"gzip" -> "tcc0" [color = darkseagreen];
|
||||
"gzip" -> "gash" [color = darkseagreen];
|
||||
"gzip" -> "gash-core-utils" [color = darkseagreen];
|
||||
"gzip" -> "bootstrap-guile" [color = darkseagreen];
|
||||
#"gzip" -> "guile-bootstrap+guild" [color = darkseagreen];
|
||||
"patch" [label = "patch", shape = box, fontname = Helvetica];
|
||||
"patch" -> "make0" [color = peachpuff4];
|
||||
"patch" -> "tcc0" [color = peachpuff4];
|
||||
"patch" -> "gash" [color = peachpuff4];
|
||||
"patch" -> "gash-core-utils" [color = peachpuff4];
|
||||
"patch" -> "bootstrap-guile" [color = peachpuff4];
|
||||
#"patch" -> "guile-bootstrap+guild" [color = peachpuff4];
|
||||
"sed0" [label = "sed0", shape = box, fontname = Helvetica];
|
||||
"sed0" -> "make0" [color = peachpuff4];
|
||||
"sed0" -> "tcc0" [color = peachpuff4];
|
||||
"sed0" -> "gash" [color = peachpuff4];
|
||||
"sed0" -> "gash-core-utils" [color = peachpuff4];
|
||||
"sed0" -> "bootstrap-guile" [color = peachpuff4];
|
||||
#"sed0" -> "guile-bootstrap+guild" [color = peachpuff4];
|
||||
"tcc" [label = "tcc0", shape = box, fontname = Helvetica];
|
||||
"tcc" -> "bzip2" [color = blue];
|
||||
"tcc" -> "make0" [color = blue];
|
||||
"tcc" -> "tcc0" [color = blue];
|
||||
"tcc" -> "gash" [color = blue];
|
||||
"tcc" -> "gash-core-utils" [color = blue];
|
||||
"tcc" -> "bootstrap-guile" [color = blue];
|
||||
#"tcc" -> "guile-bootstrap+guild" [color = blue];
|
||||
"binutils0" [label = "binutils0", shape = box, fontname = Helvetica];
|
||||
"binutils0" -> "bash0" [color = darkgoldenrod];
|
||||
"binutils0" -> "bzip2" [color = darkgoldenrod];
|
||||
"binutils0" -> "diffutils" [color = darkgoldenrod];
|
||||
"binutils0" -> "gzip" [color = darkgoldenrod];
|
||||
"binutils0" -> "patch" [color = darkgoldenrod];
|
||||
"binutils0" -> "sed0" [color = darkgoldenrod];
|
||||
"binutils0" -> "tcc" [color = darkgoldenrod];
|
||||
"binutils0" -> "make0" [color = darkgoldenrod];
|
||||
"binutils0" -> "gash" [color = darkgoldenrod];
|
||||
"binutils0" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"binutils0" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"binutils0" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
"gawk0" [label = "gawk0", shape = box, fontname = Helvetica];
|
||||
"gawk0" -> "bash0" [color = dimgrey];
|
||||
"gawk0" -> "bzip2" [color = dimgrey];
|
||||
"gawk0" -> "diffutils" [color = dimgrey];
|
||||
"gawk0" -> "gzip" [color = dimgrey];
|
||||
"gawk0" -> "patch" [color = dimgrey];
|
||||
"gawk0" -> "sed0" [color = dimgrey];
|
||||
"gawk0" -> "tcc" [color = dimgrey];
|
||||
"gawk0" -> "make0" [color = dimgrey];
|
||||
"gawk0" -> "gash" [color = dimgrey];
|
||||
"gawk0" -> "gash-core-utils" [color = dimgrey];
|
||||
"gawk0" -> "bootstrap-guile" [color = dimgrey];
|
||||
#"gawk0" -> "guile-bootstrap+guild" [color = dimgrey];
|
||||
"gcc-core0" [label = "gcc-core0", shape = box, fontname = Helvetica];
|
||||
"gcc-core0" -> "binutils0" [color = red];
|
||||
"gcc-core0" -> "bash0" [color = red];
|
||||
"gcc-core0" -> "bzip2" [color = red];
|
||||
"gcc-core0" -> "diffutils" [color = red];
|
||||
"gcc-core0" -> "gzip" [color = red];
|
||||
"gcc-core0" -> "patch" [color = red];
|
||||
"gcc-core0" -> "sed0" [color = red];
|
||||
"gcc-core0" -> "tcc" [color = red];
|
||||
"gcc-core0" -> "make0" [color = red];
|
||||
"gcc-core0" -> "gash" [color = red];
|
||||
"gcc-core0" -> "gash-core-utils" [color = red];
|
||||
"gcc-core0" -> "bootstrap-guile" [color = red];
|
||||
#"gcc-core0" -> "guile-bootstrap+guild" [color = red];
|
||||
|
||||
}
|
After Width: | Height: | Size: 786 KiB |
|
@ -0,0 +1,180 @@
|
|||
digraph "Guix package" {
|
||||
"gcc0" [label = "gcc0@2.95.3", shape = box, fontname = Helvetica];
|
||||
"gcc0" -> "glibc0" [color = red];
|
||||
"gcc0" -> "linux-libre-headers" [color = red];
|
||||
"gcc0" -> "binutils0" [color = red];
|
||||
"gcc0" -> "gawk0" [color = red];
|
||||
"gcc0" -> "gcc-core0" [color = red];
|
||||
"gcc0" -> "bash0" [color = red];
|
||||
"gcc0" -> "bzip2" [color = red];
|
||||
"gcc0" -> "diffutils" [color = red];
|
||||
"gcc0" -> "gzip" [color = red];
|
||||
"gcc0" -> "patch" [color = red];
|
||||
"gcc0" -> "sed0" [color = red];
|
||||
"gcc0" -> "make0" [color = red];
|
||||
"gcc0" -> "gash" [color = red];
|
||||
"gcc0" -> "gash-core-utils" [color = red];
|
||||
"gcc0" -> "bootstrap-guile" [color = red];
|
||||
#"gcc0" -> "guile-bootstrap+guild" [color = red];
|
||||
"glibc0" [label = "glibc0@2.2.5", shape = box, fontname = Helvetica];
|
||||
"glibc0" -> "mes-headers" [color = dimgrey];
|
||||
"glibc0" -> "binutils0" [color = dimgrey];
|
||||
"glibc0" -> "gawk0" [color = dimgrey];
|
||||
"glibc0" -> "gcc-core0" [color = dimgrey];
|
||||
"glibc0" -> "bash0" [color = dimgrey];
|
||||
"glibc0" -> "bzip2" [color = dimgrey];
|
||||
"glibc0" -> "diffutils" [color = dimgrey];
|
||||
"glibc0" -> "gzip" [color = dimgrey];
|
||||
"glibc0" -> "patch" [color = dimgrey];
|
||||
"glibc0" -> "sed0" [color = dimgrey];
|
||||
"glibc0" -> "make0" [color = dimgrey];
|
||||
"glibc0" -> "gash" [color = dimgrey];
|
||||
"glibc0" -> "gash-core-utils" [color = dimgrey];
|
||||
"glibc0" -> "bootstrap-guile" [color = dimgrey];
|
||||
#"glibc0" -> "guile-bootstrap+guild" [color = dimgrey];
|
||||
"mes-headers" [label = "mes-headers@0.22", shape = box, fontname = Helvetica];
|
||||
"mes-headers" -> "linux-libre-headers" [color = blue];
|
||||
"mes-headers" -> "bash0" [color = blue];
|
||||
"mes-headers" -> "bzip2" [color = blue];
|
||||
"mes-headers" -> "diffutils" [color = blue];
|
||||
"mes-headers" -> "gzip" [color = blue];
|
||||
"mes-headers" -> "patch" [color = blue];
|
||||
"mes-headers" -> "sed0" [color = blue];
|
||||
"mes-headers" -> "tcc" [color = blue];
|
||||
"mes-headers" -> "make0" [color = blue];
|
||||
"mes-headers" -> "gash" [color = blue];
|
||||
"mes-headers" -> "gash-core-utils" [color = blue];
|
||||
"mes-headers" -> "bootstrap-guile" [color = blue];
|
||||
#"mes-headers" -> "guile-bootstrap+guild" [color = blue];
|
||||
#"linux-libre-headers" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica];
|
||||
"linux-libre-headers" [label = "bootstrap-linux-libre-headers@0", fontname = Helvetica];
|
||||
"bash0" [label = "bash0@2.05b", shape = box, fontname = Helvetica];
|
||||
"bash0" -> "make0" [color = dimgrey];
|
||||
"bash0" -> "tcc0" [color = dimgrey];
|
||||
"bash0" -> "gash" [color = dimgrey];
|
||||
"bash0" -> "gash-core-utils" [color = dimgrey];
|
||||
"bash0" -> "bootstrap-guile" [color = dimgrey];
|
||||
#"bash0" -> "guile-bootstrap+guild" [color = dimgrey];
|
||||
"make0" [label = "make0@3.80", shape = box, fontname = Helvetica];
|
||||
"make0" -> "tcc0" [color = red];
|
||||
"make0" -> "gash" [color = red];
|
||||
"make0" -> "gash-core-utils" [color = red];
|
||||
"make0" -> "bootstrap-guile" [color = red];
|
||||
#"make0" -> "guile-bootstrap+guild" [color = red];
|
||||
"tcc0" [label = "tcc0@0.9.26", shape = box, fontname = Helvetica];
|
||||
"tcc0" -> "mes" [color = darkgoldenrod];
|
||||
"tcc0" -> "bootstrap-mescc-tools" [color = darkgoldenrod];
|
||||
"tcc0" -> "gash" [color = darkgoldenrod];
|
||||
"tcc0" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"tcc0" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"tcc0" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
"mes" [label = "mes@0.22", shape = box, fontname = Helvetica];
|
||||
#"mes" -> "bootstrap-mes-rewired" [color = darkgoldenrod];
|
||||
"mes" -> "bootstrap-mes" [color = darkgoldenrod];
|
||||
"mes" -> "bootstrap-mescc-tools" [color = darkgoldenrod];
|
||||
"mes" -> "gash" [color = darkgoldenrod];
|
||||
"mes" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"mes" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"mes" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
#"bootstrap-mes-rewired" [label = "bootstrap-mes-rewired@0.19", shape = box, fontname = Helvetica];
|
||||
#"bootstrap-mes-rewired" -> "bootstrap-mes" [color = dimgrey];
|
||||
#"bootstrap-mes-rewired" -> "gash" [color = dimgrey];
|
||||
#"bootstrap-mes" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica];
|
||||
"bootstrap-mes" [label = "bootstrap-mes@0.19", fontname = Helvetica];
|
||||
"gash" [label = "gash@0.2.0", shape = box, fontname = Helvetica];
|
||||
"gash" -> "bootstrap-guile" [color = darkviolet];
|
||||
# "guile-bootstrap+guild" [label = "guile-bootstrap+guild@2.0", shape = box, fontname = Helvetica];
|
||||
# "guile-bootstrap+guild" -> "bootstrap-guile" [color = blue];
|
||||
|
||||
#"bootstrap-guile" [label = "guile-bootstrap@2.0", shape = box, fontname = Helvetica];
|
||||
"bootstrap-guile" [label = "guile-bootstrap@2.0", fontname = Helvetica];
|
||||
#"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
|
||||
"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools@0.5.2", fontname = Helvetica];
|
||||
|
||||
"gash-core-utils" [label = "gash-core-utils@0.0", shape = box, fontname = Helvetica];
|
||||
"gash-core-utils" -> "bootstrap-guile" [color = red];
|
||||
"gash-core-utils" -> "gash" [color = red];
|
||||
"bzip2" [label = "bzip2@1.0.6", shape = box, fontname = Helvetica];
|
||||
"bzip2" -> "make0" [color = darkgoldenrod];
|
||||
"bzip2" -> "tcc0" [color = darkgoldenrod];
|
||||
"bzip2" -> "gash" [color = darkgoldenrod];
|
||||
"bzip2" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"bzip2" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"bzip2" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
"diffutils" [label = "diffutils@2.7", shape = box, fontname = Helvetica];
|
||||
"diffutils" -> "make0" [color = darkgoldenrod];
|
||||
"diffutils" -> "tcc0" [color = darkgoldenrod];
|
||||
"diffutils" -> "gash" [color = darkgoldenrod];
|
||||
"diffutils" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"diffutils" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"diffutils" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
"gzip" [label = "gzip@1.2.4", shape = box, fontname = Helvetica];
|
||||
"gzip" -> "tcc0" [color = darkseagreen];
|
||||
"gzip" -> "gash" [color = darkseagreen];
|
||||
"gzip" -> "gash-core-utils" [color = darkseagreen];
|
||||
"gzip" -> "bootstrap-guile" [color = darkseagreen];
|
||||
#"gzip" -> "guile-bootstrap+guild" [color = darkseagreen];
|
||||
"patch" [label = "patch@2.5.9", shape = box, fontname = Helvetica];
|
||||
"patch" -> "make0" [color = peachpuff4];
|
||||
"patch" -> "tcc0" [color = peachpuff4];
|
||||
"patch" -> "gash" [color = peachpuff4];
|
||||
"patch" -> "gash-core-utils" [color = peachpuff4];
|
||||
"patch" -> "bootstrap-guile" [color = peachpuff4];
|
||||
#"patch" -> "guile-bootstrap+guild" [color = peachpuff4];
|
||||
"sed0" [label = "sed0@1.18", shape = box, fontname = Helvetica];
|
||||
"sed0" -> "make0" [color = peachpuff4];
|
||||
"sed0" -> "tcc0" [color = peachpuff4];
|
||||
"sed0" -> "gash" [color = peachpuff4];
|
||||
"sed0" -> "gash-core-utils" [color = peachpuff4];
|
||||
"sed0" -> "bootstrap-guile" [color = peachpuff4];
|
||||
#"sed0" -> "guile-bootstrap+guild" [color = peachpuff4];
|
||||
"tcc" [label = "tcc0@0.9.27", shape = box, fontname = Helvetica];
|
||||
"tcc" -> "bzip2" [color = blue];
|
||||
"tcc" -> "make0" [color = blue];
|
||||
"tcc" -> "tcc0" [color = blue];
|
||||
"tcc" -> "gash" [color = blue];
|
||||
"tcc" -> "gash-core-utils" [color = blue];
|
||||
"tcc" -> "bootstrap-guile" [color = blue];
|
||||
#"tcc" -> "guile-bootstrap+guild" [color = blue];
|
||||
"binutils0" [label = "binutils0@2.14", shape = box, fontname = Helvetica];
|
||||
"binutils0" -> "bash0" [color = darkgoldenrod];
|
||||
"binutils0" -> "bzip2" [color = darkgoldenrod];
|
||||
"binutils0" -> "diffutils" [color = darkgoldenrod];
|
||||
"binutils0" -> "gzip" [color = darkgoldenrod];
|
||||
"binutils0" -> "patch" [color = darkgoldenrod];
|
||||
"binutils0" -> "sed0" [color = darkgoldenrod];
|
||||
"binutils0" -> "tcc" [color = darkgoldenrod];
|
||||
"binutils0" -> "make0" [color = darkgoldenrod];
|
||||
"binutils0" -> "gash" [color = darkgoldenrod];
|
||||
"binutils0" -> "gash-core-utils" [color = darkgoldenrod];
|
||||
"binutils0" -> "bootstrap-guile" [color = darkgoldenrod];
|
||||
#"binutils0" -> "guile-bootstrap+guild" [color = darkgoldenrod];
|
||||
"gawk0" [label = "gawk0@3.0.0", shape = box, fontname = Helvetica];
|
||||
"gawk0" -> "bash0" [color = dimgrey];
|
||||
"gawk0" -> "bzip2" [color = dimgrey];
|
||||
"gawk0" -> "diffutils" [color = dimgrey];
|
||||
"gawk0" -> "gzip" [color = dimgrey];
|
||||
"gawk0" -> "patch" [color = dimgrey];
|
||||
"gawk0" -> "sed0" [color = dimgrey];
|
||||
"gawk0" -> "tcc" [color = dimgrey];
|
||||
"gawk0" -> "make0" [color = dimgrey];
|
||||
"gawk0" -> "gash" [color = dimgrey];
|
||||
"gawk0" -> "gash-core-utils" [color = dimgrey];
|
||||
"gawk0" -> "bootstrap-guile" [color = dimgrey];
|
||||
#"gawk0" -> "guile-bootstrap+guild" [color = dimgrey];
|
||||
"gcc-core0" [label = "gcc-core0@2.95.3", shape = box, fontname = Helvetica];
|
||||
"gcc-core0" -> "binutils0" [color = red];
|
||||
"gcc-core0" -> "bash0" [color = red];
|
||||
"gcc-core0" -> "bzip2" [color = red];
|
||||
"gcc-core0" -> "diffutils" [color = red];
|
||||
"gcc-core0" -> "gzip" [color = red];
|
||||
"gcc-core0" -> "patch" [color = red];
|
||||
"gcc-core0" -> "sed0" [color = red];
|
||||
"gcc-core0" -> "tcc" [color = red];
|
||||
"gcc-core0" -> "make0" [color = red];
|
||||
"gcc-core0" -> "gash" [color = red];
|
||||
"gcc-core0" -> "gash-core-utils" [color = red];
|
||||
"gcc-core0" -> "bootstrap-guile" [color = red];
|
||||
#"gcc-core0" -> "guile-bootstrap+guild" [color = red];
|
||||
|
||||
}
|
After Width: | Height: | Size: 815 KiB |
|
@ -0,0 +1,94 @@
|
|||
digraph "Guix bag" {
|
||||
|
||||
node[width=1,height=0.25];
|
||||
edge [height=0.25];
|
||||
|
||||
dpi=75
|
||||
# "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [fontcolor = red]
|
||||
|
||||
//HANDCRAFTED UNTIL HERE TO BE ABLE TO CUSTOMIZE
|
||||
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" [label = "gcc0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" [label = "binutils0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [color = peachpuff4];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [color = peachpuff4];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = peachpuff4];
|
||||
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [label = "tcc", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" [color = red];
|
||||
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" -> "/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" [color = red];
|
||||
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
|
||||
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" [label = "mes", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = darkseagreen];
|
||||
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
|
||||
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" -> "/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [color = darkseagreen];
|
||||
# "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = darkseagreen];
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [label = "bootstrap-binaries", shape = box, fontname = Helvetica];
|
||||
# "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [label = "guile-bootstrap", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" [label = "tcc0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" [color = dimgrey];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [color = dimgrey];
|
||||
# "/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = dimgrey];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [label = "diffutils", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" [color = blue];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [color = blue];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = blue];
|
||||
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [label = "make0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [color = blue];
|
||||
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" [label = "gcc-core", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" [color = darkseagreen];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [color = darkseagreen];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [color = darkseagreen];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = darkseagreen];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" [label = "glibc0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-headers-0.19.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = blue];
|
||||
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-headers-0.19.drv" [label = "mes-headers", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-headers-0.19.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3];
|
||||
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-headers-0.19.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = cyan3];
|
||||
#"/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "bootstrap-linux-libre-headers", fontname = Helvetica];
|
||||
|
||||
// HANDCRAFTED FROM HERE TO MAKE THE STATIC BOOTSTRAP BINARIES VISIBLE
|
||||
|
||||
bash [fontname = Helvetica]
|
||||
bzip2 [fontname = Helvetica]
|
||||
coreutils [fontname = Helvetica]
|
||||
gawk [fontname = Helvetica]
|
||||
grep [fontname = Helvetica]
|
||||
gzip [fontname = Helvetica]
|
||||
patch [fontname = Helevtica]
|
||||
sed [fontname = Helvetica]
|
||||
tar [fontname = Helvetica]
|
||||
xz [fontname = Helevtica]
|
||||
|
||||
"/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools", fontname = Helvetica];
|
||||
"/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [label = "bootstrap-mes", fontname = Helvetica];
|
||||
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> bash
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> bzip2
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> coreutils
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> gawk
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> grep
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> gzip
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> patch
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> sed
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> tar
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> xz
|
||||
}
|
After Width: | Height: | Size: 136 KiB |
|
@ -0,0 +1,94 @@
|
|||
digraph "Guix bag" {
|
||||
|
||||
node[width=1,height=0.25];
|
||||
edge [height=0.25];
|
||||
|
||||
dpi=75
|
||||
# "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [fontcolor = red]
|
||||
|
||||
//HANDCRAFTED UNTIL HERE TO BE ABLE TO CUSTOMIZE
|
||||
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" [label = "gcc0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc0-2.95.3.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = darkgoldenrod];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" [label = "binutils0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [color = peachpuff4];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [color = peachpuff4];
|
||||
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = peachpuff4];
|
||||
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [label = "tcc", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" [color = red];
|
||||
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" -> "/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" [color = red];
|
||||
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
|
||||
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" [label = "mes", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = darkseagreen];
|
||||
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
|
||||
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" -> "/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [color = darkseagreen];
|
||||
# "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = darkseagreen];
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [label = "bootstrap-binaries", shape = box, fontname = Helvetica];
|
||||
# "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [label = "guile-bootstrap", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" [label = "tcc0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" [color = dimgrey];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
|
||||
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [color = dimgrey];
|
||||
# "/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = dimgrey];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [label = "diffutils", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-0.19.drv" [color = blue];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [color = blue];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = blue];
|
||||
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [label = "make0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [color = blue];
|
||||
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" [label = "gcc-core", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" [color = darkseagreen];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-0.9.27.drv" [color = darkseagreen];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [color = darkseagreen];
|
||||
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = darkseagreen];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" [label = "glibc0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils0-2.20.1a.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-2.95.3.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-2.7.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-headers-0.19.drv" [color = blue];
|
||||
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc0-2.2.5.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make0-3.80.drv" [color = blue];
|
||||
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-headers-0.19.drv" [label = "mes-headers", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-headers-0.19.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3];
|
||||
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-headers-0.19.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = cyan3];
|
||||
#"/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "bootstrap-linux-libre-headers", fontname = Helvetica];
|
||||
|
||||
// HANDCRAFTED FROM HERE TO MAKE THE STATIC BOOTSTRAP BINARIES VISIBLE
|
||||
|
||||
bash [fontname = Helvetica]
|
||||
bzip2 [fontname = Helvetica]
|
||||
coreutils [fontname = Helvetica]
|
||||
gawk [fontname = Helvetica]
|
||||
grep [fontname = Helvetica]
|
||||
gzip [fontname = Helvetica]
|
||||
patch [fontname = Helevtica]
|
||||
sed [fontname = Helvetica]
|
||||
tar [fontname = Helvetica]
|
||||
xz [fontname = Helevtica]
|
||||
|
||||
"/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools", fontname = Helvetica];
|
||||
"/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [label = "bootstrap-mes", fontname = Helvetica];
|
||||
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> bash
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> bzip2
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> coreutils
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> gawk
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> grep
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> gzip
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> patch
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> sed
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> tar
|
||||
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> xz
|
||||
}
|
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 11 KiB |
|
@ -0,0 +1,20 @@
|
|||
3906 ./pre-inst-env guix graph --system=i686-linux gcc-mesboot0
|
||||
3907 ./pre-inst-env guix graph --system=i686-linux -e '(@@ (gnu packages commencement) gcc-mesboot0)'
|
||||
3908 ./pre-inst-env guix graph --system=i686-linux -e '(@@ (gnu packages commencement) gcc-mesboot0)' > gcc-mesboot0-scheme-only.dot
|
||||
3914 ./pre-inst-env guix graph --system=i686-linux -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' > gcc-core-mesboot0-scheme-only.dot
|
||||
3923 ./pre-inst-env guix graph --system=i686-linux -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' > gcc-core-mesboot0-scheme-only.dotpk
|
||||
4859 ~/src/guix/version-1.0/pre-inst-env guix graph -e '(@@ (gnu packages commencement) gnu-make-boot0)'
|
||||
4860 guix graph hello > hello| dot -T png > hello.png
|
||||
5855 ~/src/guix/version-1.0/pre-inst-env guix graph -e '(@@ (gnu packages commencement) gnu-make-boot0)' > gnu-make-boot0.dot
|
||||
5859 ~/src/guix/version-1.0/pre-inst-env guix graph -e '(@@ (gnu packages commencement) gnu-make-boot0)' > gnu-make-boot0.dot
|
||||
5862 ~/src/guix/version-1.0/pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-final)' > gcc-final.dot
|
||||
5865 ~/src/guix/version-1.0/pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-boot-0)' > gcc-boot-0.dot
|
||||
5866 ~/src/guix/version-1.0/pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-boot0)' > gcc-boot0.dot
|
||||
5925 guix graph hello > hello| dot -T png > hello.png
|
||||
5928 guix graph hello | dot -T png > hello.png
|
||||
5930 guix graph mes | dot -T png > mes.png
|
||||
5932 guix graph make | dot -T png > make.png
|
||||
10007 git grep 'guix graph'
|
||||
10008 history | grep guix graph
|
||||
10009 history | grep 'guix graph'
|
||||
10010 history | grep 'guix graph' > graphs
|
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 54 KiB |
|
@ -0,0 +1,86 @@
|
|||
#+TITLE: GNU Mes
|
||||
#+TITLE: \smaller[2]{-- Scheme-only bootstrap}
|
||||
#+DATE:2020-02-02
|
||||
#+EMAIL: janneke@gnu.org
|
||||
#+AUTHOR: janneke@gnu.org
|
||||
#+OPTIONS: ^:nil
|
||||
#+COPYRIGHT: janneke (Jan) Nieuwenhuizen <janneke@gn.org>
|
||||
#+LICENSE: GNU Free Documentation License, version 1.3 or later.
|
||||
#+LATEX_HEADER:\institute{FOSDEM'20}
|
||||
#+LATEX_HEADER:\def\ahref#1#2{\htmladdnormallink{#2}{#1}}
|
||||
#+OPTIONS: H:2
|
||||
#+LATEX_CLASS: beamer
|
||||
#+LATEX_CLASS_OPTIONS: [presentation]
|
||||
#+LATEX_HEADER: \usepackage{relsize}
|
||||
#+LATEX_HEADER: \usepackage{hyperref}
|
||||
#+LATEX_HEADER: \mode<beamer>{\usetheme{X}}
|
||||
#+LATEX_HEADER: \newcommand<>{\fullscreen}[1]{
|
||||
#+LATEX_HEADER: \begin{textblock*}{0cm}(-1cm,-3.78cm)
|
||||
#+LATEX_HEADER: \includegraphics[width=\paperwidth]{#1}
|
||||
#+LATEX_HEADER: \end{textblock*}
|
||||
#+LATEX_HEADER: }
|
||||
#+BEAMER_THEME: X
|
||||
#+BEAMER_FRAME_LEVEL: 2
|
||||
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
|
||||
|
||||
Ken Thompson UNIX, UTF-8, Golang
|
||||
Reflections on trusting trust
|
||||
1984 turing award acceptance speach
|
||||
|
||||
because toolchains are built by previous versions of themselves
|
||||
you can poison an entire line of them
|
||||
just by poisoning one generation
|
||||
and it would propagate down to future generations
|
||||
even if the source code was clean
|
||||
|
||||
so, what can we do about a toolchain that consists of countless trusted
|
||||
binaries?
|
||||
|
||||
reproducible + bootstrappable
|
||||
|
||||
=> Minimize trusted binary seeds
|
||||
=> Maintain auditable bootstrap path
|
||||
|
||||
* Scheme-only bootstrap: Introduction.
|
||||
|
||||
** Scheme-only bootstrap: GNU Mes
|
||||
|
||||
*** GNU Mes
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.6
|
||||
:BEAMER_ENV: block
|
||||
:END:
|
||||
|
||||
* A Scheme interpreter written in ~5,000LOC of simple C.
|
||||
|
||||
* A C compiler written in Scheme.
|
||||
|
||||
* Built on Lisp: eval/apply, the *Maxwell Equations of Software*.
|
||||
|
||||
*** LOGO
|
||||
:PROPERTIES:
|
||||
:BEAMER_COL: 0.3
|
||||
:BEAMER_ENV: quote
|
||||
:END:
|
||||
#+LATEX:\rightskip=2cm\includegraphics[width=0.7\textwidth]{mes.png}
|
||||
|
||||
** Reproducible-Builds.org
|
||||
#+LATEX:{\begin{frame}[plain]
|
||||
#+LATEX:{\hskip-10cm\vskip-2.5cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Reproducible-Builds.org
|
||||
#+LATEX:{\begin{frame}[plain]
|
||||
#+LATEX:{\vskip-2.5cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** Reproducible-Builds.org
|
||||
#+LATEX:{\begin{frame}[plain]
|
||||
#+LATEX:{\vskip-2.5cm{\hspace{-1.5cm}\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}}}
|
||||
#+LATEX:\end{frame}}
|
||||
|
||||
** How to Bootstrap: An Old Recipe...
|
||||
#+LATEX:\rightskip=2cm\includegraphics[width=0.3\textwidth]{yoghurt.png}\\
|
||||
#+BEGIN_QUOTE
|
||||
Recipe for yoghurt: Add yoghurt to milk -- Anonymous
|
||||
#+END_QUOTE
|
After Width: | Height: | Size: 187 KiB |
|
@ -0,0 +1,32 @@
|
|||
* < 1 week *Trivial*
|
||||
** Trusting trust attack can compromise entire system
|
||||
** System language, essential applications
|
||||
|
||||
| Program | Depndency | Seed |
|
||||
|---------+-----------+------|
|
||||
| Gcc | GCC-1 | |
|
||||
| Guile | C | |
|
||||
|---------+-----------+------|
|
||||
|
||||
|
||||
* < 1 year *Doable*
|
||||
** Trusting trust attack can lead to data loss
|
||||
** Emerging application programming languages
|
||||
|
||||
| Program | Dependency | Seed |
|
||||
|---------+------------+-----------|
|
||||
| rust | rust-1 | mrustc(?) |
|
||||
| | | |
|
||||
| | | |
|
||||
|---------+------------+-----------|
|
||||
|
||||
* >= 1 year *Impossible*
|
||||
** OK to ignore Trusting trust attack
|
||||
** Experimental languages, toy languages
|
||||
|
||||
| Program | Dependency | Seed |
|
||||
|---------+------------+------|
|
||||
| C | | |
|
||||
| | | |
|
||||
| | | |
|
||||
|---------+------------+------|
|
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 389 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 65 KiB |
|
@ -0,0 +1,81 @@
|
|||
**** johri: hoe zit t met binary blobs en 512 bytes?
|
||||
**** trusting trust solved, not solved: auditen van source code
|
||||
**** waarom??? ==> zelfde gcc+binutils+glibc=>trust hashes, voting => ugh
|
||||
|
||||
* Welcome
|
||||
|
||||
You will learn why you want to watch this project and
|
||||
why you need to get involved,
|
||||
or get your software provider to adopt #bootstrappable practices.
|
||||
|
||||
* What is Scheme-only bootstrap?
|
||||
|
||||
Scheme-only bootstrap (guix wip-bootstrap)
|
||||
+ reduce again by 50% to ~60 MB
|
||||
+ get rid of GNU userland, clear out /bin, /usr/bin
|
||||
+ Only Guile and the Mes bootstrap binaries
|
||||
|
||||
Reduced Binary Seed bootstrap (guix master)
|
||||
+ get rid of gcc
|
||||
+ reduce by 50% to ~140 MB
|
||||
|
||||
* Why working on bootstrap?
|
||||
|
||||
# trusting trust
|
||||
|
||||
downloading a binary and running it
|
||||
|
||||
# unwise, if it's signed and many people are doing it, all we know is
|
||||
# that more people are
|
||||
|
||||
=> bitcoin Carl Dong -- Chaincode Labs.
|
||||
|
||||
# it just doesn't feel right -- Vagrant Cascadian (debian developer)
|
||||
|
||||
* Questions to avoid ungrounded trust
|
||||
|
||||
Does this program do what I want it to do?
|
||||
|
||||
1. Inspect Source
|
||||
|
||||
2. Does this binary correspond to the source code?
|
||||
|
||||
# reproducibility is not enough, we are still trusting something
|
||||
|
||||
3. Was this binary built with non-malicious tools?
|
||||
|
||||
Q: Hardware, kernel? # DDC
|
||||
|
||||
9e*fb
|
||||
|
||||
* Future
|
||||
|
||||
* Full Source bootstrap
|
||||
+ connect hex0 and mes: get rid of Mes bootstrap binaries
|
||||
|
||||
* Full Mes bootstrap
|
||||
+ remove Guile from bootstrap binaries, use Mes to run Guix and Gash
|
||||
|
||||
* Porting
|
||||
|
||||
Mes v0.22
|
||||
|
||||
* NixOS (mes-boot built, next: tcc, gcc)
|
||||
* ARM (NlNet)
|
||||
* the Hurd (mes runs)
|
||||
* FreeBSD (initial binaries run)
|
||||
* Debian, Arch, Windows
|
||||
|
||||
* Cleaning up
|
||||
|
||||
* Remove gcc-2.95, go straight to gcc-4.6
|
||||
* Build vanilla tcc, upstream remaining patches
|
||||
|
||||
* Raising the bar
|
||||
|
||||
I want code easy to reason about at the heart of this bootstrap, so
|
||||
that everyone will be able to sit down in the morning and be done by
|
||||
lunch time; understading how every piece of it works. -- Jeremiah Orians
|
||||
|
||||
What should be optimized is the ease with which users can convince
|
||||
themselves that MesCC compiles programs correctly. -- Mark H Weaver
|
After Width: | Height: | Size: 961 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 904 KiB |
After Width: | Height: | Size: 809 KiB |
|
@ -0,0 +1,107 @@
|
|||
digraph {
|
||||
node[shape=box,width=1,height=0.25];
|
||||
edge [height=0.25];
|
||||
|
||||
"hex0-monitor" [label = "hex0 Monitor", color = black, shape = box];
|
||||
"hex0-assembler" [label = "hex0 Assembler", color = black, shape = box];
|
||||
"SET" [label = "SET editor", color = cyan3, shape = box];
|
||||
# "hex1-assembler" [label = "hex1 Assembler", color = black, shape = box];
|
||||
# "hex2-assembler" [label = "hex2 Assembler", color = black, shape = box];
|
||||
# "M1-Macro" [label = "M1 Macro assembler", color = black, shape = box];
|
||||
# "cat" [label = "cat", color = cyan3, shape = box];
|
||||
# "Slow_Lisp" [label = "Slow Lisp", color = green3, shape = box];
|
||||
# "Stage0-FORTH" [label = "Stage0 FORTH", color = green3, shape = box];
|
||||
# "cc_x86" [label = "cc_x86", color = black, shape = box];
|
||||
# "M2-Planet" [label = "M2-PLanet", color = black, shape = box];
|
||||
# "M2-Moon" [label = "M2-Moon", color = red1, shape = box];
|
||||
# "mescc-tools-seed" [label = "mescc-tools-seed", color = black, shape = box];
|
||||
# "?" [label = "?", color = red1, shape = box];
|
||||
# "bootstrap-binaries" [label = "bootstrap-binaries", color=red1, shape = box];
|
||||
# "mescc-tools" [label = "mescc-tools", color = black, shape = box];
|
||||
# "Mes C Lib.M2" [label = "Mes C Lib.M2", color = red1, shape = box];
|
||||
# "mes.M2" [label = "mes.M2", color = red1, shape = box];
|
||||
# "mescc" [label = "mescc", color = black, shape = box];
|
||||
# "Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = black, shape = box];
|
||||
# "tcc" [label = "tcc", color = black, shape = box];
|
||||
# "Mes C Lib +GNU" [label = "Mes C Lib +GNU", color = black, shape = box];
|
||||
# "gcc-core 2.95.3" [label = "gcc-core 2.95.3", color = black, shape = box];
|
||||
# "glibc 2.2.5" [label = "glibc 2.2.5", color = black, shape = box];
|
||||
# "gcc 2.95.3" [label = "gcc 2.95.3", color = black, shape = box];
|
||||
# "glibc 2.16" [label = "glibc 2.16", color = black, shape = box];
|
||||
# "gcc 4.7.4" [label = "gcc 4.7.4", color = black, shape = box];
|
||||
|
||||
"SET" -> "hex0-monitor" [color = cyan3];
|
||||
"hex0-assembler" -> "hex0-monitor" [color = black];
|
||||
"hex1-assembler" -> "hex0-assembler" [color = black];
|
||||
# "hex2-assembler" -> "hex1-assembler" [color = black];
|
||||
# "M1-Macro" -> "hex2-assembler" [color = black];
|
||||
# "cat" -> "M1-Macro" [color = cyan3];
|
||||
# "Slow_Lisp" -> "M1-Macro" [color = green3];
|
||||
# "Stage0-FORTH" -> "M1-Macro" [color = green3];
|
||||
# "cc_x86" -> "M1-Macro" [color = black];
|
||||
# "M2-Planet" -> "cc_x86" [color = black];
|
||||
# "M2-Moon" -> "M1-Macro" [color = red1];
|
||||
|
||||
# "mescc-tools-seed" -> "cc_x86" [color = black];
|
||||
# "mescc-tools" -> "mescc-tools-seed" [color = black];
|
||||
# "mescc-tools" -> "M2-Planet" [color = black];
|
||||
|
||||
# "Mes C Lib.M2" -> "mescc-tools" [color = red1];
|
||||
# "Mes C Lib.M2" -> "M2-Planet" [color = red1];
|
||||
|
||||
# "mes.M2" -> "mescc-tools" [color = red1];
|
||||
# "mes.M2" -> "Mes C Lib.M2" [color = red1];
|
||||
# "mes.M2" -> "M2-Planet" [color = red1];
|
||||
# "mescc" -> "mes.M2" [color = black];
|
||||
|
||||
# "Mes C Lib +tcc" -> "mes.M2" [color = red1];
|
||||
|
||||
# "tcc" -> "Mes C Lib +tcc" [color = black];
|
||||
# "tcc" -> "bootstrap-binaries" [color = black];
|
||||
# "tcc" -> "mescc" [color = black];
|
||||
|
||||
# "gcc-core 2.95.3" -> "Mes C Lib +GNU " [color = black];
|
||||
# "gcc-core 2.95.3" -> "bootstrap-binaries" [color = black];
|
||||
# "gcc-core 2.95.3" -> "tcc" [color = black];
|
||||
|
||||
# "make" -> "Mes C Lib +GNU" [color = black];
|
||||
# "make" -> "tcc" [color = black];
|
||||
# "make" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
# "glibc 2.2.5" -> "gcc-core 2.95.3" [color = black];
|
||||
# "glibc 2.2.5" -> "binutils" [color = black];
|
||||
# "glibc 2.2.5" -> "Mes C Lib +GNU" [color = black];
|
||||
# "glibc 2.2.5" -> "make" [color = black];
|
||||
# "glibc 2.2.5" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
# "gcc 2.95.3" -> "gcc-core 2.95.3" [color = black];
|
||||
# "gcc 2.95.3" -> "binutils" [color = black];
|
||||
# "gcc 2.95.3" -> "glibc 2.2.5" [color = black];
|
||||
# "gcc 2.95.3" -> "make" [color = black];
|
||||
# "gcc 2.95.3" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
# "glibc 2.16" -> "glibc 2.2.5" [color = black];
|
||||
# "glibc 2.16" -> "binutils" [color = black];
|
||||
# "glibc 2.16" -> "gcc 2.95.3" [color = black];
|
||||
# "glibc 2.16" -> "make" [color = black];
|
||||
# "glibc 2.16" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
# "gcc 4.7.4" -> "glibc 2.16" [color = black];
|
||||
# "gcc 4.7.4" -> "binutils" [color = black];
|
||||
# "gcc 4.7.4" -> "gcc 2.95.3" [color = black];
|
||||
# "gcc 4.7.4" -> "make" [color = black];
|
||||
# "gcc 4.7.4" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
node [shape=plaintext]
|
||||
subgraph cluster_01 {
|
||||
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
|
||||
<tr><td align="left"><font color="black">black</font></td><td align="left">done, essential</td></tr>
|
||||
<tr><td align="left"><font color="cyan3">cyan</font></td><td align="left">done, optional</td></tr>
|
||||
<!--
|
||||
<tr><td align="left"><font color="green3">green</font></td><td align="left">done, undecided</td></tr>
|
||||
<tr><td align="left"><font color="red1">red</font></td><td align="left">in progress, essential</td></tr>
|
||||
<tr><td align="left"><font color="orange">orange</font></td><td align="left">in progress, undecided</td></tr>
|
||||
!-->
|
||||
</table>>]
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,103 @@
|
|||
digraph {
|
||||
node[shape=box,width=1,height=0.25];
|
||||
edge [height=0.25];
|
||||
|
||||
# "hex0-monitor" [label = "hex0 Monitor", color = black, shape = box];
|
||||
# "hex0-assembler" [label = "hex0 Assembler", color = black, shape = box];
|
||||
# "SET" [label = "SET editor", color = black, shape = box];
|
||||
"hex1-assembler" [label = "hex1 Assembler", color = black, shape = box];
|
||||
"hex2-assembler" [label = "hex2 Assembler", color = black, shape = box];
|
||||
"M1-Macro" [label = "M1 Macro assembler", color = black, shape = box];
|
||||
"cat" [label = "cat", color = cyan3, shape = box];
|
||||
"Slow_Lisp" [label = "Slow Lisp", color = green3, shape = box];
|
||||
"Stage0-FORTH" [label = "Stage0 FORTH", color = green3, shape = box];
|
||||
"cc_x86" [label = "cc_x86", color = black, shape = box];
|
||||
"M2-Planet" [label = "M2-PLanet", color = black, shape = box];
|
||||
"M2-Moon" [label = "M2-Moon", color = orange, shape = box];
|
||||
# "mescc-tools-seed" [label = "mescc-tools-seed", color = black, shape = box];
|
||||
# "?" [label = "?", color = red1, shape = box];
|
||||
# "bootstrap-binaries" [label = "bootstrap-binaries", color=red1, shape = box];
|
||||
# "mescc-tools" [label = "mescc-tools", color = black, shape = box];
|
||||
# "Mes C Lib.M2" [label = "Mes C Lib.M2", color = red1, shape = box];
|
||||
# "mes.M2" [label = "mes.M2", color = red1, shape = box];
|
||||
# "mescc" [label = "mescc", color = black, shape = box];
|
||||
# "Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = black, shape = box];
|
||||
# "tcc" [label = "tcc", color = black, shape = box];
|
||||
# "Mes C Lib +GNU" [label = "Mes C Lib +GNU", color = black, shape = box];
|
||||
# "gcc-core 2.95.3" [label = "gcc-core 2.95.3", color = black, shape = box];
|
||||
# "glibc 2.2.5" [label = "glibc 2.2.5", color = black, shape = box];
|
||||
# "gcc 2.95.3" [label = "gcc 2.95.3", color = black, shape = box];
|
||||
# "glibc 2.16" [label = "glibc 2.16", color = black, shape = box];
|
||||
# "gcc 4.7.4" [label = "gcc 4.7.4", color = black, shape = box];
|
||||
|
||||
# "SET" -> "hex0-monitor" [color = cyan3];
|
||||
# "hex0-assembler" -> "hex0-monitor" [color = black];
|
||||
# "hex1-assembler" -> "hex0-assembler" [color = black];
|
||||
"hex2-assembler" -> "hex1-assembler" [color = black];
|
||||
"M1-Macro" -> "hex2-assembler" [color = black];
|
||||
"cat" -> "M1-Macro" [color = cyan3];
|
||||
"Slow_Lisp" -> "M1-Macro" [color = green3];
|
||||
"Stage0-FORTH" -> "M1-Macro" [color = green3];
|
||||
"cc_x86" -> "M1-Macro" [color = black];
|
||||
"M2-Planet" -> "cc_x86" [color = black];
|
||||
"M2-Moon" -> "M1-Macro" [color = orange];
|
||||
|
||||
# "mescc-tools-seed" -> "cc_x86" [color = black];
|
||||
# "mescc-tools" -> "mescc-tools-seed" [color = black];
|
||||
# "mescc-tools" -> "M2-Planet" [color = black];
|
||||
|
||||
# "mes.M2" -> "mescc-tools" [color = red1];
|
||||
# "mes.M2" -> "Mes C Lib.M2" [color = red1];
|
||||
# "mes.M2" -> "M2-Planet" [color = red1];
|
||||
# "mescc" -> "mes.M2" [color = black];
|
||||
|
||||
# "Mes C Lib +tcc" -> "mes.M2" [color = red1];
|
||||
|
||||
# "tcc" -> "Mes C Lib +tcc" [color = black];
|
||||
# "tcc" -> "bootstrap-binaries" [color = black];
|
||||
# "tcc" -> "mescc" [color = black];
|
||||
|
||||
# "gcc-core 2.95.3" -> "Mes C Lib +GNU " [color = black];
|
||||
# "gcc-core 2.95.3" -> "bootstrap-binaries" [color = black];
|
||||
# "gcc-core 2.95.3" -> "tcc" [color = black];
|
||||
|
||||
# "make" -> "Mes C Lib +GNU" [color = black];
|
||||
# "make" -> "tcc" [color = black];
|
||||
# "make" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
# "glibc 2.2.5" -> "gcc-core 2.95.3" [color = black];
|
||||
# "glibc 2.2.5" -> "binutils" [color = black];
|
||||
# "glibc 2.2.5" -> "Mes C Lib +GNU" [color = black];
|
||||
# "glibc 2.2.5" -> "make" [color = black];
|
||||
# "glibc 2.2.5" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
# "gcc 2.95.3" -> "gcc-core 2.95.3" [color = black];
|
||||
# "gcc 2.95.3" -> "binutils" [color = black];
|
||||
# "gcc 2.95.3" -> "glibc 2.2.5" [color = black];
|
||||
# "gcc 2.95.3" -> "make" [color = black];
|
||||
# "gcc 2.95.3" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
# "glibc 2.16" -> "glibc 2.2.5" [color = black];
|
||||
# "glibc 2.16" -> "binutils" [color = black];
|
||||
# "glibc 2.16" -> "gcc 2.95.3" [color = black];
|
||||
# "glibc 2.16" -> "make" [color = black];
|
||||
# "glibc 2.16" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
# "gcc 4.7.4" -> "glibc 2.16" [color = black];
|
||||
# "gcc 4.7.4" -> "binutils" [color = black];
|
||||
# "gcc 4.7.4" -> "gcc 2.95.3" [color = black];
|
||||
# "gcc 4.7.4" -> "make" [color = black];
|
||||
# "gcc 4.7.4" -> "bootstrap-binaries" [color = black];
|
||||
|
||||
node [shape=plaintext]
|
||||
subgraph cluster_01 {
|
||||
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
|
||||
<tr><td align="left"><font color="black">black</font></td><td align="left">done, essential</td></tr>
|
||||
<tr><td align="left"><font color="cyan3">cyan</font></td><td align="left">done, optional</td></tr>
|
||||
<tr><td align="left"><font color="green3">green</font></td><td align="left">done, undecided</td></tr>
|
||||
<!-- <tr><td align="left"><font color="red1">red</font></td><td align="left">in progress, essential</td></tr>
|
||||
!-->
|
||||
<tr><td align="left"><font color="orange">orange</font></td><td align="left">in progress, undecided</td></tr>
|
||||
</table>>]
|
||||
}
|
||||
}
|