Compare commits

..

11 Commits

Author SHA1 Message Date
Jan Nieuwenhuizen b18623b0d1
doc: Add lp20.webm 2020-03-15 14:01:52 +01:00
Jan Nieuwenhuizen 9989a8674a
doc: Update movie scripting. 2020-03-15 14:01:52 +01:00
Jan Nieuwenhuizen 927cc12607
doc: Add lp20.ogv.
* doc/talks/lp20/lp20.ogv: New file.
2020-03-15 14:01:22 +01:00
Jan Nieuwenhuizen f6e1ceedef
doc: Add LiberPlanet audio and movie script.
* doc/talks/lp20/movie/audio.ogg: New file.
* doc/talks/lp20/movie/doit: New file.
2020-03-15 10:40:13 +01:00
Jan Nieuwenhuizen e3d7414ac2
doc: Add LibrePlanet20 talk.
* doc/talks/lp20: New talk.
2020-03-15 10:40:07 +01:00
Jan Nieuwenhuizen eb94972b6b
doc: Add bootstrapping intro.
* doc/talks/fosdem20/intro.org: New file.
* doc/talks/fosdem20/intro.pdf: New file.
2020-03-13 11:54:42 +01:00
Jan Nieuwenhuizen c4eed1cdbd
doc: Add current status.
* doc/talks/fosdem20/status.org: New file.
* doc/talks/fosdem20/status.pdf: New file.
2020-03-13 11:54:42 +01:00
Jan Nieuwenhuizen 83a79020a5
doc: Add fosdem20 talk.
* doc/talks/fosdem20: New talk.
2020-03-13 11:54:34 +01:00
Jan Nieuwenhuizen 1c5fcbdf21
doc: Add fosdem19 talk.
* doc/talks/fosdem19: New talk.
2020-01-27 20:51:46 +01:00
Jan Nieuwenhuizen adf306350d
doc: Add fosdem17 talk.
* doc/talks/fosdem17: Add fosdem17 talk.
2020-01-27 20:51:38 +01:00
Jan Nieuwenhuizen ddc160c188
doc: Post-release update.
* NEWS: Add v0.22 hash.
* doc/announce/ANNOUNCE-0.22: Add gen-announce checksums; update NEWS,
typos.
2020-01-23 17:34:36 +01:00
645 changed files with 21705 additions and 15988 deletions

View File

@ -1,5 +1,5 @@
;;; GNU Mes --- Maxwell Equations of Software
;;; Copyright © 2018,2019,2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Mes.
;;;
@ -34,31 +34,8 @@
(scheme-mode
.
((geiser-active-implementations . (guile))
;; Guile syntax
(eval . (put 'pass-if 'scheme-indent-function 1))
(eval . (put 'pass-if-not 'scheme-indent-function 1))
(eval . (put 'pass-if-eq 'scheme-indent-function 2))
(eval . (put 'pass-if-equal 'scheme-indent-function 2))
(eval . (put 'expect-fail 'scheme-indent-function 2))
(eval . (put 'pass-if-timeout 'scheme-indent-function 2))
;; Guix package
(eval . (put 'package 'scheme-indent-function 0))
(eval . (put 'origin 'scheme-indent-function 0))
;; Guix 'modify-phases' and its keywords.
(eval . (put 'modify-phases 'scheme-indent-function 1))
(eval . (put 'replace 'scheme-indent-function 1))
(eval . (put 'add-before 'scheme-indent-function 2))
(eval . (put 'add-after 'scheme-indent-function 2))
;; Guix utils
(eval . (put 'substitute* 'scheme-indent-function 1))
(eval
.
(progn
(defun prefix-dir-locals-dir (elt)
(concat (locate-dominating-file buffer-file-name ".dir-locals.el") elt))

63
.gitignore vendored
View File

@ -1,21 +1,3 @@
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2016,2017,2019,2020,2022 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/>.
*-
*~
.#*
@ -51,56 +33,42 @@
*.mini-hex2
*.a
*.o
*.h.m2
*.c.m2
*.seed-out
*.stderr
*.stdout
*.x86-out
/TAGS
/lib/x86-mes/0exit-42
/lib/x86-mes/exit-42
/lib/tests/*/[0-9a][0-9a-z]-*
!/lib/tests/*/*.c
!/lib/tests/*/*.exit
!/lib/tests/*/*.stdout
/scaffold/*.M1
/scaffold/*.m2
/scaffold/*.hex2
/scaffold/argv
/scaffold/hello
/scaffold/main
/scaffold/micro-mes
/scaffold/read
/scaffold/tiny-mes
/scaffold/argv-m2
/scaffold/hello-m2
/scaffold/main-m2
/scaffold/micro-mes-m2
/scaffold/read-m2
/scaffold/tiny-mes-m2
/scaffold/tests/[0-9a][0-9a-z]-*
/scaffold/tests/t.*
!/scaffold/tests/*.c
!/scaffold/tests/*.exit
!/scaffold/tests/*.stdout
/.config.make
/.store
/.tarball-version
/out
?
?.mes
\#*#
/doc/fosdem/fosdem.aux
/doc/fosdem/fosdem.log
/doc/fosdem/fosdem.nav
/doc/fosdem/fosdem.out
/doc/fosdem/fosdem.snm
/doc/fosdem/fosdem.tex
/doc/fosdem/fosdem.toc
/doc/fosdem/fosdem.*vrb
/doc/**/*.aux
/doc/**/*.log
/doc/**/*.nav
/doc/**/*.out
/doc/**/*.snm
/doc/**/*.tex
/doc/**/*.toc
/doc/**/*.*vrb
/doc/mes
/doc/mes.1
/doc/mes.info
/doc/mes.pdf
@ -135,7 +103,6 @@
/doc/images/gcc-mesboot-graph.pdf
/doc/web/
/config.sh
/include/arch
/include/mes/config.h
/gcc-lib
/mescc-lib

20
AUTHORS
View File

@ -13,8 +13,6 @@ Additions and fixes throughout
Jeremiah Orians <jeremiah@pdp10.guru>
lib/stdio/fopen.c (first simple version of fopen)
scaffold/tests/98-fopen.c
Initial work on elf headers:
lib/linux/x86-mes/elf32-header.hex2 and similar
Han-Wen Nienhuys <hanwen@xs4all.nl>
lib/string/memmem.c (_memmem, memmem)
@ -30,13 +28,6 @@ rain1
scaffold/tests/90-goto-var.c
scaffold/tests/91-goto-array.c
Nathalie Kopaczewski <natkopa@gmail.com>
Fast long devision
lib/div.c (__mesabi_log2i)
W. J. van der Laan <laanwj@protonmail.com>
Bugfixes for logand, 64bit build, and va_arg
List of imported files
D A Gwyn
@ -61,8 +52,11 @@ module/mes/getopt-long.scm
Optargs from Guile
mes/module/mes/optargs.scm
PEG from Guile
mes/module/mes/peg/
Pmatch from Guile
mes/module/system/base/pmatch.scm
mes/module/mes/pmatch.scm
Pretty-print from Guile
mes/module/mes/pretty-print.scm
@ -86,12 +80,8 @@ lib/mach/msg.c
lib/mach/mach-init.c
lib/mach/*.S
M2-Planet dependencies
lib/m2/x86/x86_defs.M1
lib/m2/x86/ELF-x86.hex2
* legalese
Copyright © 2016,2017,2018,2019,2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Copyright © 2016,2017,2018,2019 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

View File

@ -160,5 +160,5 @@ be source.
* Contact
** bug-mes@gnu.org
** #bootstrappable, #guix on libera.chat
** #bootstrappable, #guix on freenode
** bootstrappable.org

View File

@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

57
HACKING
View File

@ -2,11 +2,9 @@
#+TITLE: Hacking GNU Mes
* SETUP
guix shell #64 bit + 32bit
CC=i686-unknown-linux-gnu-gcc ./configure
CC=arm-unknown-linux-gnueabihf-gcc ./configure
guix environment -l guix.scm #64 bit + 32bit
CC=i686-unkown-linux-gnu-gcc ./configure
or
./configure
@ -50,23 +48,6 @@ Configure to compile with Tiny CC
- bytes read
6) globals
* TESTING
** make check recheck=true TESTS="tests/base lib/tests/scaffold/t.c"
** mescc
*** To skip MES tests, in "./check.sh", comment-out check-boot.sh, check-mes.sh.
*** Running individual tests
#+BEGIN_SRC bash
cd gcc-lib
V=2 CC=i686-unknown-linux-gnu-gcc ../pre-inst-env test-c.sh ../lib/tests/scaffold/t.c
#+END_SRC
#+BEGIN_SRC bash
cd mescc-lib
V=2 CC=mescc ../pre-inst-env test-c.sh ../lib/tests/scaffold/t.c
#+END_SRC
* Bugs
** mes: performance, Mes is now 2-10x slower than Guile.
** mes/mescc lack support for fork/exec on the Hurd.
@ -130,30 +111,30 @@ x/s *((char **)($rsp+8))
** C parser/compiler
*** [[https://savannah.gnu.org/projects/nyacc][nyacc]]
*** PEG: [[https://piumarta.com/software/peg/][parse C using PEG]]
*** PEG: [[http://piumarta.com/software/peg/][parse C using PEG]]
*** [[https://en.wikipedia.org/wiki/Tiny_C_Compiler][Tiny C Compiler]]
*** [[https://www.t3x.org/subc/index.html][Sub C]]
*** [[http://www.t3x.org/subc/index.html][Sub C]]
*** [[https://groups.google.com/forum/#!topic/comp.lang.lisp/VPuX0VsjTTE][C intepreter in LISP/Scheme/Python]]
** C assembler/linker
*** [[https://www.tldp.org/HOWTO/Assembly-HOWTO/linux.html][Assembly HOWTO]]
*** [[http://www.tldp.org/HOWTO/Assembly-HOWTO/linux.html][Assembly HOWTO]]
*** ELF
7f 45 4c 46
*** [[https://www.muppetlabs.com/~breadbox/software/tiny/][Small ELF programs]]
*** [[https://www.cirosantilli.com/elf-hello-world/][Elf hello world]]
*** [[http://www.muppetlabs.com/~breadbox/software/tiny/][Small ELF programs]]
*** [[http://www.cirosantilli.com/elf-hello-world/][Elf hello world]]
** SC - c as s-expressions
sc: https://sph.mn/content/3d3
sc: http://sph.mn/content/3d3
** RNRS
*** [[https://www.scheme-reports.org/][Scheme Reports]]
*** [[http://www.scheme-reports.org/][Scheme Reports]]
*** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-349.pdf][Scheme - Report on Scheme]]
*** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-452.pdf][RRS - Revised Report on Scheme]]
** tiny schemes
https://forum.osdev.org/viewtopic.php?f=15&t=19937
http://forum.osdev.org/viewtopic.php?f=15&t=19937
https://www.stripedgazelle.org/joey/dreamos.html
https://armpit.sourceforge.net/
https://common-lisp.net/project/movitz/movitz.html
http://www.stripedgazelle.org/joey/dreamos.html
http://armpit.sourceforge.net/
http://common-lisp.net/project/movitz/movitz.html
<civodul> janneke: https://github.com/namin/inc looks interesting [15:18]
** Orians Jeremiah
@ -170,13 +151,13 @@ https://common-lisp.net/project/movitz/movitz.html
<janneke> OriansJ: i looked a few times and saw 'LISP empty', so thanks for
the pointer! [00:24]
<civodul> OriansJ, janneke: from that page, there's also:
https://web.archive.org/web/20160604035203fw_/https://homepage.ntlworld.com/edmund.grimley-evans/bcompiler.html
https://web.archive.org/web/20160604035203fw_/http://homepage.ntlworld.com/edmund.grimley-evans/bcompiler.html
** C4/C500
https://web.archive.org/web/20160604041431/https://homepage.ntlworld.com/edmund.grimley-evans/cc500/cc500.c
https://web.archive.org/web/20160604041431/http://homepage.ntlworld.com/edmund.grimley-evans/cc500/cc500.c
https://github.com/rswier/c4/blob/master/c4.c
** Compilers for free
https://codon.com/compilers-for-free
http://codon.com/compilers-for-free
** Small lisps
*** [[https://www.mirrorservice.org/sites/www.bitsavers.org/bits/TI/Explorer/zeta-c/][ZETA-C]]
** Small C compilers
@ -188,10 +169,10 @@ simple as possible.
*** pcc
*** early GCC?
https://miyuki.github.io/2017/10/04/gcc-archaeology-1.html
*** [[https://tack.sourceforge.net/][ack]]
*** [[http://tack.sourceforge.net/][ack]]
<rain1> it may be possible to compile like this: mes |> ack |> pcc |> tcc |>
gcc 4.7.4 |> gcc later version... up to modern
*** [[https://web.archive.org/web/20160402225843/https://homepage.ntlworld.com/edmund.grimley-evans/cc500/][cc500]]
*** [[https://web.archive.org/web/20160402225843/http://homepage.ntlworld.com/edmund.grimley-evans/cc500/][cc500]]
** rain1's Bootstrapping Wiki: https://bootstrapping.miraheze.org/wiki/Main_Page
** rain1's hex86
https://notabug.org/rain1/hex86/src/master/tests/hex0b3.hex86
@ -202,7 +183,7 @@ https://notabug.org/rain1/hex86/src/master/tests/hex0b3.hex86
** linux syscalls: https://fedora.juszkiewicz.com.pl/syscalls.html
* legalese
Copyright © 2016,2017,2018,2019,2021,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Copyright © 2016,2017,2018,2019 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

26
INSTALL
View File

@ -1,7 +1,7 @@
-*- org -*-
#+TITLE: Building and Installing GNU Mes
Copyright © 2016,2017,2018,2019,2021,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Copyright © 2016,2017,2018,2019 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
@ -20,20 +20,19 @@ similar way.
** Prerequisites
*** Guix
#+BEGIN_SRC bash
guix shell #64 bit + 32bit
guix shell --system=i686-linux #32 bit only
guix shell --system=armhf-linux #32 bit only
guix environment -l guix.scm #64 bit + 32bit
guix environment --system=i686-linux -l guix.scm #32 bit only
#+END_SRC
*** Other GNU/Linux
- [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 1.4.0 is known to work.
- [[https://github.com/oriansj/m2-planet][M2-Planet]] (optional), 1.9.0 is known to work.
- [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 1.00.2 is known to work.
- GNU Gcc, 7.5.0 is known to work.
- GNU Guile, version 3.0.4 is know to work.
- SH, /bin/sh, GNU Bash 5.0.16 is known to work.
- [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 0.6.1 is known to work.
- [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 0.93.0 is known to work.
- GNU Gcc, 4.9.3 is known to work.
- GNU Guile, version 2.0.12 or is know to work.
- SH, /bin/sh, GNU Bash 4.3 is known to work.
- GNU coreutils
- sed, GNU sed 4.8 is known to work.
- sed, GNU sed 4.2 is known to work.
- Perl, 5.22 is known to work.
** Build it
@ -79,9 +78,8 @@ The bootstrap build is part of Guix, see
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/commencement.scm
** Prerequisites
- [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 1.4.0 is known to work.
- [[https://github.com/oriansj/m2-planet][M2-Planet]], 1.9.0 is known to work.
- [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 1.00.2 is known to work.
- [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 0.6.1 is known to work.
- [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 0.93.0 is known to work.
** Build it

74
NEWS
View File

@ -2,7 +2,7 @@
#+TITLE: GNU Mes NEWS history of user-visible changes
#+STARTUP: content hidestars
Copyright © 2016,2017,2018,2019,2021,2022,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Copyright © 2016,2017,2018,2019 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
@ -10,78 +10,6 @@ Copyright © 2016,2017,2018,2019,2021,2022,2023 Jan (janneke) Nieuwenhuizen <jan
Please send Mes bug reports to bug-mes@gnu.org.
* Changes in 0.24.2 since 0.24.1
** Build
*** A number of compile warnings have been fixed.
*** The `simple.make' and `simple.sh' builds have been resurrected.
** MesCC
*** Some assembly defines were added for building TinyCC for x86_64.
*** `__assert_fail' has been updated to use the standard signature.
** Noteworthy bug fixes
*** A bootstrap build without M2-Planet is now supported again.
*** `gettimeofday' no longer segfaults in the M2-Planet build.
*** `stat64' and friends are now used on 32bit platforms.
This fixes https://debbugs.gnu.org/41264, and should also fix
https://debbugs.gnu.org/49985,
https://debbugs.gnu.org/53415,
https://debbugs.gnu.org/53416.
*** The Mes C Library now supports uppercase hex conversions.
* Changes in 0.24.1 since 0.24
** Build
*** Support M2-Planet bootstrap for ARM.
** MesCC
*** The Mes C Library now supports bootstrapping ARM.
** Noteworthy bug fixes
*** The definition of S_ISUID was fixed.
*** Unsigned modulo has been fixed for ARM.
*** A bug with abtol has been fixed.
*** Workarounds for building with gcc-12.2.0 have been added.
* Changes in 0.24 since 0.23
** Core
*** Mes and Mes C Library can now be built with M2-Planet.
*** Mes now supports the --bootstrap build on ARM.
** MesCC
*** MesCC now supports the integer suffixes:
Next to `U', also support `ULL', `UL', `L', and `LL'.
** Noteworthy bug fixes
*** MesCC now uses the unsigned type for sizeof.
*** MesCC now only uses signed division if numerator is signed.
*** The Mes C library now supports an argv bigger than 255.
*** Development build support with Guile-2 was resurrected.
*** The logand procedure now works correctly.
*** The 64bit build was resurrected.
* Changes in 0.23.1 since 0.23
** Build: Move to libera.chat.
** Core
*** Mes and Mes C Library can now support ARM bootstrap.
** MesCC
*** MesCC now supports ARM bootstrap.
** Noteworthy bug fixes
*** Stack frame 0 does not perform out of bounds access.
*** MesCC's -m64 works again.
*** Guile-2 support has been resurrected.
*** logand has been fixed.
*** Mes C Library now supports more than 255 command line parameters.
* Changes in 0.23 since 0.22
** Core
*** Mes and Mes C Library can now be built with GCC 10.x.
** MesCC
*** The Mes C Library now supports an armhf-linux bootstrap.
*** MesCC now supports ARM.
*** mini.c library was split into _exit.c, and _write.c.
*** When building with GCC, -lgcc is now used.
*** MesCC now has it's own support library libmescc.a (-lmescc).
*** MesCC now requires mescc-tools-0.7.0 or later for ARM.
*** MesCC can be now built with nyacc-1.00.2:
note that nyacc-1.03.0 is not (backwards) compatible.
*** MesCC can be built with Guile 3.0.x:
See https://bugs.gnu.org/43831; use guild compile -O1 with Guile 3.0.x.
*** MesCC now raises SIGABRT on abort, if supported.
** Noteworthy bug fixes
*** unreadchar on EOF is now a no-op.
*** malloc now aligns the blocks it gives out to max_align_t.
* Changes in 0.22 since 0.21
** Core
*** Mes now builds reproducibly with MesCC, cross distribution

10
PORTING
View File

@ -20,14 +20,16 @@ to your config.scm and run guix system reconfigure.
** Setup environment
For example (note: ARM is no longer a 'port', see HACKING)
#+BEGIN_SRC bash
guix shell --system=armhf-linux --pure bash coreutils diffutils findutils gawk gcc-toolchain grep git guile gzip help2man make mescc-tools nyacc openssh-sans-x pkg-config sed tar texinfo
guix environment -s armhf-linux --pure --ad-hoc bash coreutils diffutils gawk gcc-toolchain grep guile help2man make nyacc pkg-config sed texinfo
PATH=~/src/mescc-tools-arm/bin:$PATH
#+END_SRC
(No git, graphviz on ARM yet).
** Try it
#+BEGIN_SRC bash
CC=gnu-triplet-gcc ./configure --with-courage --with-system-libc
./configure --with-courage --with-system-libc
./simple.sh
#+END_SRC
@ -75,7 +77,7 @@ a Reduced Binary seed, thus significantly reducing the Trusted Computing
Base (TCB), strategic decisions about the build process can start.
* Legalese
Copyright © 2019,2022 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][janneke@gnu.org]]>
Copyright © 2019 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][janneke@gnu.org]]>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright

32
README
View File

@ -6,32 +6,29 @@
[[https://www.gnu.org/software/mes][GNU Mes]] is a Scheme interpreter and C compiler for bootstrapping the GNU
System. Since version 0.22 it has again helped to halve the size of
opaque, uninspectable binary seeds that are currently being used in the
[[https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25][Further Reduced Binary Seed bootstrap]] of [[https://www.gnu.org/software/guix][GNU Guix]]. The final goal is to
help create a full-source bootstrap as part of the [[https://bootstrappable.org][bootstrappable builds]]
[[https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/][Reduced Binary Seed bootstrap]] of [[https://www.gnu.org/software/guix][GNU Guix]]. The final goal is to help
create a full source bootstrap as part of the [[http://bootstrappable.org][bootstrappable builds]]
effort for UNIX-like operating systems.
The Scheme interpreter is written in ~5,000 LOC of simple C, and the C
compiler written in Scheme and these are mutual self-hosting. Mes can
now be bootstrapped from [[https://github.com/oriansj/m2-planet][M2-Planet]] and [[https://savannah.nongnu.org/projects/mescc-tools][Mescc-Tools]].
compiler written in Scheme and these are mutual self-hosting. This
mes.c is [[https://github.com/oriansj/mes-m2][being simplified]] to be transpiled by [[https://github.com/oriansj/m2-planet][M2-Planet]].
Mes has a Garbage Collector, a library of loadable Scheme modules--
notably Dominique Boucher's [[https://github.com/schemeway/lalr-scm][LALR]], Pre-R6RS [[https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html][portable syntax-case]] with
R7RS ellipsis, Matt Wette's [[https://www.nongnu.org/nyacc][Nyacc]] --and test suite, just enough to
support a REPL and a C99 compiler: mescc.
Mes + MesCC + Mes C Library can build a [[https://gitlab.com/janneke/tinycc][bootstrappable TinyCC]] that is
Mes+MesCC can compile an only [[http://gitlab.com/janneke/tinycc][lightly patched TinyCC]] that is
self-hosting. Using this tcc and the Mes C library we now have a
Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for
i686-linux, x86_64-linux, armhf-linux and aarch64-linux.
i686-linux and x86_64-linux.
Mes is inspired by The Maxwell Equations of Software: [[https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf][LISP-1.5]] -- John
Mes is inspired by The Maxwell Equations of Software: [[http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf][LISP-1.5]] -- John
McCarthy page 13, GNU Guix's source/binary packaging transparency and
Jeremiah Orians's [[https://github.com/oriansj/stage0][stage0]] ~500 byte self-hosting hex assembler.
We are very grateful to NLNet for sponsoring the [[https://nlnet.nl/project/GNUMes][Reduced Binary Seed
bootstrap]], the [[https://nlnet.nl/project/GNUMes-arm][ARM port]], and the [[https://nlnet.nl/project/GNUMes-ARM_RISC-V][Full Source Bootstrap.]]
GNU Mes is free software, it is distributed under the terms of the GNU
General Public Licence version 3 or later. See the file [[file:COPYING][COPYING]].
@ -67,23 +64,20 @@ General Public Licence version 3 or later. See the file [[file:COPYING][COPYING
* Links
[0] https://www.gnu.org/software/mes
[1] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25
[1] https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
[2] https://www.gnu.org/software/guix
[3] https://bootstrappable.org
[4] https://github.com/oriansj/m2-planet
[5] https://savannah.nongnu.org/projects/mescc-tools
[4] https://github.com/oriansj/mes-m2
[5] https://github.com/oriansj/m2-planet
[6] https://github.com/schemeway/lalr-scm
[7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
[8] https://www.nongnu.org/nyacc
[9] https://gitlab.com/janneke/tinycc
[10] [[https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf]]
[11] https://savannah.nongnu.org/projects/stage0
[12] https://nlnet.nl/project/GNUMes
[13] https://nlnet.nl/project/GNUMes-arm
[14] https://nlnet.nl/project/GNUMes-ARM_RISC-V
[10] [[http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf]]
[11] https://github.com/oriansj/stage0
* Legalese
Copyright © 2016,2017,2018,2019,2020,2021,2022 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][janneke@gnu.org]]>
Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][janneke@gnu.org]]>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright

53
ROADMAP
View File

@ -1,7 +1,7 @@
-*- org -*-
#+TITLE: Tentative GNU Mes Road Map
Copyright © 2016,2017,2018,2019,2020,2022,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Copyright © 2016,2017,2018,2019 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
@ -19,29 +19,27 @@ Since its inception, the project has gone a long way towards that goal. Below
is a list of items we want for version "1.0" of GNU Mes.
You're welcome to discuss this road map on bug-mes@gnu.org or #bootstrappable
on Libera Chat!
on Freenode!
* TODO
** release 0.x, unsorted
- Full Guile module support.
- Run Gash and Gash-Utils on Mes.
- Remove Guile as a dependency for the Guix Full Source Bootstrap.
- Integrate Full Source bootstrap for ARM on GNU Guix;
see branch wip-aarch64-bootstrap.
- Integrate Reduced Binary Seed bootstrap for ARM on GNU Guix;
see branch wip-arm-bootstrap.
- Introduce the Reduced Binary Seed bootstrap to NixOS (Debian,
Arch, Gentoo, ...?).
- Full Guile-compatible module support; see branch wip-module.
- RISC-V support: Mes C Library and MesCC.
- AArch64 support: Mes C Library and MesCC.
- Simplify eval-apply and other core functionality
+ See https://github.com/oriansj/mes-m2 fork/rewrite of mes.
- Merge the Scheme-only bootstrap which uses Gash and Gash Core
Utilities to remove from bootstrap-binary seed : Awk, Bash, Core
Utilities, Grep, Gzip, Sed, Tar.
- Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian,
Arch, Gentoo, ...?)
- Full Source Bootstrap: compile mes.c using M2-Planet. Jeremiah
branched-out from mes; see https://github.com/oriansj/mes-m2, also see the
branches: wip-full-source-bootstrap, wip-m2-merge and wip-m2.
- Full Guile-compatible module support: define-module, define-public,
export, use-modules, ...
- ARMv7/AArch64 support: Mes C Library and MesCC.
- Simplify eval-apply and other core functionality (see mes-m2).
- Support native x86_64 bootstrap.
- Simplify MesCC ``MesCC should optimize ease of convincing us of its
correctness''.
- Switch to Autotools for development build (bootstrap builds use
kaem.run and bootstrap.sh); see branch wip-auto.
correctness''
- tcc: remove or upstream patches from tcc-boot.
- tcc: build 0.9.27 directly instead of via 0.9.26, see tinycc
** after release 1.0
- Build Guix packages using Mes: run or simplify (guix build utils),
(guix build gnu-build-system).
@ -50,12 +48,9 @@ on Libera Chat!
- Bootstrap support for the Hurd. Most needed now are fork and exec.
- Replace the initial gcc-2.95.3 with gcc-4.6.4.
- FreeBSD, *BSD?
- Tiny CC:
+ remove or upstream patches from tcc-boot,
+ build 0.9.27 directly instead of via 0.9.26; see tinycc branch
wip-bootstrappable@0.9.27
- Skip Tiny CC: Build gcc using MesCC.
- Better garbage collector.
wip-bootstrappable@0.9.27 branch
- Skip tcc: Build gcc using MesCC.
- better garbage collector.
- mes/mescc: proper docstrings, api reference documentation.
- mes/mescc: bootstrap a minimal Guile?
+ libguile/{eval,init,list,strings,values,..}.
@ -66,14 +61,6 @@ on Libera Chat!
https://srfi.schemers.org/srfi-72/srfi-72.html, or
+ ... drop it?
* DONE
- 0.24: Full Source Bootstrap:
+ integrate into GNU Guix; see branch wip-full-source-bootstrap.
- 0.23 Full Source Bootstrap:
+ compile mes.c using M2-Planet; see branch wip-m2,
- GNU Mes now supports building Tiny CC on ARM.
- Merge the Scheme-only bootstrap which uses Gash and Gash Core
Utilities to remove from bootstrap-binary seed : Awk, Bash, Core
Utilities, Grep, Gzip, Sed, Tar.
- 0.22 GNU Mes now builds reproducibly cross-platform, runs on the
Hurd and has better support for other distributions and kernels.
- 0.21 GNU Mes now supports a Scheme-only bootstrap and is packaged in

View File

@ -1,5 +1,5 @@
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2018,2019,2021,2022,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -85,26 +85,17 @@ PHONY_TARGETS:=\
.PHONY: $(PHONY_TARGETS)
X86_ARCH_HEADERS = $(wildcard $(scrdest)include/linux/x86/*.h)
ARCH_HEADERS = $(X86_ARCH_HEADERS:$(srcdest)include/linux/x86/%=include/arch/%)
default: all
all: doc
doc: build
build: | $(ARCH_HEADERS)
build:
$(SHELL) build.sh
src/${program_prefix}mes: build
include/arch/%.h: $(srcdest)include/$(mes_kernel)/$(mes_cpu)/%.h | arch-dir
cp -f $< $@
arch-dir:
mkdir -p include/arch
clean:
rm -f *.o *.s bin/mes bin/mes-gcc bin/mes-mescc
rm -f mes.{aux,cp,cps,fn,info,log,tmp,toc,vr,vrs}
@ -113,7 +104,6 @@ clean:
rm -f build-aux/mes-snarf.go
rm -f module/mescc.go
rm -f module/mes/*.go module/mescc/*.go
rm -f module/mescc/armv4/*.go
rm -f module/mescc/i386/*.go
rm -f module/mescc/x86_64/*.go
rm -rf gcc-lib/*.o gcc-lib/*.s gcc-lib/*.a gcc-lib/*-mes
@ -144,7 +134,7 @@ maintainer-clean: distclean
rm -f doc/version.texi
TAGS:
etags ${srcdest}lib/*.c ${srcdest}lib/*/*.c ${srcdest}src/*.c ${srcdest}include/*.h ${srcdest}include/*/*.h ${srcdest}include/sys/*.h
etags ${srcdest}lib/*.c ${srcdest}lib/*/*.c ${srcdest}src/*.c ${srcdest}include/*.h ${srcdest}include/sys/*.h
all-go:
${srcdest}build-aux/build-guile.sh
@ -270,16 +260,6 @@ WEB_IMAGES:=\
web: info $(WEB_IMAGES)
GENDOCS_TEMPLATE_DIR=doc build-aux/gendocs.sh -I doc -s ${srcdest}doc/mes.texi -o doc/web/manual --email bug-mes@gnu.org mes "GNU Mes manual"
SITE = /srv/mes.org
publish: web
rsync -P -v . $(SITE)/
rsync -P -v . $(SITE)/manual/
rsync -P -rvz doc/web/manual/ $(SITE)/manual/
LOCAL_SITE = $(HOME)/src/web/mes
publish-local: web
$(MAKE) publish SITE=$(LOCAL_SITE)
### dist
COMMIT=$(shell test -e ${srcdest}.git && (cd ${srcdir} && git describe --dirty 2>/dev/null) || cat ${srcdest}.tarball-version)
TARBALL_VERSION=$(COMMIT:v%=%)
@ -301,10 +281,7 @@ GIT_LS_FILES:=find
MTIME:=0
endif
check-signature:
git show HEAD --show-signature |grep 'gpg: Good signature'
dist: check-signature $(TARBALL)
dist: $(TARBALL)
sign-dist: $(TARBALL)
gpg -a --output $(TARBALL).sig --detach-sig $(TARBALL)
@ -332,10 +309,8 @@ $(TARBALL): .tarball-version | generate-ChangeLog
ifdef GUIX
update-hash: $(TARBALL)
$(GUIX) download file://$(PWD)/$<
sed -i \
-e 's,version #!mes!# "[^"]*"),version #!mes!# "$(VERSION)"),' \
-e 's,(base32 #!mes!# "[^"]*"),(base32 #!mes!# "$(shell $(GUIX) hash $<)"),' \
guix/git/mes.scm
sed -i -e 's,(base32 #!mes!# "[^"]*"),(base32 #!mes!# "$(shell $(GUIX) hash $<)"),' guix/git/mes.scm
else
$(warning update-hash: no guix)
endif
@ -345,72 +320,35 @@ tag:
# Release process
# 0. Prepare git, see history:
# - doc: Release update (NEWS, etc.)
# - Generate announcement
# + touch mes-0.23.tar.gz
# + make gen-announce VERSION=0.23
# + Update and commit doc/announce/ANNOUNCE-0.23,
# using xxx (32,40) for checksums
# - create "Release 0.23" commit (see Release 0.22).
# + configure
# + configure.sh
# 1. Tag for release
# make tag VERSION=0.23
# 2. Create signed tarball
# ./configure
# make sign-dist
# 3. Update Guix package description
# make release
# 4. Finish announcement
# - make sum-announce
# - doc: Release update
# + NEWS, etc.
# + doc/announce/ANNOUNCE-0.22, using xxx for checksums
# - Release 0.22
# 1. make tag VERSION=0.22
# 2. make sign-dist
# 3. make release
# - Update doc/announce/ANNOUNCE-0.22
# - doc: Post-release update.
# - build-aux/GNUMakefile.in: gen-announce: update previous-version
# 5. Verify
# - Update package in Guix master.
# - If applicable, verify bootstrap.
# 6. Upload to ftp.gnu.org
# 7. Update web
# - make publish-local
# - Update ~/src/web/mes/index.html
# - Upload: cvs ci
# 8. Create blog post
# cp doc/announce/ANNOUNCE-0.23 ~/src/web/joyofsource.com/posts/announce-0.23.md
# fix urls and all
# 9. Send mail
# To: info-gnu@gnu.org
# Cc: bug-mes@gnu.org
# Cc: guix-devel@gnu.org
# Cc: bootstrappable@freelists.org
# Cc: rb-general@lists.reproducible-builds.org
# 4. verify bootstrap
guix-build:
./pre-inst-env $(GUIX) build mes@$(VERSION) --with-source=$(TARBALL)
release: check-signature update-hash
git commit -m 'guix: mes: Update to $(VERSION).' \
-m '* guix/git/mes.scm (mes)[source]: Update to $(VERSION).' \
guix/git/mes.scm
release: update-hash | gen-announce guix-build
GPG_KEY_ID:=1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
GEN_ANNOUNCE=$(GNULIB)/build-aux/announce-gen
GNULIB=../../gnulib
gen-announce:
$(GEN_ANNOUNCE) \
--release-type=beta \
--package-name=mes \
--previous-version='0.24.1' \
--current-version=$(VERSION) \
--gpg-key-id=$(GPG_KEY_ID) \
--url-directory=https://ftp.gnu.org/gnu/mes \
--news=NEWS \
> doc/announce/ANNOUNCE-$(VERSION)
sum-announce:
sed -i \
-e "s, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $(PACKAGE)-$(VERSION).tar.gz, $(shell sha256sum $(PACKAGE)-$(VERSION).tar.gz)," \
-e "s, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $(PACKAGE)-$(VERSION).tar.gz, $(shell sha1sum $(PACKAGE)-$(VERSION).tar.gz)," \
-e "s, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $(PACKAGE)-$(VERSION).tar.gz, $(shell md5sum $(PACKAGE)-$(VERSION).tar.gz)," \
doc/announce/ANNOUNCE-$(VERSION)
$(GEN_ANNOUNCE)\
--release-type=beta\
--package-name=mes\
--previous-version='0.21 '\
--current-version=$(VERSION)\
--gpg-key-id=$(GPG_KEY_ID)\
--url-directory=https://ftp.gnu.org/gnu/mes\
--news=NEWS\
> doc/announce/ANNOUNCE-$(VERSION)-
installdirs: mkinstalldirs
mkdir -p\

View File

@ -1,7 +1,7 @@
#! @SHELL@
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2019,2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -18,10 +18,6 @@
# You should have received a copy of the GNU General Public License
# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
if test "$V" = 1 -o "$V" = 2; then
set -x
fi
LANG=
MES_ARENA=${MES_ARENA-20000000}
export MES_ARENA
@ -35,14 +31,8 @@ MES_PREFIX=${MES_PREFIX-$PWD}
. ${srcdest}build-aux/configure-lib.sh
. ${srcdest}build-aux/cflags.sh
if test -n "@M2_PLANET@"; then
echo " KAEM kaem.run"
kaem --strict --verbose
fi
CPPFLAGS="-D HAVE_CONFIG_H=1 -I include"
libdir=$PWD/lib
export libdir
AM_CFLAGS=""
mkdir -p mescc-lib
cp config.sh mescc-lib/config.sh
cd mescc-lib
@ -50,8 +40,7 @@ srcdest=../${srcdest}
ln -sf ${srcdest}mes .
ln -sf ${srcdest}module .
ln -sf ${srcdest}src .
AM_CPPFLAGS="-D HAVE_CONFIG_H=1 -I ${srcdest}include -I ../include -I include"
AM_CFLAGS="-L ${srcdest}lib"
AM_CPPFLAGS="-D HAVE_CONFIG_H=1 -I ${srcdest}include -I ${srcdest}include/$mes_kernel/$mes_cpu"
mkdir -p $mes_cpu-mes
$CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/crt1.c
@ -70,18 +59,6 @@ done
echo " AR $mes_cpu-mes/libc-mini.a"
$AR crD $mes_cpu-mes/libc-mini.a $objects
objects=
for c in $libmescc_SOURCES; do
o=$(basename $c .c).o
if test ! -e $o -o ${srcdest}$c -nt $o; then
echo " CC $c"
$CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS ${srcdest}$c
fi
objects="$objects $o"
done
echo " AR $mes_cpu-mes/libmescc.a"
$AR crD $mes_cpu-mes/libmescc.a $objects
objects=
for c in $libc_SOURCES; do
o=$(basename $c .c).o
@ -108,8 +85,7 @@ $AR crD $mes_cpu-mes/libc+tcc.a $objects
cd ..
srcdest=
AM_CPPFLAGS="-D HAVE_CONFIG_H=1 -I ${srcdest}include -I ../include -I include"
AM_CFLAGS="-L ${srcdest}lib"
CPPFLAGS="-D HAVE_CONFIG_H=1 -I ${srcdest}include -I ${srcdest}include/$mes_kernel/$mes_cpu"
objects=
for c in $mes_SOURCES; do
@ -122,7 +98,7 @@ for c in $mes_SOURCES; do
done
echo " CCLD bin/mes-mescc"
mkdir -p bin
$CC $AM_CFLAGS -nostdlib -o bin/mes-mescc -L mescc-lib mescc-lib/crt1.o $objects -lc -lmescc
$CC -nostdlib -o bin/mes-mescc -L mescc-lib mescc-lib/crt1.o $objects -lc
cp bin/mes-mescc bin/mes
(

View File

@ -34,8 +34,6 @@ module/mescc/M1.scm
module/mescc/as.scm
module/mescc/bytevectors.scm
module/mescc/compile.scm
module/mescc/armv4/as.scm
module/mescc/armv4/info.scm
module/mescc/i386/as.scm
module/mescc/i386/info.scm
module/mescc/x86_64/as.scm
@ -62,6 +60,6 @@ for i in $SCM_FILES $SCRIPTS; do
go=${i%%.scm}.go
f=${srcdest}$i
if test $f -nt $go; then
trace "GUILEC $f" $GUILD compile $GUILD_OPTIMIZE -L ${srcdest}module -L ${srcdest}build-aux -L ${srcdest}scripts -o $go $f
trace "GUILEC $f" $GUILD compile -L ${srcdest}module -L ${srcdest}build-aux -L ${srcdest}scripts -o $go $f
fi
done

View File

@ -44,12 +44,6 @@ if test -e libmes.s; then
cp libmes.s $mes_cpu-mes
fi
archive libmescc.a $libmescc_SOURCES
cp libmescc.a $mes_cpu-mes
if test -e libmescc.s; then
cp libmescc.s $mes_cpu-mes
fi
if test $mes_libc = mes; then
archive libc.a $libc_SOURCES
cp libc.a $mes_cpu-mes
@ -64,6 +58,16 @@ if test -e libc+tcc.s; then
cp libc+tcc.s $mes_cpu-mes
fi
if $courageous; then
exit 0
fi
archive libc+gnu.a $libc_gnu_SOURCES
cp libc+gnu.a $mes_cpu-mes
if test -e libc+gnu.s; then
cp libc+gnu.s $mes_cpu-mes
fi
archive libtcc1.a $libtcc1_SOURCES
cp libtcc1.a $mes_cpu-mes
if test -e libtcc1.s; then
@ -75,13 +79,3 @@ cp libgetopt.a $mes_cpu-mes
if test -e libgetopt.s; then
cp libgetopt.s $mes_cpu-mes
fi
if $courageous; then
exit 0
fi
archive libc+gnu.a $libc_gnu_SOURCES
cp libc+gnu.a $mes_cpu-mes
if test -e libc+gnu.s; then
cp libc+gnu.s $mes_cpu-mes
fi

View File

@ -1,7 +1,7 @@
#! /bin/sh
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2019,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -30,25 +30,28 @@ fi
. ./config.sh
. ${srcdest}build-aux/trace.sh
. ${srcdest}build-aux/cc.sh
. ${srcdest}build-aux/configure-lib.sh
trap 'test -f .log && cat .log' EXIT
for c in $mes_SOURCES; do
mes_sources="
src/gc.c
src/hash.c
src/lib.c
src/math.c
src/mes.c
src/module.c
src/posix.c
src/reader.c
src/string.c
src/struct.c
src/vector.c
"
for c in $mes_sources; do
compile $c
done
if test $mes_libc = system; then
LIBS=-lmes
fi
if [ "$compiler" = "gcc" ]
then
# Make it possible to resolve raise(), required by libgcc.a, provided in
# libc.a. The final command line has to have "-lc -lgcc -lc".
# See <https://www.openwall.com/lists/musl/2018/05/09/1>.
LIBS="${LIBS} -lgcc -lc"
fi
if [ "$compiler" = "mescc" ]; then
LIBS="${LIBS} -lc -lmescc"
fi
link bin/mes-$compiler
cp bin/mes-$compiler bin/mes

View File

@ -1,7 +1,7 @@
#! /bin/sh
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2017,2018,2019,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -29,7 +29,6 @@ fi
. ./config.sh
. ${srcdest}build-aux/trace.sh
. ${srcdest}build-aux/cflags.sh
if $courageous; then
set +e
@ -43,6 +42,25 @@ else
}
fi
case "$mes_cpu" in
arm)
stage0_arch=40
stage0_cpu=armv7l
;;
x86_64)
stage0_arch=2
stage0_cpu=amd64
;;
x86)
stage0_arch=1
stage0_cpu=x86
;;
*)
stage0_arch=1
stage0_cpu=$mes_cpu
;;
esac
trace "CCLD ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/exit-42.S" $CC\
-nostdlib\
-g\
@ -61,11 +79,12 @@ else
fi
trace "HEX2 ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0exit-42.hex2" $HEX2\
--little-endian\
--LittleEndian\
$stage0_cpu_flag\
--base-address 0x1000000\
--BaseAddress 0x1000000\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0header.hex2\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0exit-42.hex2\
--exec_enable\
-o 0exit-42
trace "TEST 0exit-42"
@ -74,12 +93,13 @@ trace "TEST 0exit-42"
[ $r = 42 ]
trace "HEX2 ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-body-exit-42.hex2" $HEX2\
--little-endian\
--LittleEndian\
$stage0_cpu_flag\
--base-address 0x1000000\
--BaseAddress 0x1000000\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-header.hex2\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-body-exit-42.hex2\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-footer-single-main.hex2\
--exec_enable\
-o body-exit-42
trace "TEST body-exit-42"
@ -100,11 +120,12 @@ trace "TEST hello-mes"
[ $r = 0 ]
trace "HEX2 ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0hello-mes.hex2" $HEX2\
--little-endian\
--LittleEndian\
$stage0_cpu_flag\
--base-address 0x1000000\
--BaseAddress 0x1000000\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0header.hex2\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0hello-mes.hex2\
--exec_enable\
-o 0hello-mes
trace "TEST 0hello-mes"
@ -113,12 +134,13 @@ trace "TEST 0hello-mes"
[ $r = 0 ]
trace "HEX2 ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-body-hello-mes.hex2" $HEX2\
--little-endian\
--LittleEndian\
$stage0_cpu_flag\
--base-address 0x1000000\
--BaseAddress 0x1000000\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-header.hex2\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-body-hello-mes.hex2\
-f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-footer-single-main.hex2\
--exec_enable\
-o body-hello-mes
trace "TEST body-hello-mes"

View File

@ -49,22 +49,5 @@ for c in $libc_gnu_SOURCES; do
done
cp libc+gnu.c $mes_cpu-mes
rm -f libtcc1.c
cat > libtcc1.c <<EOF
// Generated from Mes -- do not edit
// compiler: $compiler
// cpu: $mes_cpu
// bits: $mes_bits
// libc: $mes_libc
// kernel: $mes_kernel
// system: $mes_system
EOF
for c in $libtcc1_SOURCES; do
echo "// $c" >> libtcc1.c
cat ${srcdest}$c >> libtcc1.c
echo >> libtcc1.c
done
cp libtcc1.c $mes_cpu-mes
cp ${srcdest}lib/libtcc1.c $mes_cpu-mes
cp ${srcdest}lib/posix/getopt.c $mes_cpu-mes/libgetopt.c

View File

@ -1,7 +1,7 @@
#! /bin/sh
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2018,2019,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -66,8 +66,9 @@ fi
AM_CPPFLAGS="
-D HAVE_CONFIG_H=1
-I ${srcdest}lib
-I include
-I ${srcdest}include
-I ../include
-I ${srcdest}include/$mes_kernel/$mes_cpu
"
if test $mes_kernel = gnu; then
AM_CPPFLAGS="$AM_CPPFLAGS
@ -92,32 +93,15 @@ fi
AM_CPPFLAGS="
-D HAVE_CONFIG_H=1
-I ${srcdest}lib
-I ${srcdest}include
-I ../include
-I include
-I ${srcdest}include
-I ${srcdest}include/$mes_kernel/$mes_cpu
"
if test "$compiler" != bootstrap; then
if test $compiler = gcc; then
${SHELL} ${srcdest}build-aux/build-mes.sh
fi
)
if test -n "$M2_PLANET" && (test "$mes_cpu" == "x86" \
|| test "$mes_cpu" == "arm"); then
(
. ${srcdest}build-aux/trace.sh
if [ -z "$V" -o "$V" = 0 ]; then
__verbose=
else
__verbose=--verbose
fi
trace "KAEM scaffold/main.kaem" kaem --strict $__verbose -f scaffold/main.kaem
trace "KAEM scaffold/hello.kaem" kaem --strict $__verbose -f scaffold/hello.kaem
trace "KAEM scaffold/argv.kaem" kaem --strict $__verbose -f scaffold/argv.kaem
trace "KAEM scaffold/read.kaem" kaem --strict $__verbose -f scaffold/read.kaem
trace "KAEM kaem.run" kaem --strict $__verbose
)
fi
(
mkdir -p mescc-lib
cp config.sh mescc-lib
@ -136,9 +120,9 @@ fi
AM_CPPFLAGS="
-D HAVE_CONFIG_H=1
-I ${srcdest}lib
-I ${srcdest}include
-I ../include
-I include
-I ${srcdest}include
-I ${srcdest}include/$mes_kernel/$mes_cpu
"
compiler=mescc
AR=${MESAR-"${srcdest}pre-inst-env mesar"}
@ -150,7 +134,6 @@ fi
${SHELL} ${srcdest}build-aux/build-lib.sh
${SHELL} ${srcdest}build-aux/build-source-lib.sh
if $bootstrap; then
rm -f globals.* # FIXME: avoid name clash with globals from lib
${SHELL} ${srcdest}build-aux/build-mes.sh
cp -f bin/mes-mescc ../bin
cp -f bin/mes ../bin

View File

@ -1,5 +1,5 @@
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2018,2019,2020,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -16,25 +16,6 @@
# You should have received a copy of the GNU General Public License
# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
case "$mes_cpu" in
arm)
stage0_arch=40
stage0_cpu=armv7l
;;
x86_64)
stage0_arch=2
stage0_cpu=amd64
;;
x86)
stage0_arch=1
stage0_cpu=x86
;;
*)
stage0_arch=1
stage0_cpu=$mes_cpu
;;
esac
AM_CPPFLAGS="
-D HAVE_CONFIG_H=1
-I ${srcdest}include
@ -48,11 +29,6 @@ if test $mes_kernel = gnu; then
fi
AM_CFLAGS=
if test "$V" = 2; then
AM_CFLAGS="$AM_CFLAGS -v"
elif test "$V" = 3; then
AM_CFLAGS="$AM_CFLAGS -v -v"
fi
if test $mes_libc = mes; then
AM_CFLAGS="$AM_CFLAGS
@ -74,12 +50,6 @@ if test $mes_libc = mes; then
fi
LIBS=-lc
if test $mes_cpu = arm; then
AM_CFLAGS="$AM_CFLAGS
-marm
"
fi
export AM_CFLAGS CFLAGS
export AM_CPPFLAGS CPPFLAGS
export AM_LDFLAGS LDFLAGS

View File

@ -110,7 +110,6 @@ scaffold/boot/50-primitive-load.scm
scaffold/boot/53-closure-display.scm
scaffold/boot/60-let-syntax.scm
scaffold/boot/call-cc.scm
scaffold/boot/gc.scm
scaffold/boot/memory.scm
scaffold/boot/numbers.scm
"

View File

@ -27,7 +27,6 @@ tests/boot.test
tests/read.test
tests/srfi-0.test
tests/macro.test
tests/gc.test
tests/perform.test
tests/base.test
tests/quasiquote.test

View File

@ -1,7 +1,7 @@
#! /bin/sh
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2017,2018,2019,2020,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -22,7 +22,7 @@ set -e
. ./config.sh
set -u
mes_tests="
TESTS="
lib/tests/scaffold/t.c
lib/tests/scaffold/01-return-0.c
lib/tests/scaffold/02-return-1.c
@ -85,7 +85,6 @@ lib/tests/scaffold/33-and-or.c
lib/tests/scaffold/34-pre-post.c
lib/tests/scaffold/35-compare-char.c
lib/tests/scaffold/36-compare-arithmetic.c
lib/tests/scaffold/36-compare-arithmetic-negative.c
lib/tests/scaffold/37-compare-assign.c
lib/tests/scaffold/38-compare-call-2.c
lib/tests/scaffold/38-compare-call-3.c
@ -105,9 +104,7 @@ lib/tests/assert/50-assert.c
lib/tests/mes/50-itoa.c
lib/tests/posix/50-getenv.c
lib/tests/stdlib/50-malloc.c
lib/tests/string/50-memcmp.c
lib/tests/string/50-strcmp.c
lib/tests/string/50-strcmp-itoa.c
lib/tests/string/50-strcpy.c
lib/tests/string/50-strncmp.c
lib/tests/posix/50-open-read.c
@ -116,8 +113,6 @@ lib/tests/scaffold/54-argc.c
lib/tests/scaffold/54-argv.c
lib/tests/scaffold/55-char-array.c
lib/tests/scaffold/60-math.c
lib/tests/scaffold/60-math-itoa.c
lib/tests/scaffold/60-math-modulo.c
lib/tests/scaffold/61-array.c
lib/tests/scaffold/62-array.c
lib/tests/scaffold/63-struct.c
@ -132,9 +127,6 @@ lib/tests/scaffold/63-struct-cell.c
lib/tests/scaffold/64-make-cell.c
lib/tests/scaffold/65-read.c
lib/tests/scaffold/66-local-char-array.c
"
tcc_tests="
lib/tests/scaffold/70-stdarg.c
lib/tests/stdio/70-printf-hello.c
lib/tests/stdio/70-printf-simple.c
@ -194,9 +186,6 @@ lib/tests/scaffold/70-array-in-struct-init.c
lib/tests/scaffold/70-struct-short-enum-init.c
lib/tests/scaffold/70-struct-post.c
lib/tests/scaffold/70-extern.c
lib/tests/scaffold/70-ternary-arithmetic-argument.c
lib/tests/scaffold/70-function-modulo.c
lib/tests/scaffold/70-or-argument.c
lib/tests/setjmp/80-setjmp.c
lib/tests/stdio/80-sscanf.c
lib/tests/stdlib/80-qsort.c
@ -209,7 +198,8 @@ lib/tests/scaffold/84-struct-field-list.c
lib/tests/scaffold/85-sizeof.c
"
gnu_tests="
if test -z "$bootstrap"; then
TESTS="$TESTS
lib/tests/dirent/90-readdir.c
lib/tests/io/90-stat.c
lib/tests/mes/90-abtod.c
@ -235,18 +225,18 @@ lib/tests/scaffold/a0-math-divide-signed-negative.c
lib/tests/scaffold/a1-global-no-align.c
lib/tests/scaffold/a1-global-no-clobber.c
"
fi
xfail_tests="
XFAIL_TESTS="
lib/tests/stdio/90-sprintf.c
"
if test $compiler = mescc; then
xfail_tests="$xfail_tests
XFAIL_TESTS="$XFAIL_TESTS
lib/tests/scaffold/17-compare-unsigned-char-le.c
lib/tests/scaffold/17-compare-unsigned-short-le.c
lib/tests/scaffold/66-local-char-array.c
lib/tests/scaffold/72-typedef-struct-def-local.c
lib/tests/scaffold/70-ternary-arithmetic-argument.c
lib/tests/mes/90-abtod.c
lib/tests/mes/90-dtoab.c
lib/tests/scaffold/90-goto-var.c
@ -254,35 +244,35 @@ lib/tests/scaffold/91-goto-array.c
"
if test $mes_cpu = x86; then
xfail_tests="$xfail_tests
XFAIL_TESTS="$XFAIL_TESTS
"
fi
if test $mes_cpu = x86_64; then
xfail_tests="$xfail_tests
XFAIL_TESTS="$XFAIL_TESTS
lib/tests/scaffold/a0-call-trunc-int.c
"
fi
fi
if test $mes_cpu = x86_64; then
xfail_tests="$xfail_tests
XFAIL_TESTS="$XFAIL_TESTS
lib/tests/stdio/70-printf-stdarg.c
"
fi
if test $compiler = gcc; then
xfail_tests="$xfail_tests
XFAIL_TESTS="$XFAIL_TESTS
"
if test $mes_cpu = x86; then
xfail_tests="$xfail_tests
XFAIL_TESTS="$XFAIL_TESTS
lib/tests/mes/90-dtoab.c
"
fi
if test $mes_cpu = x86_64; then
xfail_tests="$xfail_tests
XFAIL_TESTS="$XFAIL_TESTS
lib/tests/stdio/70-printf-hello.c
lib/tests/stdio/70-printf-simple.c
lib/tests/stdio/70-printf.c
@ -294,16 +284,6 @@ lib/tests/string/90-snprintf.c
fi
fi
# Allow for make check TESTS=lib/tests/setjmp/80-setjmp.c
if test -n "$bootstrap"; then
TESTS="${TESTS-$mes_tests$tcc_tests}"
else
TESTS="${TESTS-$mes_tests$tcc_test$gnu_tests}"
fi
# Allow for make check xfail_tests=lib/tests/setjmp/80-setjmp.c
XFAIL_TESTS="${XFAIL_TESTS-$xfail_tests}"
recheck=${recheck-false}
test_ext=.c
log_compiler="${SHELL} ${srcdest}build-aux/test-c.sh"

View File

@ -35,9 +35,6 @@ if $courageous; then
fi
CFLAGS=
if test $mes_cpu = arm; then
CFLAGS="-marm"
fi
if test $mes_libc = mes; then
CFLAGS="${CFLAGS}
-static
@ -79,8 +76,6 @@ if test $compiler = gcc; then
cd gcc-lib
srcdest=$srcdir/../
srcdir=../$srcdir
MES_CHECKING_BUILTIN_LIBS="-l gcc"
export MES_CHECKING_BUILTIN_LIBS
../pre-inst-env ${SHELL} ${srcdest}build-aux/check-mescc.sh
)
fi
@ -99,8 +94,7 @@ fi
LDFLAGS="
-nostdlib
"
MES_CHECKING_BUILTIN_LIBS="-l mescc"
export MES_CHECKING_BUILTIN_LIBS
LIBS=-lc
AR="${srcdest}pre-inst-env mesar"
CC="${srcdest}pre-inst-env mescc"
../pre-inst-env ${SHELL} ${srcdest}build-aux/check-mescc.sh

View File

@ -26,7 +26,6 @@ DIFF:=@DIFF@
DOT:=@DOT@
GIT:=@GIT@
GUILD:=@GUILD@
GUILD_OPTIMIZE:=@GUILD_OPTIMIZE@
GUILE:=@GUILE@
GUILE_EFFECTIVE_VERSION:=@GUILE_EFFECTIVE_VERSION@
GUILE_LOAD_PATH:=@GUILE_LOAD_PATH@

View File

@ -27,7 +27,6 @@ DIFF=${DIFF-@DIFF@}
DOT="@DOT@"
GIT="@GIT@"
GUILD="@GUILD@"
GUILD_OPTIMIZE="${GUILD_OPTIMIZE-@GUILD_OPTIMIZE@}"
GUILE="@GUILE@"
GUILE_EFFECTIVE_VERSION="@GUILE_EFFECTIVE_VERSION@"
GUILE_LOAD_PATH="@GUILE_LOAD_PATH@"
@ -35,10 +34,8 @@ GUIX="@GUIX@"
HELP2MAN="@HELP2MAN@"
HEX2="@HEX2@"
LDFLAGS=${LDFLAGS-"@LDFLAGS@"}
KAEM="@KAEM@"
MAKEINFO="@MAKEINFO@"
M1="@M1@"
M2_PLANET="@M2_PLANET@"
MES_FOR_BUILD="@MES_FOR_BUILD@"
NYACC="@NYACC@"
PACKAGE="@PACKAGE@"
@ -101,11 +98,7 @@ export V
export colors
export compiler
export courageous
export mes_cpu
export srcdest
export srcdir
export stage0_cpu
export GUILE_AUTO_COMPILE
export MES_PREFIX
export TESTS
export XFAIL_TESTS

View File

@ -1,7 +1,7 @@
#! /bin/sh
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2019,2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -36,10 +36,8 @@ lib/mes/oputs.c
if test $mes_libc = mes; then
libc_mini_shared_SOURCES="$libc_mini_shared_SOURCES
lib/mes/globals.c
lib/$mes_kernel/$mes_cpu-mes-$compiler/mini.c
lib/stdlib/exit.c
lib/$mes_kernel/$mes_cpu-mes-$compiler/_exit.c
lib/$mes_kernel/$mes_cpu-mes-$compiler/_write.c
lib/stdlib/puts.c
lib/string/strlen.c
"
@ -78,22 +76,11 @@ lib/mes/mini-write.c
"
fi
libmescc_SOURCES="
lib/mes/globals.c
lib/linux/$mes_cpu-mes-$compiler/syscall-internal.c
"
if test $mes_cpu = arm; then
libmescc_SOURCES="$libmescc_SOURCES
lib/mes/div.c
"
fi
libmes_SOURCES="
$libc_mini_shared_SOURCES
lib/ctype/isnumber.c
lib/mes/abtol.c
lib/mes/cast.c
lib/mes/div.c
lib/mes/eputc.c
lib/mes/fdgetc.c
lib/mes/fdputc.c
@ -107,7 +94,6 @@ lib/mes/ntoab.c
lib/mes/oputc.c
lib/mes/ultoa.c
lib/mes/utoa.c
lib/stub/__raise.c
"
if test $mes_libc = mes; then
@ -115,7 +101,6 @@ if test $mes_libc = mes; then
lib/ctype/isdigit.c
lib/ctype/isspace.c
lib/ctype/isxdigit.c
lib/mes/assert_msg.c
lib/posix/write.c
lib/stdlib/atoi.c
"
@ -158,6 +143,7 @@ lib/stdio/putc.c
lib/stdio/putchar.c
lib/stdio/ungetc.c
lib/stdlib/free.c
lib/stdlib/malloc.c
lib/stdlib/realloc.c
lib/string/memchr.c
lib/string/memcmp.c
@ -167,7 +153,6 @@ lib/string/memset.c
lib/string/strcmp.c
lib/string/strcpy.c
lib/string/strncmp.c
lib/posix/raise.c
"
if test $mes_kernel = gnu; then
@ -189,7 +174,7 @@ lib/stub/execve.c
lib/stub/fork.c
lib/stub/_getcwd.c
lib/stub/gettimeofday.c
lib/stub/ioctl3.c
lib/stub/ioctl.c
lib/stub/time.c
lib/stub/unlink.c
lib/stub/waitpid.c
@ -209,16 +194,13 @@ lib/linux/fork.c
lib/linux/fsync.c
lib/linux/_getcwd.c
lib/linux/gettimeofday.c
lib/linux/ioctl3.c
lib/linux/ioctl.c
lib/linux/_open3.c
lib/linux/malloc.c
lib/linux/_read.c
lib/linux/time.c
lib/linux/unlink.c
lib/linux/waitpid.c
lib/linux/$mes_cpu-mes-$compiler/syscall.c
lib/linux/getpid.c
lib/linux/kill.c
"
fi
@ -226,15 +208,6 @@ libtcc1_SOURCES="
lib/libtcc1.c
"
if test $mes_cpu = arm; then
libtcc1_SOURCES="$libtcc1_SOURCES
lib/mes/div.c
lib/string/__memcpy.c
lib/string/__memmove.c
lib/string/__memset.c
"
fi
libc_tcc_SOURCES="
$libc_SOURCES
lib/ctype/islower.c
@ -327,6 +300,7 @@ lib/posix/alarm.c
lib/posix/execl.c
lib/posix/execlp.c
lib/posix/mktemp.c
lib/posix/raise.c
lib/posix/sbrk.c
lib/posix/sleep.c
lib/posix/unsetenv.c
@ -411,10 +385,11 @@ lib/linux/getdents.c
lib/linux/getegid.c
lib/linux/geteuid.c
lib/linux/getgid.c
lib/linux/getpid.c
lib/linux/getppid.c
lib/linux/getrusage.c
lib/linux/getuid.c
lib/linux/ioctl.c
lib/linux/kill.c
lib/linux/link.c
lib/linux/lstat.c
lib/linux/mkdir.c
@ -433,13 +408,7 @@ lib/linux/symlink.c
fi
mes_SOURCES="
src/builtins.c
src/cc.c
src/core.c
src/display.c
src/eval-apply.c
src/gc.c
src/globals.c
src/hash.c
src/lib.c
src/math.c
@ -447,9 +416,7 @@ src/mes.c
src/module.c
src/posix.c
src/reader.c
src/stack.c
src/string.c
src/struct.c
src/symbol.c
src/vector.c
"

View File

@ -50,7 +50,6 @@ export mes_cpu
export mes_bits
export mes_libc
export mes_kernel
export stage0_cpu
ifdef V
export V
@ -120,10 +119,6 @@ ifdef SHELL
export SHELL
endif
ifdef GUILD_OPTIMIZE
export GUILD_OPTIMIZE
endif
ifdef GUILE_LOAD_PATH
export GUILE_LOAD_PATH
endif
@ -163,11 +158,3 @@ endif
ifdef M1FLAGS
export M1FLAGS
endif
ifdef TESTS
export TESTS
endif
ifdef XFAIL_TESTS
export XFAIL_TESTS
endif

View File

@ -1,7 +1,7 @@
#! @SHELL@
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2017,2018,2019,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -47,9 +47,6 @@ cp $_v bin/mes ${DESTDIR}${bindir}/mes
if test -f bin/mes-gcc; then
cp $_v bin/mes-gcc ${DESTDIR}${bindir}/mes-gcc
fi
if test -f bin/mes-m2; then
cp $_v bin/mes-m2 ${DESTDIR}${bindir}/mes-m2
fi
if test -f bin/mes-mescc; then
cp $_v bin/mes-mescc ${DESTDIR}${bindir}/mes-mescc
fi
@ -99,7 +96,6 @@ mkdir -p $DESTDIR$includedir
mkdir -p $DESTDIR$libdir
mkdir -p $DESTDIR$pkgdatadir
tar -cf- -C ${srcdir}/include . | tar -${v}xf- -C $DESTDIR$includedir
tar -cf- -C include . | tar -${v}xf- -C $DESTDIR$includedir
tar -cf- -C ${srcdir}/lib $mes_cpu-mes | tar -${v}xf- -C $DESTDIR$libdir
tar -cf- -C ${srcdir}/lib $mes_kernel/$mes_cpu-mes | tar -${v}xf- -C $DESTDIR$libdir
if test -z "$srcdest"; then

View File

@ -4,7 +4,7 @@ exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes
!#
;;; GNU Mes --- Maxwell Equations of Software
;;; Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; mes-snarf.scm: This file is part of GNU Mes.
;;;
@ -85,7 +85,8 @@ exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes
(cut string-replace-string <> "_to_" "->")
(cut string-replace-suffix <> "_x" "!")
(cut string-replace-suffix <> "_x_" "!-")
(cut string-replace-suffix <> "_p" "?"))
(cut string-replace-suffix <> "_p" "?")
)
(function.name f))))
(if (not (string-suffix? "-" name)) name
(string-append "core:" (string-drop-right name 1))))))
@ -104,26 +105,19 @@ exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes
(format #f "// CONSTANT ~a ~a\n" s i)
(format #f "#define ~a ~a\n" s i)))
(define (symbol->header s i)
(let ((c (string-upcase s)))
(string-append
(format #f "\n// CONSTANT ~a ~a\n" c i)
(format #f "#define ~a ~a\n" c i)
(format #f "struct scm *~a; /* ~a */\n" s i))))
(define (function->header f i)
(let* ((arity (or (assoc-ref (function.annotation f) 'arity)
(if (string-null? (function.formals f)) 0
(length (string-split (function.formals f) #\,)))))
(n (if (eq? arity 'n) -1 arity)))
(format #f "struct scm *~a (~a);\n" (function.name f) (function.formals f))))
(format #f "SCM ~a (~a);\n" (function.name f) (function.formals f))))
(define (function->source f i)
(let* ((arity (or (assoc-ref (function.annotation f) 'arity)
(if (string-null? (function.formals f)) 0
(length (string-split (function.formals f) #\,)))))
(n (if (eq? arity 'n) -1 arity)))
(format #f " a = init_builtin (builtin_type, ~s, ~a, &~a, a);\n" (function-scm-name f) n (function.name f))))
(format #f " a = init_builtin (builtin_type, ~s, ~a, &~a, a);\n" (function.name f) n (function.name f))))
(define (disjoin . predicates)
(lambda (. arguments)
@ -131,11 +125,11 @@ exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes
(define (snarf-symbols string)
(let* ((lines (string-split string #\newline))
(symbols (filter (cut string-contains <> " = init_symbol (") lines)))
(symbols (filter (cut string-prefix? " init_symbol (" <>) lines)))
(define (line->symbol line)
((compose
string-trim-both
(lambda (s) (string-take s (string-index s #\=))))
(lambda (s) (string-take s (string-index s #\,)))
(cut string-drop <> (string-length " init_symbol (")))
line))
(map line->symbol symbols)))
@ -150,28 +144,20 @@ exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes
(receive (function rest)
(apply values (string-split-string line " "))
(and function
(or (equal? (string-trim previous) "struct scm*")
(equal? (string-trim previous) "struct scm *"))
(equal? (string-trim previous) "SCM")
(not (string-null? function))
(not (string-prefix? "#" function))
(not (string-prefix? "/" function))
rest
(receive (parameter-list annotation)
(apply values (string-split-string rest " /*:"))
(let* ((parameters (string-trim-both parameter-list))
(parameters (string-drop parameters 1))
(apply values (string-split-string rest " ///"))
(let* ((parameters (string-drop parameter-list 1))
(parameters (string-drop-right parameters 1))
(annotation (if (string? annotation) (string-trim-both annotation)
annotation))
(annotation (if (and (string? annotation)
(string-suffix? "*/" annotation))
(string-drop-right annotation 2)
annotation))
(formals (if (string-null? parameters) '()
(string-split parameters #\,)))
(formals (map string-trim formals)))
(and parameters
(let* ((non-SCM (filter (negate (cut string-prefix? "struct scm" <>)) formals)))
(let* ((non-SCM (filter (negate (cut string-prefix? "SCM" <>)) formals)))
(and (null? non-SCM)
(let ((annotation (and annotation (with-input-from-string annotation read))))
(make-function function parameters annotation))))))))))

View File

@ -1,72 +0,0 @@
#! /bin/sh
set -x
ptr_once='s,([^N])(MACRO|NAME|VALUE) \(([^()]*)\),\1\3->\L\2,'
ptr_once='s,([^N])(BYTES|CAR|CDR|CLOSURE|CONTINUATION|LENGTH|MACRO|NAME|PORT|REF|STRING|STRUCT|TYPE|VALUE|VARIABLE|VECTOR) \(([^()]*)\),\1\3->\L\2,'
n_once='s,N(TYPE|CAR|CDR|LENGTH|VALUE|VECTOR) \(([^()]*)\),\2->\L\1,'
ncbytes='s,NC(BYTES) \(([^()]*)\),news_\L\1 (\2),'
cbytes='s,([^N])C(BYTES) \(([^()]*)\),\1cell_\L\2 (\3),'
cstring='s,C(STRING) \(([^()]*)\),cell_bytes (STRING (\2)),'
struct='s,SCM,struct scm *,g'
struct_scm_p='s,struct scm\* ?,struct scm *,g'
sed -ri \
-e 's,POINTER_CELLS=0,POINTER_CELLS=1', \
-e 's,#define POINTER_CELLS 0,#define POINTER_CELLS 1', \
-e "$ncbytes" \
-e "$cbytes" \
-e "$cstring" \
\
-e "$ncbytes" \
-e "$cbytes" \
-e "$cstring" \
\
-e "$ptr_once" \
-e "$ptr_once" \
-e "$ptr_once" \
-e 's,->\<struct\>,->structure,g' \
-e "$struct" \
-e "$struct_scm_p" \
\
-e "$n_once" \
-e "$n_once" \
\
-e 's,CAR \(([^()]*)\),\1->cdr,' \
-e 's,CAAR \(([^()]*)\),\1->car->car,' \
-e 's,CADR \(([^()]*)\),\1->cdr->car,' \
-e 's,CDAR \(([^()]*)\),\1->car->cdr,' \
-e 's,CDDR \(([^()]*)\),\1->cdr->cdr,' \
-e 's,CADAR \(([^()]*)\),\1->car->cdr->car,' \
-e 's,CADDR \(([^()]*)\),\1->cdr->cdr->car,' \
-e 's,CDADR \(([^()]*)\),\1->cdr->car->cdr,' \
-e 's,CDDDR \(([^()]*)\),\1->cdr->cdr->cdr,' \
-e 's,CDDAR \(([^()]*)\),\1->car->cdr->cdr,' \
-e 's,CDADAR \(([^()]*)\),\1->cdr->car->cdr->car,' \
\
include/mes/builtins.h \
include/mes/mes.h \
include/mes/symbols.h \
include/mes/builtins.h \
include/m2/lib.h \
src/builtins.c \
src/cc.c \
src/core.c \
src/display.c \
src/eval-apply.c \
src/gc.c \
src/hash.c \
src/lib.c \
src/m2.c \
src/math.c \
src/mes.c \
src/module.c \
src/posix.c \
src/reader.c \
src/stack.c \
src/string.c \
src/struct.c \
src/symbol.c \
src/vector.c \
src/test/gc.c \
simple.make \

View File

@ -48,9 +48,6 @@ export bindir
GUIX_PACKAGE_PATH="$abs_top_srcdir/guix${GUIX_PACKAGE_PATH:+:}$GUIX_PACKAGE_PATH"
export GUIX_PACKAGE_PATH
MES_UNINSTALLED=1
export MES_UNINSTALLED
LANG=
LC_ALL=

View File

@ -1,7 +1,7 @@
#! /bin/sh
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -20,43 +20,17 @@
set -e
srcdest=${srcdest-./}
. ${srcdest}config.sh
. ${srcdest}build-aux/config.sh
. ${srcdest}build-aux/trace.sh
trace "SNARF$snarf builtins.c" ${srcdest}build-aux/mes-snarf.scm src/builtins.c
trace "SNARF$snarf core.c" ${srcdest}build-aux/mes-snarf.scm src/core.c
trace "SNARF$snarf display.c" ${srcdest}build-aux/mes-snarf.scm src/display.c
trace "SNARF$snarf eval-apply.c" ${srcdest}build-aux/mes-snarf.scm src/eval-apply.c
trace "SNARF$snarf gc.c" ${srcdest}build-aux/mes-snarf.scm src/gc.c
trace "SNARF$snarf hash.c" ${srcdest}build-aux/mes-snarf.scm src/hash.c
trace "SNARF$snarf lib.c" ${srcdest}build-aux/mes-snarf.scm src/lib.c
trace "SNARF$snarf math.c" ${srcdest}build-aux/mes-snarf.scm src/math.c
trace "SNARF$snarf mes.c" ${srcdest}build-aux/mes-snarf.scm src/mes.c
trace "SNARF$snarf module.c" ${srcdest}build-aux/mes-snarf.scm src/module.c
trace "SNARF$snarf posix.c" ${srcdest}build-aux/mes-snarf.scm src/posix.c
trace "SNARF$snarf reader.c" ${srcdest}build-aux/mes-snarf.scm src/reader.c
trace "SNARF$snarf stack.c" ${srcdest}build-aux/mes-snarf.scm src/stack.c
trace "SNARF$snarf strings.c" ${srcdest}build-aux/mes-snarf.scm src/string.c
trace "SNARF$snarf struct.c" ${srcdest}build-aux/mes-snarf.scm src/struct.c
trace "SNARF$snarf symbol.c" ${srcdest}build-aux/mes-snarf.scm src/symbol.c
trace "SNARF$snarf vector.c" ${srcdest}build-aux/mes-snarf.scm src/vector.c
for i in src/*.symbols.h; do
n=$(basename $i .symbols.h)
echo "/* src/$n.c */"
cat $i
mv $i $(basename $i .symbols.h).s
done > s
for i in src/*.h; do
n=$(basename $i .h)
echo "/* src/$n.c */"
cat $i
done > h
for i in src/*.i; do
n=$(basename $i .i)
echo " /* src/$n.c */"
cat $i
done > c
trace "SNARF$snarf gc.c" ${srcdest}build-aux/mes-snarf.scm src/gc.c
trace "SNARF$snarf hash.c" ${srcdest}build-aux/mes-snarf.scm src/hash.c
trace "SNARF$snarf lib.c" ${srcdest}build-aux/mes-snarf.scm src/lib.c
trace "SNARF$snarf math.c" ${srcdest}build-aux/mes-snarf.scm src/math.c
trace "SNARF$snarf mes.c" ${srcdest}build-aux/mes-snarf.scm src/mes.c
trace "SNARF$snarf module.c" ${srcdest}build-aux/mes-snarf.scm src/module.c
trace "SNARF$snarf posix.c" ${srcdest}build-aux/mes-snarf.scm src/posix.c
trace "SNARF$snarf reader.c" ${srcdest}build-aux/mes-snarf.scm src/reader.c
trace "SNARF$snarf strings.c" ${srcdest}build-aux/mes-snarf.scm src/string.c
trace "SNARF$snarf struct.c" ${srcdest}build-aux/mes-snarf.scm src/struct.c
trace "SNARF$snarf vector.c" ${srcdest}build-aux/mes-snarf.scm src/vector.c

View File

@ -40,35 +40,26 @@ rm -f "$o"
CC=${CC-gcc}
i=$(basename "$t" .c)
if [ -z "${MES_CHECKING_BUILTIN_LIBS}" ]
then
MES_CHECKING_BUILTIN_LIBS="`${CC} --print-libgcc-file-name`"
fi
if [ -z "${i/[012][0-9]-*/}" ]; then
LIBS="${MES_CHECKING_BUILTIN_LIBS} -l c-mini"
LIBS=
elif [ -z "${i/[34][0-9]-*/}" ]; then
LIBS="-l c-mini ${MES_CHECKING_BUILTIN_LIBS} -l c-mini"
LIBS='-l c-mini'
elif [ -z "${i/[78][0-9a-z]-*/}" ]; then
LIBS="-l c+tcc ${MES_CHECKING_BUILTIN_LIBS} -l c+tcc"
LIBS='-l c+tcc'
elif [ -z "${i/9[0-9a-z]-*/}" ]; then
LIBS="-l c+gnu ${MES_CHECKING_BUILTIN_LIBS} -l c+gnu"
LIBS='-l c+gnu'
else
# Make it possible to resolve raise(), required by libgcc.a, provided
# in libc.a. The final command line has to have "-lc -lgcc -lc".
# See <https://www.openwall.com/lists/musl/2018/05/09/1>.
LIBS="-l c ${MES_CHECKING_BUILTIN_LIBS} -l c"
LIBS='-l c'
fi
if test $mes_kernel = gnu\
&& test -z "$LIBS"; then
LIBS="-l c-mini -l mescc"
LIBS="-l c-mini"
fi
if test $mes_libc = system; then
crt1=
LIBS='-l mes -l mescc'
LIBS='-l mes'
else
crt1=crt1.o
fi
@ -77,7 +68,7 @@ $CC -g -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS -o "$o".o "$t"
$CC -g $AM_CFLAGS $CFLAGS $AM_LDFLAGS $LDFLAGS -L . -o "$o" $crt1 "$o".o $LIBS
set +e
timeout 20 "$o" -s --long file0 file1 > "$o".1 2> "$o".2
timeout 10 "$o" -s --long file0 file1 > "$o".1 2> "$o".2
r=$?
set -e
if [ -f "$b".exit ]; then

56
configure vendored
View File

@ -4,8 +4,7 @@ MES_ARENA=100000000 exec ${SCHEME-guile} -L . --no-auto-compile -e '(configure)'
!#
;;; GNU Mes --- Maxwell Equations of Software
;;; Copyright © 2016,2017,2018,2019,2020,2021,2022,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Vagrant Cascadian <vagrant@reproducible-builds.org>
;;; Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; configure: This file is part of GNU Mes.
;;;
@ -37,7 +36,7 @@ MES_ARENA=100000000 exec ${SCHEME-guile} -L . --no-auto-compile -e '(configure)'
(define PACKAGE "mes")
(define PACKAGE-NAME "GNU Mes")
(define PACKAGE-BUGREPORT "bug-mes@gnu.org")
(define VERSION "0.24.2")
(define VERSION "0.22")
(cond-expand
(guile)
@ -322,14 +321,14 @@ MES_ARENA=100000000 exec ${SCHEME-guile} -L . --no-auto-compile -e '(configure)'
(enable-silent-rules)
(with-system-libc)
(enable-fast-install) ; Ignored for Guix
(enable-fast-install) ; Ignored for Guix
(mandir (value #t)) ; Ignored for Debian
(localstatedir (value #t)) ; Ignored for Debian
(libexecdir (value #t)) ; Ignored for Debian
(runstatedir (value #t)) ; Ignored for Debian
(disable-maintainer-mode) ; Ignored for Debian
(disable-dependency-tracking) ; Ignored for Debian
(disable-maintainer-mode) ; Ignored for Debian
(disable-option-checking) ; Ignored for Debian
(libexecdir (value #t)) ; Ignored for Debian
(localstatedir (value #t)) ; Ignored for Debian
(mandir (value #t)) ; Ignored for Debian
(runstatedir (value #t))))) ; Ignored for Debian
)))
(getopt-long args option-spec)))
@ -389,7 +388,6 @@ Some influential environment variables:
LDFLAGS C linker flags
GUILE guile command
GUILD guild command
GUILD_OPTIMIZE guild compile optimization
GUILE_LOAD_PATH guile load path; where to find Nyacc
MES_FOR_BUILD build system MES [can be mes or guile]
" PACKAGE VERSION (getenv "prefix")))
@ -454,14 +452,12 @@ Some influential environment variables:
(deps (fold (lambda (program results)
(cons (check-program-version program) results))
'()
(list (make-dep "hex2" #:version '(1 4 0))
(make-dep "M1" #:version '(1 4 0))
(make-dep "blood-elf" #:version '(2 0 0))
(make-dep "kaem" #:version '(1 0 0) #:optional? #t)
(make-dep "M2-Planet" #:version '(1 9 0) #:optional? #t)
(list (make-dep "hex2")
(make-dep "M1")
(make-dep "blood-elf")
(make-dep "diff" #:optional? #t)
(make-dep "guile" #:version '(2 0) #:commands '("guile-3.0" "guile-3" "guile-2.2" "guile-2.0" "guile-2" "guile") #:optional? #t)
(make-dep "mes" #:version '(0 22) #:optional? #t)
(make-dep "guile" #:version '(2 0) #:commands '("guile-2.2" "guile-2.0" "guile-2" "guile") #:optional? #t)
(make-dep "mes" #:version '(0 20) #:optional? #t)
(make-dep "guix" #:version '() #:optional? #t)
(make-dep "ar" #:version '(2 10) #:optional? #t)
(make-dep "sh" #:optional? #t)
@ -480,9 +476,6 @@ Some influential environment variables:
(make-dep "help2man" #:version '(1 47) #:optional? #t)
(make-dep "perl" #:version '(5) #:optional? #t))))
(guile (file-name "guile" deps))
;; See https://bugs.gnu.org/43831; use -O1 with Guile-3
(guild-optimize (let ((guile-version (and=> (find-dep "guile" deps) dependency-version-found)))
(and guile-version (tuple< '(2 9) guile-version) "-O1")))
(deps (if guile (cons (check-program-version (make-dep "nyacc" #:version '(0 99 0) #:commands (list (string-append guile " -c '(use-modules (nyacc lalr)) (display *nyacc-version*)'")) #:file-name #t #:version-option #f))
deps)
deps))
@ -494,7 +487,6 @@ Some influential environment variables:
(file-name "cc" deps)
(file-name "cc-v" deps)
(file-name "mescc" deps)))
(m2-planet (file-name "M2-Planet" deps))
(deps (if cc
(cons* (check-header-c cc (make-dep "limits.h"))
(check-header-c cc (make-dep "stdio.h" #:optional? #t))
@ -517,7 +509,7 @@ Some influential environment variables:
"))
deps)
deps))
(mescc? (file-name "cc is Mes C" deps))
(mesc? (file-name "cc is MES C" deps))
(deps (if cc
(cons (check-compile-c cc (make-dep "cc is Tiny C" #:data "#if !defined (__TINYC__)
#error no tinycc
@ -546,7 +538,7 @@ Some influential environment variables:
(cut member <> '("pc" "portbld" "unknown")))
(cdr host-type-list))))
(mes-kernel (if (string-prefix? "freebsd" mes-kernel) "freebsd" mes-kernel))
(mes-compiler (cond (gcc? "gcc") (tcc? "gcc") (mescc? "mescc") (else "bootstrap")))
(mes-compiler (cond (gcc? "gcc") (tcc? "gcc") (else "mescc")))
(mes-system (string-join (list mes-cpu mes-kernel "mes") "-"))
(bash (or (and (file-exists? "/bin/bash") "/bin/bash")
(file-name "bash" deps)
@ -630,18 +622,15 @@ See \"Porting GNU Mes\" in the manual, or try --with-courage\n" mes-system)
("@AR@" . ,(or (file-name "ar" deps) ""))
("@BASH@" . ,bash)
("@CC@" . ,(or cc ""))
("@CC@" . ,cc)
("@DIFF@" . ,(or (file-name "diff" deps) (string-append abs-top-builddir "/pre-inst-env diff.scm")))
("@DOT@" . ,(or (file-name "dot" deps) ""))
("@GIT@" . ,(or (file-name "git" deps) ""))
("@GUILD_OPTIMIZE@" . ,(or (getenv "GUILD_OPTIMIZE") guild-optimize ""))
("@GUILE@" . ,guile)
("@GUILE_EFFECTIVE_VERSION@" . ,(effective-version))
("@GUILE_LOAD_PATH@" . ,(string-join guile-load-path ":"))
("@GUIX@" . ,(or (file-name "guix" deps) ""))
("@HELP2MAN@" . ,(or (file-name "help2man" deps) ""))
("@KAEM@" . ,(or (file-name "kaem" deps) ""))
("@M2_PLANET@" . ,(or (file-name "M2-Planet" deps) ""))
("@MAKEINFO@" . ,(or (file-name "makeinfo" deps) ""))
("@MES_FOR_BUILD@" . ,(or (file-name "mes" deps)
guile))
@ -662,8 +651,8 @@ See \"Porting GNU Mes\" in the manual, or try --with-courage\n" mes-system)
(cons (string-append "@" (variable-name o) "@") (or (format #f "~a" (dependency-file-name o)) "")))
deps))))
(unless (or cc m2-planet)
(format (current-error-port) "must supply C compiler or M2-Planet\n")
(unless cc
(format (current-error-port) "must supply a C compiler")
(exit 2))
(for-each (lambda (o)
(let* ((src (string-append srcdest o))
@ -707,13 +696,6 @@ See \"Porting GNU Mes\" in the manual, or try --with-courage\n" mes-system)
#define MES_VERSION \"" VERSION "\"
")))))
(substitute (string-append srcdest "build-aux/config.make.in") pairs #:target ".config.make"))
(let ((arch-dir (string-append srcdest "include/" mes-kernel "/" mes-cpu)))
(define (copy-header file-name)
(system* "cp" "-f" "-v"
(string-append arch-dir "/" file-name)
(string-append "include/arch/" file-name)))
(system* "mkdir" "-p" "include/arch")
(for-each copy-header '("kernel-stat.h" "syscall.h")))
(let ((make (and=> (file-name "make" deps) basename)))
(display (string-append "

View File

@ -1,7 +1,7 @@
#! /bin/sh
# GNU Mes --- Maxwell Equations of Software
# Copyright © 2018,2019,2021,2022,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Mes.
#
@ -20,7 +20,7 @@
set -e
VERSION=0.24.2
VERSION=0.22
srcdir=${srcdir-$(dirname $0)}
srcdest=
if test "$srcdir" != "."; then
@ -77,8 +77,6 @@ GUILE=${GUILE-$(command -v guile)} || true
HEX2=${HEX2-$(command -v hex2)}
LDPFLAGS=${LDFLAGS-}
M1=${M1-$(command -v M1)}
M2_PLANET=${M2_PLANET-$(command -v M2-Planet)} || true
KAEM=${KAEM-$(command -v kaem)} || true
MES_FOR_BUILD=${MES_FOR_BUILD-$(command -v mes || command -v guile || echo mes)}
GIT=${GIT-$(command -v git)} || true
PERL=${PERL-$(command -v perl)} || true
@ -169,8 +167,6 @@ subst () {
-e s,"@HEX2FLAGS@,$HEX2FLAGS,"\
-e s,"@M1@,$M1,"\
-e s,"@M1FLAGS@,$M1FLAGS,"\
-e s,"@M2_PLANET@,$M2_PLANET,"\
-e s,"@KAEM@,$KAEM,"\
-e s,"@MES_FOR_BUILD@,$MES_FOR_BUILD,"\
-e s,"@numbered_arch@,$numbered_arch,"\
-e s,"@SHELL@,$SHELL,"\
@ -221,13 +217,7 @@ elif $CC --version | grep tcc; then
compiler=gcc
else
compiler=mescc
if ! $CC --version; then
CC="$PWD/pre-inst-env mescc"
fi
if test "$CC" = "M2-Planet"; then
CC="$PWD/pre-inst-env mescc"
fi
AR=${AR-$PWD/pre-inst-env mesar}
AR=${AR-$PWD/scripts/mesar}
fi
AR=${AR-$(command -v ar)} || true
@ -271,10 +261,6 @@ cat >> include/mes/config.h <<EOF
#define MES_VERSION "$VERSION"
EOF
mkdir -p include/arch
cp -f -v ${srcdest}include/${mes_kernel}/${mes_cpu}/kernel-stat.h include/arch
cp -f -v ${srcdest}include/${mes_kernel}/${mes_cpu}/syscall.h include/arch
cat <<EOF
GNU Mes is configured for
compiler: $compiler

View File

@ -1,120 +0,0 @@
Subject: GNU Mes 0.23 released
<#secure method=pgpmime mode=sign>
We are happy to announce the release of GNU Mes 0.23, representing 125
commits over one year by four people.
Mes was ported to ARM and can now be used in the GNU Guix Reduced Binary
Seed bootstrap as described here
https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25/
and now also for armhf-linux and aarch-linux. Work to integrate this
into Guix is ongoing: tinycc and gcc-core-2.95.3 have been built.
We are excited that the Nlnet Foundation is now sponsoring this work!
Enjoy,
Janneke and Danny.
* About
GNU Mes[0] is a Scheme interpreter and C compiler for bootstrapping the
GNU System. Since version 0.22 it has again helped to halve the size of
opaque, uninspectable binary seeds that are currently being used in the
Reduced Binary Seed bootstrap[1] of GNU Guix[2]. The final goal is to
help create a full source bootstrap as part of the bootstrappable
builds[3] effort for UNIX-like operating systems.
The Scheme interpreter is written in ~5,000 LOC of simple C, and the C
compiler written in Scheme and these are mutual self-hosting. This
mes.c is now being simplified to be transpiled by M2-Planet[4].
Mes has a Garbage Collector, a library of loadable Scheme modules--
notably Dominique Boucher's LALR[5], Pre-R6RS portable syntax-case[6]
with R7RS ellipsis, Matt Wette's Nyacc[7] --and test suite, just
enough to support a REPL and a C99 compiler: mescc.
Mes + MesCC + Mes C Library can build a bootstrappable TinyCC[8] that
is self-hosting. Using this tcc and the Mes C library we now have a
Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for
i686-linux, x86_64-linux, armhf-linux and aarch64-linux.
Mes is inspired by The Maxwell Equations of Software: LISP-1.5[9] -- John
McCarthy page 13, GNU Guix's source/binary packaging transparency and
Jeremiah Orians's stage0[10] ~500 byte self-hosting hex assembler.
We are very grateful to NLNet for sponsoring the Reduced Binary Seed
bootstrap[11] and the ARM port[12].
* Download
git clone git://git.savannah.gnu.org/mes.git
Here are the compressed sources and a GPG detached signature[*]:
https://ftp.gnu.org/gnu/mes/mes-0.23.tar.gz
https://ftp.gnu.org/gnu/mes/mes-0.23.tar.gz.sig
Use a mirror for higher download bandwidth:
https://ftpmirror.gnu.org/mes/mes-0.23.tar.gz
https://ftpmirror.gnu.org/mes/mes-0.23.tar.gz.sig
Here are the MD5 and SHA1 checksums:
e9a0ae6e2c3842cf57fccb54909463ba mes-0.23.tar.gz
0560879358e5a980f7374844c495c92014b47878 mes-0.23.tar.gz
[*] 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
and the corresponding tarball. Then, run a command like this:
gpg --verify mes-0.23.tar.gz.sig
If that command fails because you don't have the required public key,
then run this command to import it:
gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
and rerun the 'gpg --verify' command.
* Get informed, get involved
See https://bootstrappable.org
Join #bootstrappable on irc.freenode.net.
* NEWS
* Changes in 0.23 since 0.22
** Core
*** Mes and Mes C Library can now be built with GCC 10.x.
** MesCC
*** The Mes C Library now supports an armhf-linux bootstrap.
*** MesCC now supports ARM.
*** mini.c library was split into _exit.c, and _write.c.
*** When building with GCC, -lgcc is now used.
*** MesCC now has it's own support library libmescc.a (-lmescc).
*** MesCC now requires mescc-tools-0.7.0 or later for ARM.
*** MesCC can be now built with nyacc-1.00.2:
note that nyacc-1.03.0 is not (backwards) compatible.
*** MesCC can be built with Guile 3.0.x:
See https://bugs.gnu.org/43831; use guild compile -O1 with Guile 3.0.x.
*** MesCC now raises SIGABRT on abort, if supported.
** Noteworthy bug fixes
*** unreadchar on EOF is now a no-op.
*** malloc now aligns the blocks it gives out to max_align_t.
[0] https://www.gnu.org/software/mes
[1] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25
[2] https://www.gnu.org/software/guix
[3] https://bootstrappable.org
[4] https://github.com/oriansj/m2-planet
[5] https://github.com/schemeway/lalr-scm
[6] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
[7] https://www.nongnu.org/nyacc
[8] https://gitlab.com/janneke/tinycc
[9] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
[10] https://savannah.nongnu.org/projects/stage0
[11] https://nlnet.nl/project/GNUMes
[12] https://nlnet.nl/project/GNUMes-arm

View File

@ -1,119 +0,0 @@
Subject: GNU Mes 0.24 released
<#secure method=pgpmime mode=sign>
We are thrilled to announce the release of GNU Mes 0.24, representing
222 commits over one year by four people.
Mes has now been ported to M2-Planet and can be bootstrapped using
stage0-posix[0], starting from the 357-byte hex0 binary of the
bootstrap-seeds[1], as was promised at FOSDEM'21[2].
We are exciteda that the NlNet Foundation[4] is again sponsoring this
work!
What's next?
Work to integrate this so-called "Full Source Bootstrap" is happening on
the wip-full-source-bootstrap[3] branch. Also, full Guile compatible
module support, and RICS-V support.
Enjoy!
* About
GNU Mes[5] is a Scheme interpreter and C compiler for bootstrapping
the GNU System. Since version 0.22 it has again helped to halve the
size of opaque, uninspectable binary seeds that are currently being
used in the Reduced Binary Seed bootstrap[6] of GNU Guix[7]. The
final goal is to help create a full source bootstrap as part of the
bootstrappable builds[8] effort for UNIX-like operating systems.
The Scheme interpreter is written in ~5,000 LOC of simple C, and the C
compiler written in Scheme and these are mutual self-hosting. Mes can
now be bootstrapped from M2-Planet[9] and Mescc-Tools[10].
Mes has a Garbage Collector, a library of loadable Scheme modules--
notably Dominique Boucher's LALR[11], Pre-R6RS portable
syntax-case[12] with R7RS ellipsis, Matt Wette's Nyacc[13] --and test
suite, just enough to support a REPL and a C99 compiler: mescc.
Mes + MesCC + Mes C Library can build a bootstrappable TinyCC[14] that
is self-hosting. Using this tcc and the Mes C library we now have a
Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for
i686-linux, x86_64-linux, armhf-linux and aarch64-linux.
Mes is inspired by The Maxwell Equations of Software: LISP-1.5[15] --
John McCarthy page 13, GNU Guix's source/binary packaging transparency
and Jeremiah Orians's stage0[16] 357-byte self-hosting hex assembler.
* Download
git clone git://git.savannah.gnu.org/mes.git
Here are the compressed sources and a GPG detached signature[*]:
https://ftp.gnu.org/gnu/mes/mes-0.24.tar.gz
https://ftp.gnu.org/gnu/mes/mes-0.24.tar.gz.sig
Use a mirror for higher download bandwidth:
https://ftpmirror.gnu.org/mes/mes-0.24.tar.gz
https://ftpmirror.gnu.org/mes/mes-0.24.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
f6681aa02edc6729af43f1d7c46ae1a97cbc1c92 mes-0.24.tar.gz
828be15e02c103df8a248232491fba10d763724d6ec10f08a2e0e1d249bd9902 mes-0.24.tar.gz
[*] 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
and the corresponding tarball. Then, run a command like this:
gpg --verify mes-0.24.tar.gz.sig
If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to update
or refresh it, and then rerun the 'gpg --verify' command.
gpg --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
* Get informed, get involved
See https://bootstrappable.org
Join #bootstrappable on irc.libera.chat
* NEWS
* Changes in 0.24 since 0.23
** Core
*** Mes and Mes C Library can now be built with M2-Planet.
*** Mes now supports the --bootstrap build on ARM.
** MesCC
*** MesCC now supports the integer suffixes:
Next to `U', also support `ULL', `UL', `L', and `LL'.
** Noteworthy bug fixes
*** MesCC now uses the unsigned type for sizeof.
*** MesCC now only uses signed division if numerator is signed.
*** The Mes C library now supports an argv bigger than 255.
*** Development build support with Guile-2 was resurrected.
*** The logand procedure now works correctly.
*** The 64bit build was resurrected.
* Links
[0] https://github.com/oriansj/stage0-posix
[1] https://github.com/oriansj/bootstrap-seeds
[2] https://archive.fosdem.org/2021/schedule/event/gnumes/
[3] https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-full-source-bootstrap
[4] https://nlnet.nl/project/GNUMes-ARM_RISC-V
[5] https://www.gnu.org/software/mes
[6] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25
[7] https://www.gnu.org/software/guix
[8] https://bootstrappable.org
[9] https://github.com/oriansj/m2-planet
[10] https://savannah.nongnu.org/projects/mescc-tools
[11] https://github.com/schemeway/lalr-scm
[12] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
[13] https://www.nongnu.org/nyacc
[14] https://gitlab.com/janneke/tinycc
[15] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
[16] https://savannah.nongnu.org/projects/stage0

View File

@ -1,115 +0,0 @@
Subject: GNU Mes 0.24.1 released
<#secure method=pgpmime mode=sign>
We are happy to announce the release of GNU Mes 0.24.1, representing 23
commits over five months by four people.
Mes now supports the stage0-posix and M2-Planet Full Source bootstrap on
Aarch64 for ARM. Because stage0-posix does not support ARM yet, the Mes
ARM bootstrap is currently prototyped on Aarch64.
We are excited that the NlNet Foundation[4] is again sponsoring this
work!
What's next?
Work to prototype this so-called "Full Source Bootstrap" for ARM on
Aarch64 is happening on the wip-aarch64-bootstrap[3] branch. Also, full
Guile compatible module support, and RISC-V support.
Enjoy!
* About
GNU Mes[5] is a Scheme interpreter and C compiler for bootstrapping
the GNU System. Since version 0.22 it has again helped to halve the
size of opaque, uninspectable binary seeds that are currently being
used in the Reduced Binary Seed bootstrap[6] of GNU Guix[7]. The
final goal is to help create a full source bootstrap as part of the
bootstrappable builds[8] effort for UNIX-like operating systems.
The Scheme interpreter is written in ~5,000 LOC of simple C, and the C
compiler written in Scheme and these are mutual self-hosting. Mes can
now be bootstrapped from M2-Planet[9] and Mescc-Tools[10].
Mes has a Garbage Collector, a library of loadable Scheme modules--
notably Dominique Boucher's LALR[11], Pre-R6RS portable
syntax-case[12] with R7RS ellipsis, Matt Wette's Nyacc[13] --and test
suite, just enough to support a REPL and a C99 compiler: mescc.
Mes + MesCC + Mes C Library can build a bootstrappable TinyCC[14] that
is self-hosting. Using this tcc and the Mes C library we now have a
Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for
i686-linux, x86_64-linux, armhf-linux and aarch64-linux.
Mes is inspired by The Maxwell Equations of Software: LISP-1.5[15] --
John McCarthy page 13, GNU Guix's source/binary packaging transparency
and Jeremiah Orians's stage0[16] 357-byte self-hosting hex assembler.
* Download
git clone git://git.savannah.gnu.org/mes.git
Here are the compressed sources and a GPG detached signature[*]:
https://ftp.gnu.org/gnu/mes/mes-0.24.1.tar.gz
https://ftp.gnu.org/gnu/mes/mes-0.24.1.tar.gz.sig
Use a mirror for higher download bandwidth:
https://ftpmirror.gnu.org/mes/mes-0.24.1.tar.gz
https://ftpmirror.gnu.org/mes/mes-0.24.1.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
bceaaaf1cafaa31ccb1ee1247ce2dd651a2f67be mes-0.24.1.tar.gz
35120ceb0676632e58973355b9f86dff9cc717ed65ed2a17ff5272c59f2a0535 mes-0.24.1.tar.gz
[*] 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
and the corresponding tarball. Then, run a command like this:
gpg --verify mes-0.24.1.tar.gz.sig
If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to update
or refresh it, and then rerun the 'gpg --verify' command.
gpg --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
* Get informed, get involved
See https://bootstrappable.org
Join #bootstrappable on irc.libera.chat
* NEWS
* Changes in 0.24.1 since 0.24
** Build
*** Support M2-Planet bootstrap for ARM.
** MesCC
*** The Mes C Library now supports bootstrapping ARM.
** Noteworthy bug fixes
*** The definition of S_ISUID was fixed.
*** Unsigned modulo has been fixed for ARM.
*** A bug with abtol has been fixed.
*** Workarounds for building with gcc-12.2.0 have been added.
* Links
[0] https://github.com/oriansj/stage0-posix
[1] https://github.com/oriansj/bootstrap-seeds
[2] https://archive.fosdem.org/2021/schedule/event/gnumes/
[3] https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-aarch64-bootstrap
[4] https://nlnet.nl/project/GNUMes-ARM_RISC-V
[5] https://www.gnu.org/software/mes
[6] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25
[7] https://www.gnu.org/software/guix
[8] https://bootstrappable.org
[9] https://github.com/oriansj/m2-planet
[10] https://savannah.nongnu.org/projects/mescc-tools
[11] https://github.com/schemeway/lalr-scm
[12] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
[13] https://www.nongnu.org/nyacc
[14] https://gitlab.com/janneke/tinycc
[15] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
[16] https://savannah.nongnu.org/projects/stage0

View File

@ -1,117 +0,0 @@
Subject: GNU Mes 0.24.2 released
<#secure method=pgpmime mode=sign>
We are happy to announce the release of GNU Mes 0.24.2, representing 25
commits over nine months by four people.
This release should fix the long standing `stat64' bug #41264[0].
We are very grateful that the NLnet Foundation[1] is sponsoring this
work!
What's next?
Work to prototype this so-called "Full Source Bootstrap" for ARM on
Aarch64 is happening on the wip-aarch64-bootstrap[2] branch. Also, full
Guile compatible module support, and RISC-V support.
Enjoy!
* About
GNU Mes[3] is a Scheme interpreter and C compiler for bootstrapping
the GNU System. Since version 0.22 it has again helped to halve the
size of opaque, uninspectable binary seeds that are currently being
used in the Reduced Binary Seed bootstrap[4] of GNU Guix[5]. The
final goal is to help create a full source bootstrap as part of the
bootstrappable builds[6] effort for UNIX-like operating systems.
The Scheme interpreter is written in ~5,000 LOC of simple C, and the C
compiler written in Scheme and these are mutual self-hosting. Mes can
now be bootstrapped from M2-Planet[7] and Mescc-Tools[8].
Mes has a Garbage Collector, a library of loadable Scheme modules--
notably Dominique Boucher's LALR[9], Pre-R6RS portable
syntax-case[10] with R7RS ellipsis, Matt Wette's Nyacc[11] --and test
suite, just enough to support a REPL and a C99 compiler: mescc.
Mes + MesCC + Mes C Library can build a bootstrappable TinyCC[12] that
is self-hosting. Using this tcc and the Mes C library we now have a
Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for
i686-linux, x86_64-linux, armhf-linux and aarch64-linux.
Mes is inspired by The Maxwell Equations of Software: LISP-1.5[13] --
John McCarthy page 13, GNU Guix's source/binary packaging transparency
and Jeremiah Orians's stage0[14] 357-byte self-hosting hex assembler.
* Download
git clone git://git.savannah.gnu.org/mes.git
Here are the compressed sources and a GPG detached signature[*]:
https://ftp.gnu.org/gnu/mes/mes-0.24.2.tar.gz
https://ftp.gnu.org/gnu/mes/mes-0.24.2.tar.gz.sig
Use a mirror for higher download bandwidth:
https://ftpmirror.gnu.org/mes/mes-0.24.2.tar.gz
https://ftpmirror.gnu.org/mes/mes-0.24.2.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.24.2.tar.gz
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.24.2.tar.gz
[*] 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
and the corresponding tarball. Then, run a command like this:
gpg --verify mes-0.24.2.tar.gz.sig
If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to update
or refresh it, and then rerun the 'gpg --verify' command.
gpg --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
* Get informed, get involved
See https://bootstrappable.org
Join #bootstrappable on irc.libera.chat
* NEWS
* Changes in 0.24.2 since 0.24.1
** Build
*** A number of compile warnings have been fixed.
*** The `simple.make' and `simple.sh' builds have been resurrected.
** MesCC
*** Some assembly defines were added for building TinyCC for x86_64.
*** `__assert_fail' has been updated to use the standard signature.
** Noteworthy bug fixes
*** A bootstrap build without M2-Planet is now supported again.
*** `gettimeofday' no longer segfaults in the M2-Planet build.
*** `stat64' and friends are now used on 32bit platforms.
This fixes https://debbugs.gnu.org/41264, and should also fix
https://debbugs.gnu.org/49985,
https://debbugs.gnu.org/53415,
https://debbugs.gnu.org/53416.
*** The Mes C Library now supports uppercase hex conversions.
* Links
[0] https://debbugs.gnu.org/41264
[1] https://nlnet.nl/project/GNUMes-ARM_RISC-V
[2] https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-aarch64-bootstrap
[3] https://www.gnu.org/software/mes
[4] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25
[5] https://www.gnu.org/software/guix
[6] https://bootstrappable.org
[7] https://github.com/oriansj/m2-planet
[8] https://savannah.nongnu.org/projects/mescc-tools
[9] https://github.com/schemeway/lalr-scm
[10] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
[11] https://www.nongnu.org/nyacc
[12] https://gitlab.com/janneke/tinycc
[13] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
[14] https://github.com/oriansj/stage0-posix

View File

@ -6,7 +6,7 @@
@display
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
@uref{https://fsf.org/}
@uref{http://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@ -414,7 +414,7 @@ The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
@uref{https://www.gnu.org/copyleft/}.
@uref{http://www.gnu.org/copyleft/}.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this

View File

@ -1,107 +1,123 @@
digraph "Guix bag" {
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" [label = "gcc-core-mesboot0@2.95.3", shape = box, fontname = sans];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/qyphha8i1pylf10pm76400kq5d07zsvr-gzip-mesboot-1.2.4.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = red];
"/gnu/store/3va8hfvfyp6dbwqk3036kb25wbp0f81z-gcc-core-mesboot0-2.95.3.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = red];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" [label = "binutils-mesboot0@2.14", shape = box, fontname = sans];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/qyphha8i1pylf10pm76400kq5d07zsvr-gzip-mesboot-1.2.4.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = cyan3];
"/gnu/store/8ghnzf9idpmva8l4n8fyvvgqlln4rddi-binutils-mesboot0-2.14.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = cyan3];
"/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" [label = "bash-mesboot0@2.05b", shape = box, fontname = sans];
"/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" -> "/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" [color = darkgoldenrod];
"/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" -> "/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" [color = darkgoldenrod];
"/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = darkgoldenrod];
"/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = darkgoldenrod];
"/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = darkgoldenrod];
"/gnu/store/yx5dz5gi00q8h5i138h59j1jmbhr3qa4-bash-mesboot0-2.05b.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = darkgoldenrod];
"/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = sans];
"/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" -> "/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" [color = magenta];
"/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = magenta];
"/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = magenta];
"/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = magenta];
"/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = magenta];
"/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" [label = "tcc-boot0@0.9.26-1103-g6e62e0e", shape = box, fontname = sans];
"/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" -> "/gnu/store/iny72b5k1f531xv7fr2i31j4gqknjv2l-mes-boot-0.22.drv" [color = darkseagreen];
"/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" -> "/gnu/store/a6nbjivhxp65wqj5s8rz0fnmwzqxmhry-bootstrap-mescc-tools-0.5.2.drv" [color = darkseagreen];
"/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = darkseagreen];
"/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = darkseagreen];
"/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = darkseagreen];
"/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = darkseagreen];
"/gnu/store/iny72b5k1f531xv7fr2i31j4gqknjv2l-mes-boot-0.22.drv" [label = "mes-boot@0.22", shape = box, fontname = sans];
"/gnu/store/iny72b5k1f531xv7fr2i31j4gqknjv2l-mes-boot-0.22.drv" -> "/gnu/store/xdhz4v7icrfwdbq1j5j052id8l04arms-bootstrap-mes-rewired-0.19.drv" [color = peachpuff4];
"/gnu/store/iny72b5k1f531xv7fr2i31j4gqknjv2l-mes-boot-0.22.drv" -> "/gnu/store/a6nbjivhxp65wqj5s8rz0fnmwzqxmhry-bootstrap-mescc-tools-0.5.2.drv" [color = peachpuff4];
"/gnu/store/iny72b5k1f531xv7fr2i31j4gqknjv2l-mes-boot-0.22.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = peachpuff4];
"/gnu/store/iny72b5k1f531xv7fr2i31j4gqknjv2l-mes-boot-0.22.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = peachpuff4];
"/gnu/store/iny72b5k1f531xv7fr2i31j4gqknjv2l-mes-boot-0.22.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = peachpuff4];
"/gnu/store/iny72b5k1f531xv7fr2i31j4gqknjv2l-mes-boot-0.22.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = peachpuff4];
"/gnu/store/xdhz4v7icrfwdbq1j5j052id8l04arms-bootstrap-mes-rewired-0.19.drv" [label = "bootstrap-mes-rewired@0.19", shape = box, fontname = sans];
"/gnu/store/xdhz4v7icrfwdbq1j5j052id8l04arms-bootstrap-mes-rewired-0.19.drv" -> "/gnu/store/r7bbw2ywmgqp6m5a1hp0fs4lhc51w3sq-bootstrap-mes-0.drv" [color = cyan3];
"/gnu/store/xdhz4v7icrfwdbq1j5j052id8l04arms-bootstrap-mes-rewired-0.19.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = cyan3];
"/gnu/store/r7bbw2ywmgqp6m5a1hp0fs4lhc51w3sq-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = sans];
"/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [label = "gash-boot@0.2.0", shape = box, fontname = sans];
"/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = darkviolet];
"/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = darkviolet];
"/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [label = "bootar@1a", shape = box, fontname = sans];
"/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = blue];
"/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [label = "guile-bootstrap@2.0", shape = box, fontname = sans];
"/gnu/store/a6nbjivhxp65wqj5s8rz0fnmwzqxmhry-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = sans];
"/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [label = "gash-utils-boot@0.1.0", shape = box, fontname = sans];
"/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = blue];
"/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = blue];
"/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = blue];
"/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" [label = "bzip2-mesboot@1.0.8", shape = box, fontname = sans];
"/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" -> "/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" [color = blue];
"/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" -> "/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" [color = blue];
"/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = blue];
"/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = blue];
"/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = blue];
"/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = blue];
"/gnu/store/qyphha8i1pylf10pm76400kq5d07zsvr-gzip-mesboot-1.2.4.drv" [label = "gzip-mesboot@1.2.4", shape = box, fontname = sans];
"/gnu/store/qyphha8i1pylf10pm76400kq5d07zsvr-gzip-mesboot-1.2.4.drv" -> "/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" [color = red];
"/gnu/store/qyphha8i1pylf10pm76400kq5d07zsvr-gzip-mesboot-1.2.4.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = red];
"/gnu/store/qyphha8i1pylf10pm76400kq5d07zsvr-gzip-mesboot-1.2.4.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = red];
"/gnu/store/qyphha8i1pylf10pm76400kq5d07zsvr-gzip-mesboot-1.2.4.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = red];
"/gnu/store/qyphha8i1pylf10pm76400kq5d07zsvr-gzip-mesboot-1.2.4.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = red];
"/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" [label = "patch-mesboot@2.5.9", shape = box, fontname = sans];
"/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" -> "/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" [color = darkseagreen];
"/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" -> "/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" [color = darkseagreen];
"/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = darkseagreen];
"/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = darkseagreen];
"/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = darkseagreen];
"/gnu/store/vn42sjmbh0zr9wn9lnbsdrxlh1zihx50-patch-mesboot-2.5.9.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = darkseagreen];
"/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" [label = "sed-mesboot0@1.18", shape = box, fontname = sans];
"/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" -> "/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" [color = darkgoldenrod];
"/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" -> "/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" [color = darkgoldenrod];
"/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = darkgoldenrod];
"/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = darkgoldenrod];
"/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = darkgoldenrod];
"/gnu/store/16w6l2c80hh98kfykal9hpbm93cscbcg-sed-mesboot0-1.18.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = darkgoldenrod];
"/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = sans];
"/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" -> "/gnu/store/yy8bxckakx5f4rpvqfggrfy21y7bn53g-bzip2-mesboot-1.0.8.drv" [color = blue];
"/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" -> "/gnu/store/hlm2wxhh0irfjnds4i86imdqi13iwj81-make-mesboot0-3.80.drv" [color = blue];
"/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" -> "/gnu/store/0izhx7j1n6lcpcbvy9i9pyjkzjpbxrcj-tcc-boot0-0.9.26-1103-g6e62e0e.drv" [color = blue];
"/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" -> "/gnu/store/jrf5jckbwk949npav1p62vgcg95lr4mx-gash-boot-0.2.0.drv" [color = blue];
"/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" -> "/gnu/store/yl8gsvanaj8wgngmgc4an06g5ybadad2-gash-utils-boot-0.1.0.drv" [color = blue];
"/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" -> "/gnu/store/w77kjhmj4c4sncndnh0kvf0jfpwpradm-bootar-1a.drv" [color = blue];
"/gnu/store/h1m81zsyi3l4yd9r7pd3ffanb61pszxy-tcc-boot-0.9.27.drv" -> "/gnu/store/qs4086i9b9q0b74l4wjqgzbdc3c0f58f-guile-bootstrap-2.0.drv" [color = blue];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [color = magenta];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" [color = magenta];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [color = magenta];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" [color = magenta];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = magenta];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = magenta];
"/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [color = magenta];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = magenta];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = magenta];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" [color = magenta];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = magenta];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = magenta];
"/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = magenta];
"/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica];
"/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [color = red];
"/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = red];
"/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = red];
"/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
"/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" -> "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" [color = dimgrey];
"/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" -> "/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" [color = dimgrey];
"/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" [label = "mes-boot@0.19", shape = box, fontname = Helvetica];
"/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" -> "/gnu/store/msykyiih9lwrd86x00vs00i8s5ipjks4-bootstrap-mescc-tools-0.5.2.drv" [color = darkgoldenrod];
"/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkgoldenrod];
"/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" -> "/gnu/store/cfw60j3987wrvb26f2bpbw5l5q6q53fj-bootstrap-mes-0.drv" [color = darkgoldenrod];
"/gnu/store/msykyiih9lwrd86x00vs00i8s5ipjks4-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
"/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica];
"/gnu/store/cfw60j3987wrvb26f2bpbw5l5q6q53fj-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica];
"/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" [label = "tcc-boot0@0.9.26-6.c004e9a", shape = box, fontname = Helvetica];
"/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" [color = magenta];
"/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/msykyiih9lwrd86x00vs00i8s5ipjks4-bootstrap-mescc-tools-0.5.2.drv" [color = magenta];
"/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/cfw60j3987wrvb26f2bpbw5l5q6q53fj-bootstrap-mes-0.drv" [color = magenta];
"/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
"/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" [color = peachpuff4];
"/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [color = peachpuff4];
"/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = peachpuff4];
"/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
"/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" -> "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [color = dimgrey];
"/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica];
"/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = red];
"/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" [color = red];
"/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = red];
"/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" [color = red];
"/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = red];
"/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica];
"/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = dimgrey];
"/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [color = dimgrey];
"/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = dimgrey];
"/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = dimgrey];
"/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" [label = "mesboot-headers@0.19", shape = box, fontname = Helvetica];
"/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = blue];
"/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = darkseagreen];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
"/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = darkseagreen];
"/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica];
"/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" [color = red];
"/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [color = red];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [color = magenta];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = magenta];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" [color = magenta];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [color = magenta];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = magenta];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = magenta];
"/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [color = magenta];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [color = darkgoldenrod];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = darkgoldenrod];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [color = darkgoldenrod];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" [color = darkgoldenrod];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkgoldenrod];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkgoldenrod];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = darkgoldenrod];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod];
"/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [color = darkgoldenrod];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [color = cyan3];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" [color = cyan3];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = cyan3];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = cyan3];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = cyan3];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = cyan3];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = cyan3];
"/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [color = cyan3];
"/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica];
"/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = dimgrey];
"/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = dimgrey];
"/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" [color = dimgrey];
"/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = dimgrey];
"/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = dimgrey];
}

View File

@ -13,7 +13,7 @@
@set OPENPGP-SIGNING-KEY-ID 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
@copying
Copyright @copyright{} 2018,2019,2020,2021,2022 Jan (janneke) Nieuwenhuizen@*
Copyright @copyright{} 2018,2019 Jan (janneke) Nieuwenhuizen@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@ -48,7 +48,7 @@ Edition @value{EDITION} @*
@contents
@c *********************************************************************
@node Top
@node Top, Introduction, (dir), (dir)
@top GNU Mes
This document describes GNU Mes version @value{VERSION}, a bootstrappable
@ -72,19 +72,12 @@ Software Freedom
* Reproducible Builds:: Reproducibility and free software.
* Bootstrappable Builds:: The freedom to build a software without binary seed.
* Reduced Binary Seed Bootstrap:: Guix reduces bootstrap binaries with 50%.
* Scheme-only Bootsrap:: Guix reduced bootstrap binaries to 25%.
* Full Source Bootstrap:: A bootstrap worthy of GNU.
* Full Source Bootstrap:: Software dependencies worthy of GNU.
* LISP as Maxwell's Equations of Software:: Auditable elegance.
Full Source Bootstrap
* Stage0:: The Magical Self-Hosting Hex Assembler.
* M2-Planet:: A Sub-C bootstrap compiler.
Installation
* Requirements:: Software needed to build and run Mes.
* Regular Requirements:: Software needed to build and run Mes.
* Bootstrap Requirements:: Software needed to bootstrap Mes.
* Running the Test Suites:: Testing Mes.
@ -116,7 +109,7 @@ Contributing
@end menu
@c *********************************************************************
@node Introduction
@node Introduction, Installation, Top, Top
@chapter Introduction
@quotation
@ -194,17 +187,15 @@ Freedom 1.
@menu
* Reproducible Builds:: Reproducibility and free software.
* Bootstrappable Builds:: The freedom to build a software without binary seed.
* Reduced Binary Seed Bootstrap:: Guix reduces bootstrap binaries with 50%.
* Scheme-only Bootsrap:: Guix reduced bootstrap binaries to 25%.
* Full Source Bootstrap:: A bootstrap worthy of GNU.
* Full Source Bootstrap:: Software dependencies worthy of GNU.
* LISP as Maxwell's Equations of Software:: Auditable elegance.
@end menu
@node Reproducible Builds
@node Reproducible Builds, Bootstrappable Builds, Introduction, Introduction
@section Reproducible Builds
The current Reproducible Builds effort incubated in the Debian
project@footnote{@url{https://debian.org, The Debian Project}} and was
project@footnote{@url{http://debian.org, The Debian Project}} and was
organized by Lunar. Quoting the Reproducible Builds
website@footnote{@url{https://reproducible-builds.org/,Reproducible
Builds}}
@ -249,7 +240,7 @@ packages could be rebuild bit-identical from source.
@author Martin Uecker
@end quotation
@node Bootstrappable Builds
@node Bootstrappable Builds, Full Source Bootstrap, Reproducible Builds, Introduction
@section Bootstrappable Builds
Software distributions that take reproducible builds seriously are
@ -267,11 +258,10 @@ binary seed that all software distributions inject are the so called
@emph{bootstrap binary seed}. Bootstrap binaries are the initial binary
seeds that are used to start building the distribution.
The GNU Guix operating system (@pxref{Top,,, guix, The GNU Guix
Manual}), version 1.0 had a relatively small closure of bootstrap binary
seed: GNU binutils, GNU gcc, GNU Libc, GNU Guile, and ``Static
binaries'' (think: bash, bzip2, coreutils, gawk, grep, gzip, patch, sed,
tar, xz).
The GNU Guix operating system, version 1.0 had a relatively small
closure of bootstrap binary seed: GNU binutils, GNU gcc, GNU Libc, GNU
Guile, and ``Static binaries'' (think: bash, bzip2, coreutils, gawk,
grep, gzip, patch, sed, tar, xz).
@example
$ du -schx $(readlink $(guix build bootstrap-tarballs)/*)
@ -298,9 +288,6 @@ $ du -schx *
252M total
@end example
@node Reduced Binary Seed Bootstrap
@section Reduced Binary Seed Bootstrap
During the Guix 1.1 development series we managed to create the first
reduction by 50% of the Guix @emph{bootstrap binary seed}@footnote{See
@url{https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/}}.
@ -308,37 +295,16 @@ This was a very important step because the ~250MB @emph{seed} of binary
code was practically non-auditable, which makes it hard to establish
what source code produced them.
@node Scheme-only Bootsrap
@section Scheme-only Bootstrap
@node Full Source Bootstrap, , Bootstrappable Builds, Introduction
@section Full Source Bootstrap
The next step that Guix has taken is to replace the shell and all its
utilities with implementations in Guile Scheme, the @emph{Scheme-only
bootstrap}. This second halving of the boostrap binaries reduced their
size to 25% @footnote{See
@url{https://guix.gnu.org/en/blog/2020/guix-further-reduces-bootstrap-seed-to-25/}}.
Gash (@pxref{Gash,,, gash, The Gash manual}) is a POSIX-compatible shell
that replaces Bash, and it comes with Gash Utils which has minimalist
replacements for Awk, the GNU Core Utilities, Grep, Gzip, Sed, and Tar.
The rest of the bootstrap binary seeds that were removed are now built
from source.
There is an obvious solution: we cannot allow any binary seeds in our
software stack. Not even in the bootstrap binary seed. Maybe that is a
bit too strong: we want to have the absolute minimum of binary seeds and
all binary seeds need to be inspectable and must be reviewed. How big
would the absolute minimal set be?
@node Full Source Bootstrap
@section Full Source Bootstrap
Reduction of binary seeds is great, but there is an obvious target: we
cannot allow any binary seeds in our software stack. Not even in the
bootstrap binary seed. Maybe that is a bit too strong: we want to have
the absolute minimum of binary seeds and all binary seeds need to be
inspectable and must be reviewed. How big would the absolute minimal
set be?
@menu
* Stage0:: The Magical Self-Hosting Hex Assembler.
* M2-Planet:: A Sub-C bootstrap compiler.
@end menu
@node Stage0
@subsection Stage0
@subsection The Magical Self-Hosting Hex Assembler
June 2016 I learnt about
@url{https://github.com/oriansj/stage0/,Stage0}. Jeremiah Orians
@ -365,7 +331,7 @@ Most computers work pretty well so apparently there is not a pressing
need to inspect and study all of these codes. At the same time it is
tricky to fully trust@footnote{ Ken Thompson's 1984 Turing award
acceptance speech
@url{https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf,
@url{http://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf,
Reflections on Trusting Tust}.} a computer that was bootstrapped in this
way.
@ -443,25 +409,13 @@ nothing to all of the programs that our computer runs. Something that
seemed to be an impossible dream is suddenly starting to look like
``just a couple years of work''.
@node M2-Planet
@subsection M2-Planet
@url{https://github.com/oriansj/m2-planet/,M2-Planet} @footnote{The
PLAtform NEutral Transpiler}, when combined with
@url{https://savannah.gnu.org/projects/mescc-tools/, mescc-tools};
allows one to compile a subset of the C language into working binaries
with introspective steps inbetween. In 2021 M2-Planet with release
1.8.0 reached a level of maturity that allowed to build MesCC-Tools and
Mes. This allows for another reduction the Guix bootstrap binaries: mes
and mescc-tools can be removed.
@node LISP as Maxwell's Equations of Software
@section LISP as Maxwell's Equations of Software
As fate would have it, I stumbled upon this
@url{https://queue.acm.org/detail.cfm?id=1039523, interview with Alan
Kay}, where he shares a revelation he had when reading John McCarthy's
@url{https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf,
@url{http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf,
LISP-1.5} manual:
@quotation
@ -526,7 +480,7 @@ It is our sincerest hope to bring back this level of quality and
elegance..
@c *********************************************************************
@node Installation
@node Installation, Bootstrapping, Introduction, Top
@chapter Installation
@cindex installing Mes
@ -537,13 +491,13 @@ to use it.
@menu
* Requirements:: Software needed to build and run Mes.
* Regular Requirements:: Software needed to build and run Mes.
* Bootstrap Requirements:: Software needed to bootstrap Mes.
* Running the Test Suites:: Testing Mes.
@end menu
@node Requirements
@section Requirements
@node Regular Requirements, Bootstrap Requirements, Installation, Installation
@section Regular Requirements
This section lists requirements when building Mes from source. The
build procedure for Mes is the same as for other GNU software, and is
@ -553,19 +507,12 @@ in the Mes source tree for additional details.
GNU Mes depends on the following packages:
@itemize
@item @url{https://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or
later, including 2.2.x and 3.0.x,
@item @url{https://www.gnu.org/software/make/, GNU Make}.
@item @url{https://savannah.gnu.org/projects/nyacc/, NYACC}, version 1.00.2,
@item @url{https://gcc.gnu.org, GCC's gcc}, version 2.95.3 or later, including 10.2.0,
@item @url{https://savannah.gnu.org/projects/mescc-tools/, mescc-tools}, version 1.4.0,
@end itemize
The following dependencies are optional:
@itemize
Support for building the bootstrap @file{bin/mes-m2} depends on
@item @url{https://github.com/oriansj/m2-planet/, M2-Planet}, version 1.9.0.
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or
later, including 2.2.x;
@item @url{http://www.gnu.org/software/make/, GNU Make}.
@item @url{https://savannah.gnu.org/projects/nyacc/, NYACC}, 0.93.0 or later, including 0.99.0.
@item @url{http://gcc.gnu.org, GCC's gcc}, version 2.95.3 or later.
@item @url{https://savannah.gnu.org/projects/mescc-tools/, mescc-tools}, version 0.6.1 or later,
@end itemize
@cindex Guile, compatibility
@ -573,7 +520,7 @@ Mes is compatible with GNU Guile, so it is possible to share the same
Scheme code between both. Currently Mes only supports the minimal
subset of R5RS and Guile extensions to run MesCC.
@node Bootstrap Requirements
@node Bootstrap Requirements, Running the Test Suites, Regular Requirements, Installation
@section Bootstrap Requirements
This section lists requirements when building Mes as a bootstrap
@ -594,12 +541,11 @@ Bootstrapping Mes depends on the following packages:
@itemize
@item a POSIX-compatible shell
@item @url{https://savannah.gnu.org/projects/mescc-tools/, mescc-tools}, version 1.4.0,
@item @url{https://github.com/oriansj/m2-planet/, M2-Planet}, version 1.9.0.
@item @url{https://savannah.gnu.org/projects/nyacc/, NYACC}, version 1.00.2,
@item @url{https://github.com/oriansj/mescc-tools/, mescc-tools}, version 0.6.1 or later.
@item @url{https://savannah.gnu.org/projects/nyacc/, NYACC}, 0.93.0 or later, including 0.99.0.
@end itemize
@node Running the Test Suites
@node Running the Test Suites, , Bootstrap Requirements, Installation
@section Running the Test Suites
@cindex test suites
@ -642,7 +588,7 @@ CC=gcc CC32=i686-unknown-linux-gnu-gcc MES=guile \
build-aux/test.sh scaffold/tests/00-exit-0
@end example
@node Bootstrapping
@node Bootstrapping, Contributing, Installation, Top
@chapter Bootstrapping
@quotation
@ -687,14 +633,14 @@ responsibility.
* Invoking mesar::
@end menu
@node The Mes Bootstrap Process
@node The Mes Bootstrap Process, Invoking mes, Bootstrapping, Bootstrapping
@section The Mes Bootstrap Process
The Reduced Binary Seed bootstrap currently adopted by Guix@footnote{See
@file{gnu/packages/commencement.scm} in the @var{master} branch in Guix
git
@url{https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/commencement.scm}}.
In its intiial form it is only available for x86-linux and armhf-linux.
@url{http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/commencement.scm}}.
In its intiial form it is only available for x86-linux.
Currently, it goes like this:
@ -733,23 +679,19 @@ Currently, it goes like this:
^
|
*
gash-boot, gash-utils-boot
^
|
*
bootstrap-mescc-tools, bootstrap-mes (~12 MiB)
bootstrap-guile (~48 MiB)
bootstrap-mescc-tools, bootstrap-mes (~10MB)
bootstrap-bash, bootstrap-coreutils&co, bootstrap-guile (~120MB)
@end verbatim
@c This graph is generated from wip-bootstrap, doing:
@c guix graph --type=bag -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' > doc/images/gcc-mesboot-graph.dot
@c ~/src/guix/core-updates/pre-inst-env guix graph --type=bag -e '(@@ (gnu packages commencement) gcc-mesboot)' > doc/images/gcc-mesboot-graph.dot
@c dot -T png doc/images/gcc-mesboot-graph.dot > doc/images/gcc-mesboot-graph.png
Here's a generated dependency diagram to for the initial bootstrap gcc
Here's a generated dependency diagram to for the final bootstrap gcc
that builds the rest of Guix.
@image{images/gcc-mesboot-graph,6in,,Reference graph of the gcc-core-mesboot0}
@image{images/gcc-mesboot-graph,2in,,Reference graph of the gcc-mesboot}
Work is ongoing to remove these binary seeds that were intentionally
injected by our own doing as temporary shortcut
@ -757,16 +699,19 @@ injected by our own doing as temporary shortcut
bootstrap-mescc-tools (seed), bootstrap-mes (seed)
@end example
For now, this additional non-bootstrapped dependencies (i.e., binary
For now, these additional non-bootstrapped dependencies (i.e., binary
seeds) are taken for granted
@example
bootstrap-guile
bootstrap-guile, bash, bzip2, coreutils, gawk, grep, gzip, patch, sed,
tar, xz
@end example
Our next priority is to eleminate these one by one.
Although we think these are less essential and thus less interesting
than the GNU toolchain triplet that we focussed on initially, our next
priority is to eleminate these one by one.
@node Invoking mes
@node Invoking mes, Invoking mescc, The Mes Bootstrap Process, Bootstrapping
@section Invoking mes
@cindex repl
@ -842,7 +787,7 @@ Display the current version of mes%, and then exit.
* Environment Variables:: If the bits won't change, change their habitat.
@end menu
@node Environment Variables
@node Environment Variables, , Invoking mes, Invoking mes
@subsection Environment Variables
@cindex environment variables
@cindex shell
@ -920,7 +865,7 @@ Mes uses @var{@strong{GUILE}_LOAD_PATH} for compatibility with Guile.
@end table
@node Invoking mescc
@node Invoking mescc, Invoking mesar, Invoking mes, Bootstrapping
@section Invoking mescc
@example
@ -931,11 +876,10 @@ The @var{option}s can be among the following:
@table @code
@item --align=@var{symbol}
align @var{symbol}, the default is @code{functions}; other valid values
are: @code{globals}.
@item --align
align globals
@item --base-address=ADDRESS
@item --base-address=ADRRESS
use BaseAddress ADDRESS [0x1000000]
@item -c
@ -1002,7 +946,7 @@ specify LANGUAGE of the following input files
* MesCC Environment Variables:: There's no NIX like POSIX.
@end menu
@node MesCC Environment Variables
@node MesCC Environment Variables, , Invoking mescc, Invoking mescc
@subsection MesCC Environment Variables
@table @env
@ -1031,7 +975,7 @@ during the parsing phase.
@end table
@node Invoking mesar
@node Invoking mesar, , Invoking mescc, Bootstrapping
@section Invoking mesar
@example
@ -1061,7 +1005,7 @@ display version and exit
@end table
@c *********************************************************************
@node Contributing
@node Contributing, Acknowledgments, Bootstrapping, Top
@chapter Contributing
@menu
@ -1073,7 +1017,7 @@ display version and exit
* Submitting Patches:: Share your work.
@end menu
@node Building from Git
@node Building from Git, Running Mes From the Source Tree, Contributing, Contributing
@section Building from Git
If you want to hack GNU Mes itself, it is recommended to use the latest
@ -1089,26 +1033,15 @@ all the dependencies and appropriate environment variables are set up to
hack on Mes:
@example
guix shell
guix environment -l .guix.scm
@end example
If you are unable to use Guix when building Mes from a Git checkout,
the following are the required packages in addition to those mentioned
in the installation instructions (@pxref{Requirements}).
@itemize
@item @url{https://gnu.org/software/help2man/, GNU Help2man};
@item @url{https://gnu.org/software/texinfo/, GNU Texinfo};
@item @url{https://www.graphviz.org/, Graphviz};
@item @url{https://www.perl.org/, Perl}.
@end itemize
Finally, you have to invoke @code{make check} to run tests
(@pxref{Running the Test Suites}). If anything fails, take a look at
installation instructions (@pxref{Installation}) or send a message to
the @email{bug-mes@@gnu.org} mailing list.
@node Running Mes From the Source Tree
@node Running Mes From the Source Tree, Porting GNU Mes, Building from Git, Contributing
@section Running Mes From the Source Tree
First, you need to have an environment with all the dependencies
@ -1116,15 +1049,15 @@ available (@pxref{Building from Git}), and then simply prefix each
command by @command{./pre-inst-env} (the @file{pre-inst-env} script
lives in the top build tree of Mes).
@node Porting GNU Mes
@node Porting GNU Mes, The Perfect Setup, Running Mes From the Source Tree, Contributing
@section Porting GNU Mes
Mes is supported for x86-linux and armhf-linux. A 64 bit (x86_64-linux)
is almost done, only a few bugs remain. The Guix bootstrap for
x86_64-linux uses mes for x86-lunix and that is not expected to change.
Likewise, aarch64-linux uses mes for armhf-linux.
Mes was written for x86-linux. A 64 bit (x86_64) is almost done, only a
few bugs remain. The Guix bootstrap for x86_64 uses x86 mes and that is
not expected to change.
A port to GNU/Hurd (x86-gnu) is underway.
An ARM (armv4/armv7l) linux port is underway. A port to GNU/Hurd
(x86-gnu) is also underway.
Initial scaffold, built by @file{build-aux/build-scaffold.sh}:
@example
@ -1149,14 +1082,14 @@ Porting MesCC:
@file{mes/module/mescc/i386/info.mes}
@end example
@node The Perfect Setup
@node The Perfect Setup, Coding Style, Porting GNU Mes, Contributing
@section The Perfect Setup
The Perfect Setup to hack on Mes is basically the perfect setup used
for Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference
Manual}). First, you need more than an editor, you need
@url{https://www.gnu.org/software/emacs, Emacs}, empowered by the
wonderful @url{https://nongnu.org/geiser/, Geiser}.
@url{http://www.gnu.org/software/emacs, Emacs}, empowered by the
wonderful @url{http://nongnu.org/geiser/, Geiser}.
Geiser allows for interactive and incremental development from within
Emacs: code compilation and evaluation from within buffers, access to
@ -1164,7 +1097,7 @@ on-line documentation (docstrings), context-sensitive completion,
@kbd{M-.} to jump to an object definition, a REPL to try out your code,
and more (@pxref{Introduction,,, geiser, Geiser User Manual}).
@node Coding Style
@node Coding Style, Submitting Patches, The Perfect Setup, Contributing
@section Coding Style
In general our code follows the GNU Coding Standards (@pxref{Top,,,
@ -1181,7 +1114,7 @@ Scheme code in Mes is written in a purely functional style.
@cindex coding style
When writing Scheme code, we follow common wisdom among Scheme
programmers. In general, we follow the
@url{https://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp
@url{http://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp
Style Rules}. This document happens to describe the conventions mostly
used in Guiles code too. It is very thoughtful and well written, so
please do read it.
@ -1200,13 +1133,13 @@ Additionally, in Mes we prefer to format @code{if} statements like this
else))
@end example
@node Submitting Patches
@node Submitting Patches, , Coding Style, Contributing
@section Submitting Patches
Development is done using the Git distributed version control system.
Thus, access to the repository is not strictly necessary. We welcome
contributions in the form of patches as produced by @code{git
format-patch} sent to the @email{bug-mes@@gnu.org} mailing list.
format-patch} sent to the @email{guix-patches@@gnu.org} mailing list.
Please write commit logs in the ChangeLog format (@pxref{Change Logs,,,
standards, GNU Coding Standards}); you can check the commit history for
@ -1243,14 +1176,14 @@ It will be ready sooner if you help.
@end quotation
@cindex contact, irc, mailing list
Join us on @code{#bootstrappable} on the Libera Chat IRC network or on
@email{bug-mes@@gnu.org} to share your experience---good or bad.
Join us on @code{#bootstrappable} on the Freenode IRC network or on
@email{guix-devel@@gnu.org} to share your experience---good or bad.
@cindex bug, bug report, reporting a bug
Please send bug reports with full details to @email{bug-mes@@gnu.org}.
@c *********************************************************************
@node Acknowledgments
@node Acknowledgments, Resources, Contributing, Top
@chapter Acknowledgments
We would like to thank the following people for their help: Jeremiah
@ -1262,7 +1195,7 @@ LISP-1.5 and Alan Kay for their inspiring comment on
@url{https://queue.acm.org/detail.cfm?id=1039523, Page 13}.
@c *********************************************************************
@node Resources
@node Resources, GNU Free Documentation License, Acknowledgments, Top
@chapter Resources
@itemize
@ -1286,8 +1219,8 @@ collection of small/bootstrappable compilers, operating systems,
anything you need.
@item
@url{irc.libera.chat, #bootstrappable} The bootstrapping community home
at the Libera Chat IRC network.
@url{irc.freenode.net, #bootstrappable} The bootstrapping community home
at the freenode IRC network.
@item
@file{guix-devel@@gnu.org} The Guix mailing list, where it all started.
@ -1296,17 +1229,17 @@ at the Libera Chat IRC network.
@end itemize
@c *********************************************************************
@node GNU Free Documentation License
@node GNU Free Documentation License, Concept Index, Resources, Top
@appendix GNU Free Documentation License
@cindex license, GNU Free Documentation License
@include fdl-1.3.texi
@c *********************************************************************
@node Concept Index
@node Concept Index, Programming Index, GNU Free Documentation License, Top
@unnumbered Concept Index
@printindex cp
@node Programming Index
@node Programming Index, , Concept Index, Top
@unnumbered Programming Index
@syncodeindex tp fn
@syncodeindex vr fn

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@ -0,0 +1 @@
LISP-1.5-page-13-bottom.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

55
doc/talks/fosdem17/README Normal file
View File

@ -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

View File

@ -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>

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

BIN
doc/talks/fosdem17/egg.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
doc/talks/fosdem17/egg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
doc/talks/fosdem17/egg.xcf Normal file

Binary file not shown.

View File

@ -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 “Maxwells 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 theres approximately 2K lines of C. How do you plan to
make sure that it doesnt 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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

View File

@ -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
$

BIN
doc/talks/fosdem17/mes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
doc/talks/fosdem17/mes.xcf Normal file

Binary file not shown.

BIN
doc/talks/fosdem19/Guix.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -0,0 +1 @@
../fosdem17/LISP-1-5-page-13-bottom.png

View File

@ -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>

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 KiB

View File

@ -0,0 +1 @@
../fosdem17/bootstrap-graph.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

1
doc/talks/fosdem19/egg.png Symbolic link
View File

@ -0,0 +1 @@
../fosdem17/egg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1 @@
../fosdem17/fsb-logo-guile-guix-mes.png

View File

@ -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
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

BIN
doc/talks/fosdem19/gcc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

1
doc/talks/fosdem19/mes.png Symbolic link
View File

@ -0,0 +1 @@
../fosdem17/mes.png

View File

@ -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>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -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>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -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>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -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>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -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>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
doc/talks/fosdem19/tcc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 KiB

BIN
doc/talks/fosdem20/Guix.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Some files were not shown because too many files have changed in this diff Show More