Compare commits
11 Commits
master
...
wip-fosdem
Author | SHA1 | Date |
---|---|---|
Jan Nieuwenhuizen | b18623b0d1 | |
Jan Nieuwenhuizen | 9989a8674a | |
Jan Nieuwenhuizen | 927cc12607 | |
Jan Nieuwenhuizen | f6e1ceedef | |
Jan Nieuwenhuizen | e3d7414ac2 | |
Jan Nieuwenhuizen | eb94972b6b | |
Jan Nieuwenhuizen | c4eed1cdbd | |
Jan Nieuwenhuizen | 83a79020a5 | |
Jan Nieuwenhuizen | 1c5fcbdf21 | |
Jan Nieuwenhuizen | adf306350d | |
Jan Nieuwenhuizen | ddc160c188 |
|
@ -60,14 +60,15 @@
|
||||||
?
|
?
|
||||||
?.mes
|
?.mes
|
||||||
\#*#
|
\#*#
|
||||||
/doc/fosdem/fosdem.aux
|
/doc/**/*.aux
|
||||||
/doc/fosdem/fosdem.log
|
/doc/**/*.log
|
||||||
/doc/fosdem/fosdem.nav
|
/doc/**/*.nav
|
||||||
/doc/fosdem/fosdem.out
|
/doc/**/*.out
|
||||||
/doc/fosdem/fosdem.snm
|
/doc/**/*.snm
|
||||||
/doc/fosdem/fosdem.tex
|
/doc/**/*.tex
|
||||||
/doc/fosdem/fosdem.toc
|
/doc/**/*.toc
|
||||||
/doc/fosdem/fosdem.*vrb
|
/doc/**/*.*vrb
|
||||||
|
/doc/mes
|
||||||
/doc/mes.1
|
/doc/mes.1
|
||||||
/doc/mes.info
|
/doc/mes.info
|
||||||
/doc/mes.pdf
|
/doc/mes.pdf
|
||||||
|
|
5
NEWS
|
@ -16,7 +16,10 @@ Please send Mes bug reports to bug-mes@gnu.org.
|
||||||
Using --with-bootstrap on x86, a bin/mes-mescc is compiled with
|
Using --with-bootstrap on x86, a bin/mes-mescc is compiled with
|
||||||
mes+mescc, that shall have sha256sum
|
mes+mescc, that shall have sha256sum
|
||||||
|
|
||||||
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc
|
722790ed261954eb53cf2cd2906c89c7589ef72b66171bbe2a9dce0f0af20232 bin/mes-mescc v0.22
|
||||||
|
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc v0.21
|
||||||
|
|
||||||
|
only differing in the version number string.
|
||||||
|
|
||||||
This has been verified on GNU Guix, Debian GNU/Linux and NixOS.
|
This has been verified on GNU Guix, Debian GNU/Linux and NixOS.
|
||||||
*** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC.
|
*** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC.
|
||||||
|
|
|
@ -6,7 +6,7 @@ Subject: GNU Mes 0.22 released
|
||||||
We are pleased to announce the release of GNU Mes 0.22, representing
|
We are pleased to announce the release of GNU Mes 0.22, representing
|
||||||
57 commits over 8 weeks.
|
57 commits over 8 weeks.
|
||||||
|
|
||||||
Mes can now be built reproducibly by mes+mescc or guile+mescc accross
|
Mes can now be built reproducibly by mes+mescc or guile+mescc across
|
||||||
distributions such as GNU Guix, Debian GNU/Linux and NixOS. Also, many
|
distributions such as GNU Guix, Debian GNU/Linux and NixOS. Also, many
|
||||||
build issues were fixed. A big thank you to reproducible-builds.org,
|
build issues were fixed. A big thank you to reproducible-builds.org,
|
||||||
Vagrant Cascadian, Jelle van der Waa, Hannes Mehnert and David Terry!
|
Vagrant Cascadian, Jelle van der Waa, Hannes Mehnert and David Terry!
|
||||||
|
@ -87,8 +87,8 @@ is built using
|
||||||
|
|
||||||
Here are the MD5 and SHA1 checksums:
|
Here are the MD5 and SHA1 checksums:
|
||||||
|
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.22.tar.gz
|
450c3043ad68ce942c1233282c9fa7e7 mes-0.22.tar.gz
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.22.tar.gz
|
a318150059a2bcff6b58e765e203c05d0dfaccee mes-0.22.tar.gz
|
||||||
|
|
||||||
[*] Use a .sig file to verify that the corresponding file (without the
|
[*] Use a .sig file to verify that the corresponding file (without the
|
||||||
.sig suffix) is intact. First, be sure to download both the .sig file
|
.sig suffix) is intact. First, be sure to download both the .sig file
|
||||||
|
@ -114,7 +114,10 @@ is built using
|
||||||
Using --with-bootstrap on x86, a bin/mes-mescc is compiled with
|
Using --with-bootstrap on x86, a bin/mes-mescc is compiled with
|
||||||
mes+mescc, that shall have sha256sum
|
mes+mescc, that shall have sha256sum
|
||||||
|
|
||||||
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc
|
722790ed261954eb53cf2cd2906c89c7589ef72b66171bbe2a9dce0f0af20232 bin/mes-mescc v0.22
|
||||||
|
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc v0.21
|
||||||
|
|
||||||
|
only differing in the version number string.
|
||||||
|
|
||||||
This has been verified on GNU Guix, Debian GNU/Linux and NixOS.
|
This has been verified on GNU Guix, Debian GNU/Linux and NixOS.
|
||||||
*** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC.
|
*** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC.
|
||||||
|
|
After Width: | Height: | Size: 8.5 KiB |
|
@ -0,0 +1 @@
|
||||||
|
LISP-1.5-page-13-bottom.png
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1,55 @@
|
||||||
|
-*- org -*-
|
||||||
|
#+TITLE: Talk @Fosdem 2017
|
||||||
|
|
||||||
|
Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
|
||||||
|
Copying and distribution of this file, with or without modification,
|
||||||
|
are permitted in any medium without royalty provided the copyright
|
||||||
|
notice and this notice are preserved.
|
||||||
|
|
||||||
|
This talk is
|
||||||
|
Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
|
||||||
|
Permission is granted to copy, distribute and/or modify this talk
|
||||||
|
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, no Front-Cover Texts, and no Back-Cover Texts. A
|
||||||
|
copy of the license is included in doc/fdl-1.3.texi, included in the
|
||||||
|
manual in the section entitled ``GNU Free Documentation License''.
|
||||||
|
|
||||||
|
beamercolorthemeX.sty
|
||||||
|
beamerthemeX.sty
|
||||||
|
fosdem.org
|
||||||
|
fosdem.pdf
|
||||||
|
|
||||||
|
egg.jpeg
|
||||||
|
egg.png
|
||||||
|
egg.xcf
|
||||||
|
fsb-logo-guile-guix-gnu.png
|
||||||
|
fsb-logo-guile-guix-gnu.xcf
|
||||||
|
fsb-logo-guile-guix-mes.png
|
||||||
|
fsb-logo-guile-guix-mes.xcf
|
||||||
|
fsb-logo.png
|
||||||
|
mes.png
|
||||||
|
mes.xcf
|
||||||
|
Permission is granted to copy, distribute and/or modify
|
||||||
|
these works under the terms of the Creative Commons
|
||||||
|
Attribution-ShareAlike 4.0 International License.
|
||||||
|
|
||||||
|
GuixSD.png
|
||||||
|
Copyright © 2015 Luis Felipe López Acevedo
|
||||||
|
Permission is granted to copy, distribute and/or modify
|
||||||
|
this work under the terms of the Creative Commons
|
||||||
|
Attribution-ShareAlike 4.0 International License.
|
||||||
|
|
||||||
|
LISP-1.5-page-13.pdf
|
||||||
|
One page from
|
||||||
|
http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf
|
||||||
|
MIT Press: Reproduction in whole or in part is permitted for any
|
||||||
|
purpose of the of the United States Government.
|
||||||
|
|
||||||
|
Generated files:
|
||||||
|
bootstrap-graph.png
|
||||||
|
guix-build-bootstrap-tarballs.log
|
||||||
|
LISP-1.5-page-13.png
|
||||||
|
LISP-1.5-page-13-bottom.png
|
|
@ -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: 156 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 69 KiB |
|
@ -0,0 +1,662 @@
|
||||||
|
#+TITLE: GNU Mes
|
||||||
|
#+TITLE: \smaller[2]{Maxwell Equations of Software}
|
||||||
|
#+DATE:2017-02-05
|
||||||
|
#+EMAIL: janneke@gnu.org
|
||||||
|
#+AUTHOR: janneke@gnu.org
|
||||||
|
#+COPYRIGHT: Jan (janneke) Nieuwenhuizen <janneke@gn.org>
|
||||||
|
#+LICENSE: GNU Free Documentation License, version 1.3 or later.
|
||||||
|
#+LATEX_HEADER:\institute{FOSDEM'17}
|
||||||
|
#+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}}
|
||||||
|
#+BEAMER_THEME: X
|
||||||
|
#+BEAMER_FRAME_LEVEL: 2
|
||||||
|
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
|
||||||
|
|
||||||
|
* Mes, WHAT?
|
||||||
|
|
||||||
|
# ** TEST
|
||||||
|
# - @@beamer:<1->@@ Item 1
|
||||||
|
# - @@beamer:<2->@@ Item 2
|
||||||
|
|
||||||
|
# GNU LilyPond, Verum
|
||||||
|
# Depression: France, Netherlands, US: about 20%; 10x more than 50 years ago
|
||||||
|
|
||||||
|
** Mes: Full Source Bootstrapping
|
||||||
|
|
||||||
|
*** Bootstrapping :B_block:BMCOL:
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.6
|
||||||
|
:END:
|
||||||
|
* Where do compilers come from?
|
||||||
|
* Who compiled the compiler?
|
||||||
|
* Chicken and Egg
|
||||||
|
*** WTF :B_block:BMCOL:
|
||||||
|
#+LATEX:\includegraphics[width=0.4\textwidth]{mes.png}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.3
|
||||||
|
:xBEAMER_ACT: <2->
|
||||||
|
:xBEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
*** mes: A tiny Scheme interpreter in Hex [or simple C?]
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <2->
|
||||||
|
:END:
|
||||||
|
|
||||||
|
*** mescc: A C compiler in Scheme, executed by Mes
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <3->
|
||||||
|
:END:
|
||||||
|
* Mes + CC =
|
||||||
|
#+xATTR_LATEX: :=\linewidth
|
||||||
|
#+xLATEX:\includegraphics[width=0.25\textwidth]{fsb-logo.png}
|
||||||
|
#+LATEX:\rightskip=-3cm\includegraphics[width=0.2\textwidth]{fsb-logo-guile-guix-mes.png}
|
||||||
|
|
||||||
|
* Mes, what NOT?
|
||||||
|
:PROPERTIES:
|
||||||
|
:xBEAMER_ENV: note
|
||||||
|
:END:
|
||||||
|
|
||||||
|
** Mes is a strategy
|
||||||
|
* NOT a goal in itself -- only a means or proof of concept
|
||||||
|
* NOT a general purpose Scheme -- close to R6RS
|
||||||
|
* NOT an alternative for Guile -- reuse Guile modules
|
||||||
|
|
||||||
|
* Mes, WHY?
|
||||||
|
|
||||||
|
** Inspiration: what do you want?
|
||||||
|
|
||||||
|
*** Meaning, Autonomy, Co-Creation, Self-Realization
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <2->
|
||||||
|
:END:
|
||||||
|
* Discovering, Hacking, Motivating, Playing
|
||||||
|
|
||||||
|
*** A planet of enlightened beings
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <3->
|
||||||
|
:END:
|
||||||
|
# * Awakening of consciousness
|
||||||
|
* Look inward
|
||||||
|
* Be happy
|
||||||
|
* Be helpful
|
||||||
|
*** A world where all software is free
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <4->
|
||||||
|
:END:
|
||||||
|
* Support \ahref{https://gnu.org}{GNU}
|
||||||
|
* Create free software
|
||||||
|
# * Be patient, be wise
|
||||||
|
|
||||||
|
** Inspiration: when do you want it?
|
||||||
|
|
||||||
|
*** NOW!!!
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <2->
|
||||||
|
:END:
|
||||||
|
|
||||||
|
** Inspiration
|
||||||
|
|
||||||
|
*** To finally run GNU
|
||||||
|
* GuixSD: GNU in the flesh
|
||||||
|
:PROPERTIES:
|
||||||
|
# :BEAMER_ACT: <1->
|
||||||
|
:END:
|
||||||
|
|
||||||
|
# * Michael Nielsen: \ahref{http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-software}{Lisp as the Maxwell's Equations of Software}
|
||||||
|
|
||||||
|
# *** recap the 4 freedoms
|
||||||
|
# :PROPERTIES:
|
||||||
|
# :BEAMER_ACT: <3->
|
||||||
|
# :END:
|
||||||
|
|
||||||
|
** 1941: The \ahref{https://en.wikipedia.org/wiki/Four_Freedoms}{Four Freedoms}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ENV: note
|
||||||
|
:END:
|
||||||
|
*** for all people on our planet
|
||||||
|
|
||||||
|
* Freedom of speech
|
||||||
|
* Freedom of worship
|
||||||
|
* Freedom from want
|
||||||
|
* Freedom from fear
|
||||||
|
|
||||||
|
-- Franklin D. Roosevelt
|
||||||
|
|
||||||
|
** 1984 Four Software Freedoms: GNU GPL
|
||||||
|
:PROPERTIES:
|
||||||
|
:xBEAMER_ENV: note
|
||||||
|
:END:
|
||||||
|
*** The freedom to
|
||||||
|
|
||||||
|
* 0 run the program as you wish, for any purpose
|
||||||
|
* 1 study how the program works, and change it if you wish
|
||||||
|
* 2 redistribute copies so you can help your neighbor
|
||||||
|
* 3 share copies of your modified versions with others
|
||||||
|
|
||||||
|
-- Richard M. Stallman
|
||||||
|
|
||||||
|
# 1: Access to the source code is a precondition for this.
|
||||||
|
|
||||||
|
# 3: By doing this you can give the whole community a chance to benefit
|
||||||
|
# from your changes. Access to the source code is a precondition for
|
||||||
|
# this.
|
||||||
|
|
||||||
|
** 2013 Debian's \ahref{https://reproducible-builds.org}{reproducible-builds.org}
|
||||||
|
|
||||||
|
*** Verifiable path: source -> binary
|
||||||
|
Reproducible builds are a set of software development practices that
|
||||||
|
create a verifiable path from human readable source code to the binary
|
||||||
|
code used by computers.
|
||||||
|
|
||||||
|
*** Does this binary come from the given source?
|
||||||
|
* Always different binary...dunno?
|
||||||
|
* Same binary
|
||||||
|
* Always good, always bad?
|
||||||
|
|
||||||
|
** 2015 GuixSD \ahref{https://www.gnu.org/software/guix/news/reproducible-builds-a-means-to-an-end.html}{Reproducible builds: a means to an end}
|
||||||
|
|
||||||
|
# GNU Guix is committed to improving the freedom and autonomy of
|
||||||
|
# computer users. This obviously manifests in the fact that GuixSD is a
|
||||||
|
# fully free distro, and this is what GNU stands for. All the packages
|
||||||
|
# in Guix are built from source, including things like firmware where
|
||||||
|
# there is an unfortunate tendency to use pre-built binaries; that way,
|
||||||
|
# users can know what software they run. On the technical side, Guix
|
||||||
|
# also tries hard to empower users by making the whole system as
|
||||||
|
# hackable as possible, in a uniform way—making Freedom #1 practical, à
|
||||||
|
# la Emacs.
|
||||||
|
|
||||||
|
*** A technical means to an end
|
||||||
|
* guarantee user autonomy and safety
|
||||||
|
* GNU+GuixSD: fully free distro
|
||||||
|
* NixOS: fully isolated build environment
|
||||||
|
* NixOS: full list of dependencies
|
||||||
|
* reproducible builds: bit-for-bit identical binaries
|
||||||
|
|
||||||
|
-- Ludovic Courtès
|
||||||
|
|
||||||
|
** 2016 From GuixSD to Mes: The bootstrap binaries
|
||||||
|
|
||||||
|
*** GuixSD ... source
|
||||||
|
* source/binary transparency
|
||||||
|
* all is built from source
|
||||||
|
* *EVERYTHING*
|
||||||
|
* starting from the ... *bootstrap binaries*
|
||||||
|
|
||||||
|
|
||||||
|
The distribution is fully “bootstrapped” and “self-contained”: each
|
||||||
|
package is built based solely on other packages in the distribution.
|
||||||
|
|
||||||
|
The root of this dependency graph is a small set of “bootstrap
|
||||||
|
binaries”, provided by the ‘(gnu packages bootstrap)’ module. For more
|
||||||
|
information on bootstrapping, *note Bootstrapping::.
|
||||||
|
|
||||||
|
|
||||||
|
[2010]: Eelco Dolstra, Andres Löh, and Nicolas Pierron described
|
||||||
|
sources of non-determinism in their 2010 JFP paper about NixOS
|
||||||
|
|
||||||
|
|
||||||
|
** GuixSD bootstrap graph
|
||||||
|
|
||||||
|
#+LATEX:\includegraphics[width=0.8\textwidth]{bootstrap-graph.png}
|
||||||
|
|
||||||
|
|
||||||
|
** GuixSD bootstrap tarballs
|
||||||
|
#+BEGIN_SRC bash
|
||||||
|
$ du -schx $(readlink $(guix build bootstrap-tarballs)/*)
|
||||||
|
2.1M /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27/binutils-static-stripped-2.27-x86_64-linux.tar.xz
|
||||||
|
16M /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4/gcc-stripped-4.9.4-x86_64-linux.tar.xz
|
||||||
|
1.7M /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24/glibc-stripped-2.24-x86_64-linux.tar.xz
|
||||||
|
3.1M /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12/guile-static-stripped-2.0.12-x86_64-linux.tar.xz
|
||||||
|
5.7M /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0/static-binaries-0-x86_64-linux.tar.xz
|
||||||
|
28M total
|
||||||
|
$ for i in $(readlink $(guix build bootstrap-tarballs)/*);\
|
||||||
|
do sudo tar xf $i; done
|
||||||
|
$ du -schx *
|
||||||
|
125M bin
|
||||||
|
13M include
|
||||||
|
18M lib
|
||||||
|
43M libexec
|
||||||
|
4.3M share
|
||||||
|
202M total
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
|
||||||
|
** Inspiration
|
||||||
|
|
||||||
|
*** To finally run GNU
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <1->
|
||||||
|
:END:
|
||||||
|
* GuixSD: GNU in the flesh
|
||||||
|
*** Bootstrap binaries: source all the way down?
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <1->
|
||||||
|
:END:
|
||||||
|
* OriansJ: \ahref{https://github.com/oriansj/stage0}{self-hosting hex assembler}
|
||||||
|
*** The computer revolution hasn't happened yet
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <2->
|
||||||
|
:END:
|
||||||
|
* Alan Kay
|
||||||
|
The computer revolution is very new, and all of the good ideas have
|
||||||
|
not been universally implemented
|
||||||
|
|
||||||
|
** Bootstrapping: Chicken and Egg
|
||||||
|
|
||||||
|
#+LATEX:\includegraphics[width=0.3\textwidth]{egg.png}
|
||||||
|
|
||||||
|
** Inspiration
|
||||||
|
|
||||||
|
*** To finally run GNU
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <1->
|
||||||
|
:END:
|
||||||
|
* GuixSD: GNU in the flesh
|
||||||
|
*** Bootstrap binaries: source all the way down?
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <1->
|
||||||
|
:END:
|
||||||
|
* OriansJ: \ahref{https://github.com/oriansj/stage0}{self-hosting hex assembler}
|
||||||
|
*** The computer revolution hasn't happened yet
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <1->
|
||||||
|
:END:
|
||||||
|
* Alan Kay
|
||||||
|
The computer revolution is very new, and all of the good ideas have
|
||||||
|
not been universally implemented
|
||||||
|
*** \ahref{http://queue.acm.org/detail.cfm?id=1039523}{LISP as the Maxwell's Equations of Software}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ACT: <1->
|
||||||
|
:END:
|
||||||
|
That was the big revelation to me when I [..] finally understood that
|
||||||
|
the half page of code on the bottom of page 13 of the Lisp 1.5 manual
|
||||||
|
was Lisp in itself. These were “Maxwell’s Equations of Software!”
|
||||||
|
|
||||||
|
* \ahref{http://www.softwarepreservation.org/projects/LISP/book/LISP\%25201.5\%2520Programmers\%2520Manual.pdf}{LISP-1.5}: page 13
|
||||||
|
|
||||||
|
|
||||||
|
** Chicken and Egg
|
||||||
|
|
||||||
|
* the shortest path from hex to gcc
|
||||||
|
* using Maxwell's Equations of Software
|
||||||
|
|
||||||
|
** Bootstrapping: Chicken and Egg
|
||||||
|
|
||||||
|
#+LATEX:\includegraphics[width=0.3\textwidth]{mes.png}
|
||||||
|
|
||||||
|
|
||||||
|
* Mes: HOW?
|
||||||
|
|
||||||
|
** LISP-1.5 John McCarthy: page 13
|
||||||
|
|
||||||
|
# convert -density 150 -quality 100 -flatten -sharpen 0x1.0 LISP-1.5-page-13.pdf LISP-1.5-page-13.png
|
||||||
|
#+BEGIN_COMMENT
|
||||||
|
[[file:LISP-1-5-page-13-bottom.png][LISP-1.5 page 13 bottom]]
|
||||||
|
#+END_COMMENT
|
||||||
|
|
||||||
|
#+ATTR_LATEX: :width=\linewidth
|
||||||
|
#+LATEX:\includegraphics[width=\textwidth]{LISP-1-5-page-13-bottom.png}
|
||||||
|
|
||||||
|
** Eval/Apply
|
||||||
|
* core
|
||||||
|
* apply
|
||||||
|
* eval
|
||||||
|
* helpers
|
||||||
|
* assoc
|
||||||
|
* pairlis
|
||||||
|
* evcon
|
||||||
|
* evlis
|
||||||
|
* primitives
|
||||||
|
* atom
|
||||||
|
* car
|
||||||
|
* cdr
|
||||||
|
* cons
|
||||||
|
* eq
|
||||||
|
|
||||||
|
** LISP-1.5 in Guile Scheme: APPLY
|
||||||
|
|
||||||
|
#+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)))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** LISP-1.5 in Guile Scheme: EVAL
|
||||||
|
|
||||||
|
#+BEGIN_SRC scheme
|
||||||
|
(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
|
||||||
|
|
||||||
|
** LISP-1.5 in Scheme: ASSOC, PAIRLIS, EVCON, EVLIS
|
||||||
|
|
||||||
|
#+BEGIN_SRC scheme
|
||||||
|
(define (assoc x a)
|
||||||
|
(cond ((eq (caar a) x) (car a))
|
||||||
|
(#t (assoc x (cdr a)))))
|
||||||
|
|
||||||
|
(define (pairlis x y a)
|
||||||
|
(cond ((null x) a)
|
||||||
|
(#t (cons (cons (car x) (car y))
|
||||||
|
(pairlis (cdr x) (cdr y) a)))))
|
||||||
|
|
||||||
|
(define (evcon c a)
|
||||||
|
(cond ((eval (caar c) a) (eval (cadar c) a))
|
||||||
|
(#t (evcon (cdr c) a))))
|
||||||
|
|
||||||
|
(define (evlis m a)
|
||||||
|
(cond ((null m) NIL)
|
||||||
|
(#t (cons (eval (car m) a) (evlis (cdr m) a)))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
|
||||||
|
** LISP-1.5 in C
|
||||||
|
|
||||||
|
* closures
|
||||||
|
* symbols
|
||||||
|
* specials? =()= =#t= =#f= =*unspecified*= =*undefined*=
|
||||||
|
* macros
|
||||||
|
* syntax-rules
|
||||||
|
* records
|
||||||
|
* modules/importing
|
||||||
|
|
||||||
|
** Garbage/Jam Collector
|
||||||
|
|
||||||
|
*** Abelson & Sussman
|
||||||
|
With a real computer we will eventually run out of free
|
||||||
|
space in which to construct new pairs.(1)
|
||||||
|
|
||||||
|
*** footnote(1)
|
||||||
|
|
||||||
|
This may not be true eventually, because memories may get large
|
||||||
|
enough so that it would be impossible to run out of free memory in the
|
||||||
|
lifetime of the computer. For example, there are about {3\cdot10^{13}}
|
||||||
|
microseconds in a year, so if we were to ‘cons’ once per microsecond we
|
||||||
|
would need about 10^{15} cells of memory to build a machine that could
|
||||||
|
operate for 30 years without running out of memory.
|
||||||
|
|
||||||
|
|
||||||
|
** C parser: roll your own LALR
|
||||||
|
|
||||||
|
*** Lalr
|
||||||
|
* minimal ANSI-C parser
|
||||||
|
|
||||||
|
=int main (){puts ("Hello, world!");return 0;}=
|
||||||
|
|
||||||
|
** C parser: Nyacc
|
||||||
|
*** Pros
|
||||||
|
* full C99 parser
|
||||||
|
* ...including C pre-processor
|
||||||
|
* perspective of building complete C compiler in Guile
|
||||||
|
* tsunami of enthusiasm and contributors!
|
||||||
|
|
||||||
|
** C parser: Nyacc
|
||||||
|
|
||||||
|
*** Cons: more TODO for Mes
|
||||||
|
* keywords
|
||||||
|
* =define*=, =lambda*=
|
||||||
|
* optargs
|
||||||
|
* exeptions, =catch=, =throw=
|
||||||
|
* =call/cc=
|
||||||
|
* fluids, =with-fluid=
|
||||||
|
* =syntax-case=
|
||||||
|
* André van Tonder's 2006-2007 streak in 14 "commits"
|
||||||
|
* psyntax: another bootstrap loop?!
|
||||||
|
* R7RS's Ellipsis
|
||||||
|
* Guile-1.8
|
||||||
|
* =#;=-comments
|
||||||
|
* =#||#=-comments
|
||||||
|
|
||||||
|
** C parser: Nyacc
|
||||||
|
|
||||||
|
*** Cons: more TODO for Mes
|
||||||
|
|
||||||
|
* Cond supports ==>=
|
||||||
|
* Bugfixes
|
||||||
|
* Cond now evaluates its test clauses only once
|
||||||
|
* Append can also handle one argument
|
||||||
|
* For-each now supports 2 list arguments
|
||||||
|
* Map now supports 3 list arguments
|
||||||
|
* Backslash in string is supported
|
||||||
|
* Closure is not a pair
|
||||||
|
* All standard characters are supported
|
||||||
|
|
||||||
|
* 36 new functions
|
||||||
|
#+BEGIN_SRC scheme
|
||||||
|
1+, 1-, abs, and=>, append-reverse, ash, char<\=?, char<?,
|
||||||
|
char>=?, char>?, even?, filter, delete, delq, vector-copy,
|
||||||
|
fold, fold-right, getenv, iota, keyword->symbol list-head,
|
||||||
|
list-tail, negative?, odd?, positive?, remove!, remove,
|
||||||
|
string->number, string-copy, string-prefix?, string=,
|
||||||
|
string=?, symbol->keyword symbol-append, symbol-prefix?,
|
||||||
|
unless, write, zero?
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
* Mes: WHERE?
|
||||||
|
|
||||||
|
|
||||||
|
** Timeline
|
||||||
|
|
||||||
|
*** June 19: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-06/msg00061.html}{on bootstrapping: introducing Mes}
|
||||||
|
# https://gnunet.org/bot/log/guile/2016-05-19
|
||||||
|
* LISP-1.5 in Scheme and in C
|
||||||
|
*** September 25: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-09/msg00061.html}{on bootstrapping: 2nd status report on Mes}
|
||||||
|
# https://gnunet.org/bot/log/guile/2016-09-25
|
||||||
|
* Scheme primitives in C, closures, macros, 97 tests, LALR
|
||||||
|
* Produce ELF binary from
|
||||||
|
#+BEGIN_SRC C
|
||||||
|
int main ()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
puts ("Hi Mes!\n");
|
||||||
|
for (i = 0; i < 4; ++i)
|
||||||
|
puts (" Hello, world!\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#+END_SRC
|
||||||
|
* in 1'20"
|
||||||
|
|
||||||
|
** Timeline
|
||||||
|
|
||||||
|
*** October 23: 0.1 [not announced]
|
||||||
|
* =let-syntax=, =match=
|
||||||
|
* compile main.c in 2s (was 1'20")
|
||||||
|
* add REPL
|
||||||
|
|
||||||
|
*** November 21: 0.2 [not announced]
|
||||||
|
* psyntax integration, =syntax-case=, =load=
|
||||||
|
|
||||||
|
*** December 12: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-12/msg00008.html}{on bootstrapping: first Mes 0.3 released}
|
||||||
|
# https://gnunet.org/bot/log/guile/2016-12-12
|
||||||
|
* Garbage Collector/Jam Scraper
|
||||||
|
|
||||||
|
*** December 25: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-12/msg00041.html}{Mes 0.4 released}
|
||||||
|
# https://gnunet.org/bot/log/guile/2016-12-25
|
||||||
|
* run Nyacc, PEG, reduced core
|
||||||
|
|
||||||
|
** Status
|
||||||
|
|
||||||
|
*** core C prototype: 1150 lines
|
||||||
|
*** non-essential C sources:
|
||||||
|
#+BEGIN_SRC bash
|
||||||
|
210 lib.c
|
||||||
|
157 math.c
|
||||||
|
126 posix.c
|
||||||
|
134 reader.c
|
||||||
|
627 total
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Status
|
||||||
|
*** tiny-mes.c: 270 lines
|
||||||
|
* compiles with mescc
|
||||||
|
* i386-lib: =i386:exit=, =i3886:open=, =i386:read=, =i386:write=
|
||||||
|
* tiny-libc: =getchar=, =putchar=, =puts=, =strcmp=, =strlen=
|
||||||
|
* runs
|
||||||
|
#+BEGIN_SRC bash
|
||||||
|
Hello tiny-mes!
|
||||||
|
reading: module/mes/hack-32.mo
|
||||||
|
MES *GOT MES*
|
||||||
|
(#\A(#\B))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Status
|
||||||
|
|
||||||
|
*** mini-mes.c: 800 lines
|
||||||
|
* 12kB binary
|
||||||
|
* 2500 lines assembly
|
||||||
|
* runs with gcc
|
||||||
|
#+BEGIN_SRC bash
|
||||||
|
Hello mini-mes!
|
||||||
|
reading: module/mes/hack-32.mo
|
||||||
|
MES *GOT MES*
|
||||||
|
cells read: 19
|
||||||
|
symbols: 1
|
||||||
|
program[10]: (cons(0(1)))
|
||||||
|
(0 . 1)
|
||||||
|
#+END_SRC
|
||||||
|
* compiles with mescc
|
||||||
|
* 83 statements skipped
|
||||||
|
|
||||||
|
** Status
|
||||||
|
|
||||||
|
*** current Guix package
|
||||||
|
|
||||||
|
#+BEGIN_SRC bash
|
||||||
|
01:16:51 janneke@dundal:~/src/mes
|
||||||
|
$ guix package -f guix.scm
|
||||||
|
The following package will be upgraded:
|
||||||
|
mes 0.4.f84e97fc -> 0.4.f84e97fc /gnu/store/2fsy1cd24pnwkv7a1zd0anzk3zz8ysdn-mes-0.4.f84e97fc
|
||||||
|
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
** Misc
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_ENV: note
|
||||||
|
:END:
|
||||||
|
|
||||||
|
civodul
|
||||||
|
|
||||||
|
Impressive!
|
||||||
|
|
||||||
|
Is it a goal to try interpret a language as close as possible to that of
|
||||||
|
Guile, and have the same libraries? I guess that could help in the
|
||||||
|
future: we could use (system base lalr), nyacc, etc.
|
||||||
|
|
||||||
|
Also, currently there’s approximately 2K lines of C. How do you plan to
|
||||||
|
make sure that it doesn’t grow over time, or even that it shrinks? :-)
|
||||||
|
|
||||||
|
This all sounds very promising, thanks a lot!
|
||||||
|
|
||||||
|
arnebab
|
||||||
|
|
||||||
|
This is really cool! Thank you for your work!
|
||||||
|
|
||||||
|
> How do you compile the interpreter?
|
||||||
|
|
||||||
|
paroneayea/cwebber
|
||||||
|
First, I'm really excited you're making progress on Mes!
|
||||||
|
|
||||||
|
> Second, Scheme48 did something similar to this, called "Pre-Scheme",
|
||||||
|
which is how they bootstrapped Scheme48 iirc. Have you heard of it or
|
||||||
|
looked at it?
|
||||||
|
|
||||||
|
https://en.wikipedia.org/wiki/PreScheme
|
||||||
|
|
||||||
|
* PreScheme in Scheme48
|
||||||
|
* \ahref{http://canonical.org/~kragen/sw/urscheme/}{Ur-Scheme}
|
||||||
|
R5RS to x86 Assembly
|
||||||
|
|
||||||
|
** What's next?
|
||||||
|
|
||||||
|
* psyntax
|
||||||
|
* source or binary?
|
||||||
|
* alternative syntax-case?
|
||||||
|
* rewrite Nyacc without syntax-case, R7RS-ellipsis?
|
||||||
|
* call/cc vs eval/apply/evlis?
|
||||||
|
* merge with Guile?
|
||||||
|
* compile Guile or compile Gcc?
|
||||||
|
* prototype? in C
|
||||||
|
* move from C to Hex?
|
||||||
|
* move from C to [Pre]Scheme
|
||||||
|
|
||||||
|
** Thanks
|
||||||
|
*** Thanks :B_block:BMCOL:
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.48
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
* John McCarthy
|
||||||
|
* Richard Stallman
|
||||||
|
* Eelco Dolstra
|
||||||
|
* Ludovic Courtès
|
||||||
|
* Rutger van Beusekom
|
||||||
|
* Christopher A. Webber
|
||||||
|
*** Thanks everyone else :B_block:BMCOL:
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.48
|
||||||
|
:xBEAMER_ACT: <2->
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
* LISP-1.5
|
||||||
|
* GNU
|
||||||
|
* NixOS
|
||||||
|
* Debian reproducible builds
|
||||||
|
* GuixSD
|
||||||
|
* FOSDEM
|
||||||
|
*** Connect
|
||||||
|
* irc freenode.net [[irc://guix@freenode.net][#guix]] [[irc://guile@freenode.net][#guile]]
|
||||||
|
* mail [[mailto://guile-user@gnu.org][guile-user@gnu.org]]
|
||||||
|
* git [[https://gitlab.com/janneke/mes][git@gitlab.com:janneke/mes.git]]
|
||||||
|
|
||||||
|
# * Copying
|
||||||
|
# :PROPERTIES:
|
||||||
|
# :COPYING: t
|
||||||
|
# :END:
|
||||||
|
|
||||||
|
# Copyright \copy 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
|
||||||
|
# C-c C-e l b (org-beamer-export-to-latex)
|
||||||
|
# C-c C-e l P (org-beamer-export-to-pdf)
|
||||||
|
|
||||||
|
* Legalese
|
||||||
|
:PROPERTIES:
|
||||||
|
:COPYING: t
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Copyright \copy 2017 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
|
After Width: | Height: | Size: 300 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 222 KiB |
|
@ -0,0 +1,44 @@
|
||||||
|
11:12:26 janneke@dundal:~/src/mes/doc
|
||||||
|
$ guix build bootstrap-tarballs
|
||||||
|
substitute: updating list of substitutes from 'http://mirror.hydra.gnu.org'... 100.0%
|
||||||
|
The following files will be downloaded:
|
||||||
|
/gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0
|
||||||
|
/gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4
|
||||||
|
/gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0
|
||||||
|
/gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27
|
||||||
|
/gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24
|
||||||
|
/gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12
|
||||||
|
@ substituter-started /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
|
||||||
|
Downloading http://mirror.hydra.gnu.org/nar/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27 (2.0MiB installed)...
|
||||||
|
binutils-static-stripped-tarball-2.27 3.5MiB/s 00:01 | 2.0MiB transferred
|
||||||
|
|
||||||
|
@ substituter-succeeded /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27
|
||||||
|
@ substituter-started /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
|
||||||
|
Downloading http://mirror.hydra.gnu.org/nar/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4 (15.5MiB installed)...
|
||||||
|
gcc-stripped-tarball-4.9.4 4.0MiB/s 00:04 | 15.5MiB transferred
|
||||||
|
|
||||||
|
@ substituter-succeeded /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4
|
||||||
|
@ substituter-started /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
|
||||||
|
Downloading http://mirror.hydra.gnu.org/nar/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24 (1.6MiB installed)...
|
||||||
|
glibc-stripped-tarball-2.24 697KiB/s 00:02 | 1.6MiB transferred
|
||||||
|
|
||||||
|
@ substituter-succeeded /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24
|
||||||
|
@ substituter-started /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
|
||||||
|
Downloading http://mirror.hydra.gnu.org/nar/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12 (3.1MiB installed)...
|
||||||
|
guile-static-stripped-tarball-2.0.12 3.2MiB/s 00:01 | 3.1MiB transferred
|
||||||
|
|
||||||
|
@ substituter-succeeded /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12
|
||||||
|
@ substituter-started /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
|
||||||
|
Downloading http://mirror.hydra.gnu.org/nar/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0 (5.7MiB installed)...
|
||||||
|
static-binaries-tarball-0 4.1MiB/s 00:01 | 5.7MiB transferred
|
||||||
|
|
||||||
|
@ substituter-succeeded /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0
|
||||||
|
@ substituter-started /gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
|
||||||
|
Downloading http://mirror.hydra.gnu.org/nar/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 (2KiB installed)...
|
||||||
|
bootstrap-tarballs-0 385KiB/s 00:00 | 520B transferred
|
||||||
|
|
||||||
|
@ substituter-succeeded /gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0
|
||||||
|
/gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0
|
||||||
|
12:05:09 janneke@dundal:~/src/mes/doc
|
||||||
|
$ 12:05:09 janneke@dundal:~/src/mes/doc
|
||||||
|
$
|
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 7.3 KiB |
|
@ -0,0 +1 @@
|
||||||
|
../fosdem17/LISP-1-5-page-13-bottom.png
|
|
@ -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: 551 KiB |
After Width: | Height: | Size: 936 KiB |
|
@ -0,0 +1 @@
|
||||||
|
../fosdem17/bootstrap-graph.png
|
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1 @@
|
||||||
|
../fosdem17/egg.png
|
After Width: | Height: | Size: 16 KiB |
|
@ -0,0 +1 @@
|
||||||
|
../fosdem17/fsb-logo-guile-guix-mes.png
|
|
@ -0,0 +1,92 @@
|
||||||
|
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-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" [color = darkgoldenrod];
|
||||||
|
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" [color = darkgoldenrod];
|
||||||
|
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" [color = darkgoldenrod];
|
||||||
|
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
||||||
|
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [color = darkgoldenrod];
|
||||||
|
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod];
|
||||||
|
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = darkgoldenrod];
|
||||||
|
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [color = peachpuff4];
|
||||||
|
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
|
||||||
|
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [color = peachpuff4];
|
||||||
|
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = peachpuff4];
|
||||||
|
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" [color = red];
|
||||||
|
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" -> "/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" [color = red];
|
||||||
|
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
|
||||||
|
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" [label = "mes-boot@0.19", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = darkseagreen];
|
||||||
|
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
|
||||||
|
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" -> "/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [color = darkseagreen];
|
||||||
|
# "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = darkseagreen];
|
||||||
|
"/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [label = "bootstrap-mes@0.19", shape = box, fontname = Helvetica];
|
||||||
|
# "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [label = "guile-bootstrap@2.0", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" [label = "tcc-boot0@0.9.26-5.c7b3f59", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" [color = dimgrey];
|
||||||
|
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey];
|
||||||
|
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
|
||||||
|
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [color = dimgrey];
|
||||||
|
# "/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = dimgrey];
|
||||||
|
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" [color = blue];
|
||||||
|
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [color = blue];
|
||||||
|
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||||
|
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = blue];
|
||||||
|
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [color = blue];
|
||||||
|
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||||
|
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen];
|
||||||
|
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [color = darkseagreen];
|
||||||
|
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
|
||||||
|
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [color = darkseagreen];
|
||||||
|
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = darkseagreen];
|
||||||
|
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" [color = blue];
|
||||||
|
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" [color = blue];
|
||||||
|
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
|
||||||
|
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [color = blue];
|
||||||
|
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.19.drv" [color = blue];
|
||||||
|
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = blue];
|
||||||
|
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.19.drv" [label = "mesboot-headers@0.19", shape = box, fontname = Helvetica];
|
||||||
|
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.19.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
|
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-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@0", shape = box, 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/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: 153 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 389 KiB |
|
@ -0,0 +1 @@
|
||||||
|
../fosdem17/mes.png
|
|
@ -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>>]
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 36 KiB |
|
@ -0,0 +1,108 @@
|
||||||
|
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 = 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 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: 33 KiB |
|
@ -0,0 +1,109 @@
|
||||||
|
digraph {
|
||||||
|
node[shape=box,width=1,height=0.25];
|
||||||
|
edge [height=0.25];
|
||||||
|
|
||||||
|
# "hex0-monitor" [label = "hex0 Monitor", shape = box];
|
||||||
|
# "hex0-assembler" [label = "hex0 Assembler", shape = box];
|
||||||
|
# "SET" [label = "SET editor", shape = box];
|
||||||
|
# "hex1-assembler" [label = "hex1 Assembler", shape = box];
|
||||||
|
# "hex2-assembler" [label = "hex2 Assembler", shape = box];
|
||||||
|
# "M1-Macro" [label = "M1 Macro assembler", shape = box];
|
||||||
|
# "cat" [label = "cat", shape = box];
|
||||||
|
# "Slow_Lisp" [label = "Slow Lisp", shape = box];
|
||||||
|
# "Stage0-FORTH" [label = "Stage0 FORTH", shape = box];
|
||||||
|
# "cc_x86" [label = "cc_x86", shape = box];
|
||||||
|
# "M2-Planet" [label = "M2-PLanet", shape = box];
|
||||||
|
# "M2-Moon" [label = "M2-Moon", color = red1, shape = box];
|
||||||
|
# "mescc-tools-seed" [label = "mescc-tools-seed", shape = box];
|
||||||
|
"?" [label = "?", color = red1, shape = box];
|
||||||
|
"bootstrap-binaries" [label = "bootstrap-binaries", color = red1, shape = box];
|
||||||
|
"mescc-tools" [label = "mescc-tools", 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", shape = box];
|
||||||
|
"Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = red1, shape = box];
|
||||||
|
"tcc" [label = "tcc", shape = box];
|
||||||
|
"Mes C Lib +GNU" [label = "Mes C Lib +GNU", shape = box];
|
||||||
|
"gcc-core 2.95.3" [label = "gcc-core 2.95.3", shape = box];
|
||||||
|
# "glibc 2.2.5" [label = "glibc 2.2.5", shape = box];
|
||||||
|
# "gcc 2.95.3" [label = "gcc 2.95.3", shape = box];
|
||||||
|
# "glibc 2.16" [label = "glibc 2.16", shape = box];
|
||||||
|
# "gcc 4.7.4" [label = "gcc 4.7.4", shape = box];
|
||||||
|
|
||||||
|
# "SET" -> "hex0-monitor" [color = cyan];
|
||||||
|
# "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 = cyan];
|
||||||
|
# "Slow_Lisp" -> "M1-Macro" [color = green2];
|
||||||
|
# "Stage0-FORTH" -> "M1-Macro" [color = green2];
|
||||||
|
# "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];
|
||||||
|
"bootstrap-binaries" -> "?" [color = red1];
|
||||||
|
|
||||||
|
"mes.M2" -> "bootstrap-binaries" [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];
|
||||||
|
|
||||||
|
"Mes C Lib +GNU" -> "tcc" [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: 37 KiB |
|
@ -0,0 +1,111 @@
|
||||||
|
digraph {
|
||||||
|
node[shape=box,width=1,height=0.25];
|
||||||
|
edge [height=0.25];
|
||||||
|
|
||||||
|
# "hex0-monitor" [label = "hex0 Monitor", shape = box];
|
||||||
|
# "hex0-assembler" [label = "hex0 Assembler", shape = box];
|
||||||
|
# "SET" [label = "SET editor", shape = box];
|
||||||
|
# "hex1-assembler" [label = "hex1 Assembler", shape = box];
|
||||||
|
# "hex2-assembler" [label = "hex2 Assembler", shape = box];
|
||||||
|
# "M1-Macro" [label = "M1 Macro assembler", shape = box];
|
||||||
|
# "cat" [label = "cat", shape = box];
|
||||||
|
# "Slow_Lisp" [label = "Slow Lisp", shape = box];
|
||||||
|
# "Stage0-FORTH" [label = "Stage0 FORTH", shape = box];
|
||||||
|
# "cc_x86" [label = "cc_x86", shape = box];
|
||||||
|
# "M2-Planet" [label = "M2-PLanet", shape = box];
|
||||||
|
# "M2-Moon" [label = "M2-Moon", color = red1, shape = box];
|
||||||
|
# "mescc-tools-seed" [label = "mescc-tools-seed", shape = box];
|
||||||
|
"?" [label = "?", color = red1, shape = box];
|
||||||
|
"bootstrap-binaries" [label = "bootstrap-binaries", color=red1, shape = box];
|
||||||
|
# "mescc-tools" [label = "mescc-tools", 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", shape = box];
|
||||||
|
# "Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = red1, shape = box];
|
||||||
|
"tcc" [label = "tcc", shape = box];
|
||||||
|
"Mes C Lib +GNU" [label = "Mes C Lib +GNU", shape = box];
|
||||||
|
"gcc-core 2.95.3" [label = "gcc-core 2.95.3", shape = box];
|
||||||
|
"glibc 2.2.5" [label = "glibc 2.2.5", shape = box];
|
||||||
|
"gcc 2.95.3" [label = "gcc 2.95.3", shape = box];
|
||||||
|
"glibc 2.16" [label = "glibc 2.16", shape = box];
|
||||||
|
"gcc 4.7.4" [label = "gcc 4.7.4", shape = box];
|
||||||
|
|
||||||
|
# "SET" -> "hex0-monitor" [color = cyan];
|
||||||
|
# "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 = cyan];
|
||||||
|
# "Slow_Lisp" -> "M1-Macro" [color = green2];
|
||||||
|
# "Stage0-FORTH" -> "M1-Macro" [color = green2];
|
||||||
|
# "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];
|
||||||
|
"bootstrap-binaries" -> "?" [color = red1];
|
||||||
|
|
||||||
|
# "mes.M2" -> "bootstrap-binaries" [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" -> "tcc" [color = black];
|
||||||
|
"gcc-core 2.95.3" -> "bootstrap-binaries" [color = black];
|
||||||
|
|
||||||
|
"binutils" -> "Mes C Lib +GNU" [color = black];
|
||||||
|
"binutils" -> "tcc" [color = black];
|
||||||
|
"binutils" -> "bootstrap-binaries" [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: 69 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 891 KiB |
After Width: | Height: | Size: 814 KiB |
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,61 @@
|
||||||
|
digraph "Guix package" {
|
||||||
|
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "libstdc++-boot0@4.9.4" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "binutils-cross-boot0@2.31.1" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "binutils-bootstrap@0" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "bootstrap-binaries@0" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "diffutils-boot0@3.6" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "file-boot0@5.33" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "findutils-boot0@4.6.0" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "gcc-bootstrap@0" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "glibc-bootstrap@0" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" -> "make-boot0@4.2.1" [color = black];
|
||||||
|
"gcc-cross-boot0@5.5.0" [label = "gcc-cross-boot0@5.5.0", shape = box, fontname = Helvetica];
|
||||||
|
"libstdc++-boot0@4.9.4" -> "binutils-bootstrap@0" [color = black];
|
||||||
|
"libstdc++-boot0@4.9.4" -> "bootstrap-binaries@0" [color = black];
|
||||||
|
"libstdc++-boot0@4.9.4" -> "diffutils-boot0@3.6" [color = black];
|
||||||
|
"libstdc++-boot0@4.9.4" -> "file-boot0@5.33" [color = black];
|
||||||
|
"libstdc++-boot0@4.9.4" -> "findutils-boot0@4.6.0" [color = black];
|
||||||
|
"libstdc++-boot0@4.9.4" -> "gcc-bootstrap@0" [color = black];
|
||||||
|
"libstdc++-boot0@4.9.4" -> "glibc-bootstrap@0" [color = black];
|
||||||
|
"libstdc++-boot0@4.9.4" -> "make-boot0@4.2.1" [color = black];
|
||||||
|
"libstdc++-boot0@4.9.4" [label = "libstdc++-boot0@4.9.4", shape = box, fontname = Helvetica];
|
||||||
|
"binutils-cross-boot0@2.31.1" -> "binutils-bootstrap@0" [color = black];
|
||||||
|
"binutils-cross-boot0@2.31.1" -> "bootstrap-binaries@0" [color = black];
|
||||||
|
"binutils-cross-boot0@2.31.1" -> "diffutils-boot0@3.6" [color = black];
|
||||||
|
"binutils-cross-boot0@2.31.1" -> "file-boot0@5.33" [color = black];
|
||||||
|
"binutils-cross-boot0@2.31.1" -> "findutils-boot0@4.6.0" [color = black];
|
||||||
|
"binutils-cross-boot0@2.31.1" -> "gcc-bootstrap@0" [color = black];
|
||||||
|
"binutils-cross-boot0@2.31.1" -> "glibc-bootstrap@0" [color = black];
|
||||||
|
"binutils-cross-boot0@2.31.1" -> "make-boot0@4.2.1" [color = black];
|
||||||
|
"binutils-cross-boot0@2.31.1" [label = "binutils-cross-boot0@2.31.1", shape = box, fontname = Helvetica];
|
||||||
|
"binutils-bootstrap@0" [label = "binutils-bootstrap@0", fontname = Helvetica];
|
||||||
|
"bootstrap-binaries@0" [label = "bootstrap-binaries@0", fontname = Helvetica];
|
||||||
|
"diffutils-boot0@3.6" -> "binutils-bootstrap@0" [color = black];
|
||||||
|
"diffutils-boot0@3.6" -> "bootstrap-binaries@0" [color = black];
|
||||||
|
"diffutils-boot0@3.6" -> "gcc-bootstrap@0" [color = black];
|
||||||
|
"diffutils-boot0@3.6" -> "glibc-bootstrap@0" [color = black];
|
||||||
|
"diffutils-boot0@3.6" -> "make-boot0@4.2.1" [color = black];
|
||||||
|
"diffutils-boot0@3.6" [label = "diffutils-boot0@3.6", shape = box, fontname = Helvetica];
|
||||||
|
"file-boot0@5.33" -> "binutils-bootstrap@0" [color = black];
|
||||||
|
"file-boot0@5.33" -> "bootstrap-binaries@0" [color = black];
|
||||||
|
"file-boot0@5.33" -> "gcc-bootstrap@0" [color = black];
|
||||||
|
"file-boot0@5.33" -> "glibc-bootstrap@0" [color = black];
|
||||||
|
"file-boot0@5.33" -> "make-boot0@4.2.1" [color = black];
|
||||||
|
"file-boot0@5.33" [label = "file-boot0@5.33", shape = box, fontname = Helvetica];
|
||||||
|
"findutils-boot0@4.6.0" -> "binutils-bootstrap@0" [color = black];
|
||||||
|
"findutils-boot0@4.6.0" -> "bootstrap-binaries@0" [color = black];
|
||||||
|
"findutils-boot0@4.6.0" -> "diffutils-boot0@3.6" [color = black];
|
||||||
|
"findutils-boot0@4.6.0" -> "gcc-bootstrap@0" [color = black];
|
||||||
|
"findutils-boot0@4.6.0" -> "glibc-bootstrap@0" [color = black];
|
||||||
|
"findutils-boot0@4.6.0" -> "make-boot0@4.2.1" [color = black];
|
||||||
|
"findutils-boot0@4.6.0" [label = "findutils-boot0@4.6.0", shape = box, fontname = Helvetica];
|
||||||
|
"gcc-bootstrap@0" -> "glibc-bootstrap@0" [color = black];
|
||||||
|
"gcc-bootstrap@0" [label = "gcc-bootstrap@0", fontname = Helvetica];
|
||||||
|
"glibc-bootstrap@0" [label = "glibc-bootstrap@0", fontname = Helvetica];
|
||||||
|
"make-boot0@4.2.1" -> "binutils-bootstrap@0" [color = black];
|
||||||
|
"make-boot0@4.2.1" -> "bootstrap-binaries@0" [color = black];
|
||||||
|
"make-boot0@4.2.1" -> "gcc-bootstrap@0" [color = black];
|
||||||
|
"make-boot0@4.2.1" -> "glibc-bootstrap@0" [color = black];
|
||||||
|
"make-boot0@4.2.1" [label = "make-boot0@4.2.1", shape = box, fontname = Helvetica];
|
||||||
|
}
|
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 359 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];
|
||||||
|
}
|