unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* prototyping the full source bootstrap path
@ 2017-11-19 22:31 Jan Nieuwenhuizen
  2017-11-20  9:20 ` [bootstrappable] " Ludovic Courtès
  2017-11-20 12:45 ` [bootstrappable] " Orians, Jeremiah (DTMB)
  0 siblings, 2 replies; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-19 22:31 UTC (permalink / raw)
  To: guix-devel; +Cc: bootstrappable

[-- Attachment #1: Type: text/plain, Size: 1039 bytes --]

Hi!

Now that MesCC starts to build TinyCC that starts to pass a large set of
the mescc C tests, it's time to get walking the bootstrap path.

Attached*) is my initial attempt for the full source bootstrap path in
GuixSD; to try it, do

    ./pre-inst-env guix build mes-boot
    ...
    /gnu/store/lj7h0s33qghgk4zw2nb133riz7xhara9-mes-boot-0.11-0.948dd79/bin/mes --help

The starting point is Jeremiah Orian's stage0 self hosting hex
assembler.  The binary seed of our bootstrap is made explicit in an
additional source download: stage0-seed (of ~400 bytes).  This binary
that is identical with it's ASCII source can be considered "source".

There are still many gaps in our full source bootstrap path to-be, I
"filled" these by adding additional binary seeds: mescc-tools-seed and
mes-seed.  We are working to remove these, that will take some time.

The mes-boot package needs a lot more work and tinycc-boot, gcc-boot
packages are still missing.

Greetings,
janneke


*) Or fetch branch wip-bootstrap: https://gitlab.com/janneke/guix


[-- Attachment #2: 0001-gnu-Add-stage0-boot.patch --]
[-- Type: text/x-patch, Size: 4791 bytes --]

From c64a0af956754a22a7900a96260b7615c62c14b1 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 19 Nov 2017 10:03:43 +0100
Subject: [PATCH 1/3] gnu: Add stage0-boot.

* gnu/packages/mes.scm (stag0-boot): New variable.
---
 gnu/packages/mes.scm | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)

diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index dfa421177..1e3631a1e 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -19,6 +19,7 @@
 (define-module (gnu packages mes)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bootstrap)
   #:use-module (gnu packages commencement)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages gcc)
@@ -26,11 +27,85 @@
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages perl)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix licenses)
   #:use-module (guix packages))
 
+(define-public stage0-boot
+ (let ((version "0.0.8")
+        (revision "0")
+        (commit "14843efa5ed13372b1ec32a76d19f27b3febab91"))
+  (package
+    (name "stage0-boot")
+    (version (string-append version "-" revision "." (string-take commit 7)))
+    (synopsis "Manually created initial hex programs for full source bootstrapping")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://gitlab.com/janneke/stage0"
+                                  "/repository/archive.tar.gz?ref="
+                                  commit))
+              (file-name (string-append name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0ws5g4r1rnyfaxrnyqzh4qr3w2a3i3wljcc095rk897wi1xz23jz"))))
+    (native-inputs
+     `(("static-bash" ,@(assoc-ref %bootstrap-inputs "bash"))
+       ("bash" ,(search-bootstrap-binary "bash" (%current-system)))
+       ("tar" ,(search-bootstrap-binary "tar" (%current-system)))
+       ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
+       ("stage0-seed"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://gitlab.com/janneke/stage0-seed"
+                               "/repository/archive.tar.gz?ref="
+                               "87039121e9ab4d48e9bade513c6f328cc9968583"))
+           (file-name (string-append name "-seed" "-" version ".tar.xz"))
+           (sha256
+            (base32
+             "0m18mv825nykj738gg9il60xb8xxc4015ypxgimhygdqxx0n66bp"))))))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((bash (assoc-ref %build-inputs "static-bash"))
+                (tar (assoc-ref %build-inputs "tar"))
+                (xz (assoc-ref %build-inputs "xz"))
+                (source (assoc-ref %build-inputs "source"))
+                (stage0-seed (assoc-ref %build-inputs "stage0-seed"))
+                (out (assoc-ref %outputs "out"))
+                (out/bin (string-append out "/bin")))
+           (setenv "PATH" (string-append bash "/bin:"
+                                         "../stage0-seed:"
+                                         tar "/bin:"
+                                         xz "/bin"))
+           (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
+           (mkdir-p "source")
+           (system* "tar" "--strip=1" "-C" "source" "-xvf" source)
+           (mkdir-p "stage0-seed")
+           (system* "tar" "--strip=1" "-C" "stage0-seed" "-xvf" stage0-seed)
+           (chdir "source")
+           (zero? (system (string-append
+"set -ex;"
+"mkdir -p " out/bin ";"
+"hex Linux\\ Bootstrap/hex.hex > " out/bin "/hex;"
+;; FIXME: exec-enable?
+;;"hex Linux\\ Bootstrap/exec_enable.hex > " out/bin "/exec_enable;"
+;;"exec_enable " out/bin "/hex"
+;;"exec_enable " out/bin "/exec_enable"
+"chmod +x " out/bin "/hex"
+)))))))
+    (description
+     "Stage0 is the initial stage of a full source bootstrapping process.  It
+contains hex0, the initial 400 byte self hosting hex assembler.  It also comes
+with a Knight VM that runs Forth and Lisp.")
+    (home-page "https://savannah.nongnu.org/projects/stage0/")
+    (license gpl3+))))
+
 (define-public nyacc
   (package
     (name "nyacc")
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com


[-- Attachment #3: 0002-gnu-Add-mescc-tools-boot.patch --]
[-- Type: text/x-patch, Size: 5699 bytes --]

From 700fc1d3f7ab451f1aca84cd06b02e3cca39eea8 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 19 Nov 2017 11:35:59 +0100
Subject: [PATCH 2/3] gnu: Add mescc-tools-boot.

* gnu/packages/mes.scm (mescc-tools-boot): New variable.
---
 gnu/packages/mes.scm | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)

diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 1e3631a1e..ef4d4a486 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -106,6 +106,102 @@ with a Knight VM that runs Forth and Lisp.")
     (home-page "https://savannah.nongnu.org/projects/stage0/")
     (license gpl3+))))
 
+(define-public mescc-tools-boot
+ (let ((version "0.2")
+        (revision "0")
+        (commit "fbb9004499c533fd1df7270480a4ff9375ca1f55"))
+  (package
+    (name "mescc-tools-boot")
+    (version (string-append version "-" revision "." (string-take commit 7)))
+    (synopsis "Tools for the full source bootstrapping process")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://gitlab.com/janneke/mescc-tools"
+                                  "/repository/archive.tar.gz?ref="
+                                  commit))
+              (file-name (string-append name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1m0syjc2f3pk5fl7msf0v8n7j29wh1bsma269sminp9wh7905m09"))))
+    (native-inputs
+     `(("static-bash" ,@(assoc-ref %bootstrap-inputs "bash"))
+       ("bash" ,(search-bootstrap-binary "bash" (%current-system)))
+       ("tar" ,(search-bootstrap-binary "tar" (%current-system)))
+       ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
+       ("stage0" ,stage0-boot)
+       ("mescc-tools-seed"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://gitlab.com/janneke/mescc-tools-seed"
+                               "/repository/archive.tar.gz?ref="
+                               "9ec08e82fe2cac94e776470afe1e6a6a59c79159"))
+           (file-name (string-append name "-seed" "-" version ".tar.xz"))
+           (sha256
+            (base32
+             "0liysc4gzsrmankfksd44wbr451sy3pf5c79y2bw74dcnjpx1df2"))))
+       ("mes-source" ,(package-source mes-boot))
+       ("mes-seed"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://gitlab.com/janneke/mes-seed"
+                               "/repository/archive.tar.gz?ref="
+                               "d53d5998666873a79fbd9b4f6742d11affa34b44"))
+           (file-name (string-append "mes-seed-0.11" ".tar.xz"))
+           (sha256
+            (base32
+             "00zk4vfxqjyy3x4s5bdx59zicfqvxyvsbb9mfs4zkwyka64flk34"))))))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((bash (assoc-ref %build-inputs "static-bash"))
+                (tar (assoc-ref %build-inputs "tar"))
+                (xz (assoc-ref %build-inputs "xz"))
+                (source (assoc-ref %build-inputs "source"))
+                (mescc-tools-seed (assoc-ref %build-inputs "mescc-tools-seed"))
+                (mes-seed (assoc-ref %build-inputs "mes-seed"))
+                (mes-source (assoc-ref %build-inputs "mes-source"))
+                (out (assoc-ref %outputs "out"))
+                (out/bin (string-append out "/bin")))
+           (setenv "PATH" (string-append bash "/bin:"
+                                         "../mescc-tools-seed:"
+                                         tar "/bin:"
+                                         xz "/bin"))
+           (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
+           (mkdir-p "source")
+           (system* "tar" "--strip=1" "-C" "source" "-xvf" source)
+           (mkdir-p "mescc-tools-seed")
+           (system* "tar" "--strip=1" "-C" "mescc-tools-seed" "-xvf" mescc-tools-seed)
+           (mkdir-p "mes-source")
+           (system* "tar" "--strip=1" "-C" "mes-source" "-xvf" mes-source)
+           (mkdir-p "mes-seed")
+           (system* "tar" "--strip=1" "-C" "mes-seed" "-xvf" mes-seed)
+           (chdir "source")
+           (zero? (system (string-append
+"set -ex;"
+"mkdir -p " out/bin ";"
+"M1 --LittleEndian --Architecture=1 -f ../mes-source/stage0/x86.M1 -f ../mescc-tools-seed/hex2.M1 > hex2.hex2;"
+"M1 --LittleEndian --Architecture=1 -f ../mes-source/stage0/x86.M1 -f ../mes-seed/crt1.M1 > crt1.hex2;"
+"M1 --LittleEndian --Architecture=1 -f ../mes-source/stage0/x86.M1 -f ../mes-seed/libc-mes+tcc.M1 > libc-mes+tcc.hex2;"
+
+"hex2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000 -f ../mes-source/stage0/elf32-header.hex2 -f crt1.hex2 -f libc-mes+tcc.hex2 -f hex2.hex2 -f ../mes-source/stage0/elf32-footer-single-main.hex2 > " out/bin "/hex2;"
+"chmod +x " out/bin "/hex2;"
+
+;; FIXME: MORTAL SIN HERE
+;; M1 cannot be bootstrapped yet
+"cp ../mescc-tools-seed/M1 " out/bin "/M1")))))))
+
+    (description
+     "Mescc-tools is a collection of tools for use in a full source
+bootstrapping process.  Currently consists of the M1 macro assembler and the
+hex2 linker.")
+    (home-page "https://github.com/oriansj/mescc-tools")
+    (license gpl3+))))
+
+
 (define-public nyacc
   (package
     (name "nyacc")
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com


[-- Attachment #4: 0003-gnu-Add-mes-boot.patch --]
[-- Type: text/x-patch, Size: 4700 bytes --]

From b7c5e34c0a2a298cb5f519249174d511f369a3c6 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 19 Nov 2017 22:55:41 +0100
Subject: [PATCH 3/3] gnu: Add mes-boot.

* gnu/packages/mes.scm (mes-boot): New variable.
---
 gnu/packages/mes.scm | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index ef4d4a486..8a33ce8a5 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -201,6 +201,83 @@ hex2 linker.")
     (home-page "https://github.com/oriansj/mescc-tools")
     (license gpl3+))))
 
+(define-public mes-boot
+ (let ((version "0.11")
+        (revision "0")
+        (commit "948dd793619ddd5d930deead082737d14db9674b"))
+  (package
+    (name "mes-boot")
+    (version (string-append version "-" revision "." (string-take commit 7)))
+    (synopsis "Scheme interpreter and C compiler for full source bootstrapping")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://gitlab.com/janneke/mes"
+                                  "/repository/archive.tar.gz?ref="
+                                  commit))
+              (file-name (string-append name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1hcfaapq0lg9achkc4565glcy9i23ln7azashi7ncsdv9jy72hmr"))))
+    (build-system trivial-build-system)
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (native-inputs
+     `(("static-bash" ,@(assoc-ref %bootstrap-inputs "bash"))
+       ("bash" ,(search-bootstrap-binary "bash" (%current-system)))
+       ("tar" ,(search-bootstrap-binary "tar" (%current-system)))
+       ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
+       ("mescc-tools" ,mescc-tools-boot)
+       ("nyacc-source" ,(package-source nyacc))
+       ("mes-seed"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://gitlab.com/janneke/mes-seed"
+                               "/repository/archive.tar.gz?ref="
+                               "d53d5998666873a79fbd9b4f6742d11affa34b44"))
+           (file-name (string-append "mes-seed-0.11" ".tar.xz"))
+           (sha256
+            (base32
+             "00zk4vfxqjyy3x4s5bdx59zicfqvxyvsbb9mfs4zkwyka64flk34"))))))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((bash (assoc-ref %build-inputs "static-bash"))
+                (mescc-tools (assoc-ref %build-inputs "mescc-tools"))
+                (tar (assoc-ref %build-inputs "tar"))
+                (xz (assoc-ref %build-inputs "xz"))
+                (source (assoc-ref %build-inputs "source"))
+                (mes-seed (assoc-ref %build-inputs "mes-seed"))
+                (out (assoc-ref %outputs "out"))
+                (out/bin (string-append out "/bin")))
+           (setenv "PATH" (string-append bash "/bin:"
+                                         mescc-tools "/bin:"
+                                         tar "/bin:"
+                                         xz "/bin"))
+           (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
+           (mkdir-p "source")
+           (system* "tar" "--strip=1" "-C" "source" "-xvf" source)
+           (mkdir-p "mes-seed")
+           (system* "tar" "--strip=1" "-C" "mes-seed" "-xvf" mes-seed)
+           (chdir "source")
+           (zero? (system (string-append
+"set -ex;"
+"mkdir -p " out/bin ";"
+"M1 --LittleEndian --Architecture=1 -f stage0/x86.M1 -f ../mes-seed/crt1.M1 > crt1.hex2;"
+"M1 --LittleEndian --Architecture=1 -f stage0/x86.M1 -f ../mes-seed/libc-mes.M1 > libc-mes.hex2;"
+"M1 --LittleEndian --Architecture=1 -f stage0/x86.M1 -f ../mes-seed/mes.M1 > mes.hex2;"
+"hex2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000 -f stage0/elf32-header.hex2 -f crt1.hex2 -f libc-mes.hex2 -f mes.hex2 -f stage0/elf32-footer-single-main.hex2 > " out/bin "/mes;"
+"chmod +x "  out/bin "/mes;"
+out/bin "/mes --version;")))))))
+    (description
+     "Mes [Maxwell Equations of Software] aims to create full source
+bootstrapping for GuixSD.  It consists of a mutual self-hosting [close to
+Guile-] Scheme interpreter prototype in C and a Nyacc-based C compiler in
+[Guile] Scheme.")
+      (home-page "https://gitlab.com/janneke/mes")
+      (license gpl3+))))
+
+;;;\f
 
 (define-public nyacc
   (package
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com


[-- Attachment #5: Type: text/plain, Size: 152 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] prototyping the full source bootstrap path
  2017-11-19 22:31 prototyping the full source bootstrap path Jan Nieuwenhuizen
@ 2017-11-20  9:20 ` Ludovic Courtès
  2017-11-20 11:42   ` [bootstrappable] " Ricardo Wurmus
  2017-11-20 18:48   ` Jan Nieuwenhuizen
  2017-11-20 12:45 ` [bootstrappable] " Orians, Jeremiah (DTMB)
  1 sibling, 2 replies; 17+ messages in thread
From: Ludovic Courtès @ 2017-11-20  9:20 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, bootstrappable

Heya Jan,

Jan Nieuwenhuizen <janneke@gnu.org> skribis:

> Now that MesCC starts to build TinyCC that starts to pass a large set of
> the mescc C tests, it's time to get walking the bootstrap path.

Woohoo!

> Attached*) is my initial attempt for the full source bootstrap path in
> GuixSD; to try it, do
>
>     ./pre-inst-env guix build mes-boot
>     ...
>     /gnu/store/lj7h0s33qghgk4zw2nb133riz7xhara9-mes-boot-0.11-0.948dd79/bin/mes --help
>
> The starting point is Jeremiah Orian's stage0 self hosting hex
> assembler.  The binary seed of our bootstrap is made explicit in an
> additional source download: stage0-seed (of ~400 bytes).  This binary
> that is identical with it's ASCII source can be considered "source".
>
> There are still many gaps in our full source bootstrap path to-be, I
> "filled" these by adding additional binary seeds: mescc-tools-seed and
> mes-seed.  We are working to remove these, that will take some time.
>
> The mes-boot package needs a lot more work and tinycc-boot, gcc-boot
> packages are still missing.

Sounds like a good start.

So the next steps in the dependency graph are:

  mes-boot -> mescc -> tinycc -> gcc@4.7 -> gcc

Do I get this right?

Also, AIUI, stage0 is i386-specific.  Thoughts on how we can eventually
support the other architectures Guix works on?

Thank you, and congrats on this milestone!

Ludo’.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-20  9:20 ` [bootstrappable] " Ludovic Courtès
@ 2017-11-20 11:42   ` Ricardo Wurmus
  2017-11-20 18:41     ` Jan Nieuwenhuizen
  2017-11-23 17:55     ` Jan Nieuwenhuizen
  2017-11-20 18:48   ` Jan Nieuwenhuizen
  1 sibling, 2 replies; 17+ messages in thread
From: Ricardo Wurmus @ 2017-11-20 11:42 UTC (permalink / raw)
  To: bootstrappable; +Cc: guix-devel


Ludovic Courtès <ludo@gnu.org> writes:

> So the next steps in the dependency graph are:
>
>   mes-boot -> mescc -> tinycc -> gcc@4.7 -> gcc
>
> Do I get this right?

It’s not clear yet.  An alternative approach is to try to build Guile
first by using mes as the bootstrap Scheme interpreter.

Also: I wonder if we can simplify these bootstrap packages in Guix, so
that they can be built with even fewer build-time features.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [bootstrappable] prototyping the full source bootstrap path
  2017-11-19 22:31 prototyping the full source bootstrap path Jan Nieuwenhuizen
  2017-11-20  9:20 ` [bootstrappable] " Ludovic Courtès
@ 2017-11-20 12:45 ` Orians, Jeremiah (DTMB)
  1 sibling, 0 replies; 17+ messages in thread
From: Orians, Jeremiah (DTMB) @ 2017-11-20 12:45 UTC (permalink / raw)
  To: bootstrappable@freelists.org, guix-devel@gnu.org

> Now that MesCC starts to build TinyCC that starts to pass a large set of the mescc C tests, it's time to get walking the bootstrap path.
> Attached*) is my initial attempt for the full source bootstrap path in GuixSD; to try it, do
Very nicely done Janneke


>The starting point is Jeremiah Orian's stage0 self hosting hex assembler.  The binary seed of our bootstrap is made explicit in an additional source
> download: stage0-seed (of ~400 bytes).  This binary that is identical with it's ASCII source can be considered "source".
:D

> There are still many gaps in our full source bootstrap path to-be, I "filled" these by adding additional binary seeds: mescc-tools-seed and 
> mes-seed.  We are working to remove these, that will take some time.
I'll try to schedule some time to hammer on these

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-20 11:42   ` [bootstrappable] " Ricardo Wurmus
@ 2017-11-20 18:41     ` Jan Nieuwenhuizen
  2017-11-20 18:48       ` Orians, Jeremiah (DTMB)
  2017-11-20 21:55       ` Ludovic Courtès
  2017-11-23 17:55     ` Jan Nieuwenhuizen
  1 sibling, 2 replies; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-20 18:41 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel, bootstrappable

Ricardo Wurmus writes:

> Ludovic Courtès <ludo@gnu.org> writes:
>
>> So the next steps in the dependency graph are:
>>
>>   mes-boot -> mescc -> tinycc -> gcc@4.7 -> gcc
>>
>> Do I get this right?

That has been my idea for a long time, yes...but it may not be feasible,
wise or most fun.  It may not be feasible because Mes Scheme is just
tooo slow.  We could look into fixing that, or try to avoid it by

> It’s not clear yet.  An alternative approach is to try to build Guile
> first by using mes as the bootstrap Scheme interpreter.

...yeah bootstrapping into to Guile Scheme early!  Something like

   mes-boot -> mescc -> mini-guile -> mescc+/guilecc -> gcc@4.7

That's a very tempting idea that Ricardo came up with in Berlin and we
even hacked quite a bit on this.  To be precise, we looked if Mes could
run ice-9/eval.scm.

One of the targets that had on my list for a long time is
libguile/eval.c.  Now I'm starting to wonder, what would be the fastest
path to a minimal Guile, and what would we need for that?  IIUC, Guile
does not run without at least some bits of libguile, such as
libguile/strings.c.  Thoughts?

> Also: I wonder if we can simplify these bootstrap packages in Guix, so
> that they can be built with even fewer build-time features.

Yeah, the mean reason to do it in Guix packages is that it becomes
impossible to cheat.  However, coding the bootstrap path in Guix means
that we depend on some form of Guile...hmm.

janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-20 18:41     ` Jan Nieuwenhuizen
@ 2017-11-20 18:48       ` Orians, Jeremiah (DTMB)
  2017-11-20 21:55       ` Ludovic Courtès
  1 sibling, 0 replies; 17+ messages in thread
From: Orians, Jeremiah (DTMB) @ 2017-11-20 18:48 UTC (permalink / raw)
  To: bootstrappable@freelists.org, Ricardo Wurmus; +Cc: guix-devel@gnu.org

> Yeah, the mean reason to do it in Guix packages is that it becomes impossible to cheat.  However, coding the bootstrap path in Guix 
> means that we depend on some form of Guile...hmm.
Easy to break, simply allow each piece to be able to be built using only a trivial shell script


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-20  9:20 ` [bootstrappable] " Ludovic Courtès
  2017-11-20 11:42   ` [bootstrappable] " Ricardo Wurmus
@ 2017-11-20 18:48   ` Jan Nieuwenhuizen
  2017-11-20 19:22     ` Gábor Boskovits
  1 sibling, 1 reply; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-20 18:48 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel, bootstrappable

Ludovic Courtès writes:

Hey Ludo'

> Also, AIUI, stage0 is i386-specific.  Thoughts on how we can eventually
> support the other architectures Guix works on?

I goofed ere.  Stage0 is mainly using a VM and it has a x86_64
prototype; no x86 yet.  Of course, creating the x86 hex0 is almost
trivial given that 64 bit has been done.

However, the main problem is the gap between hex0 and hex1, hex2.  We
just ignored this by prototyping hex2 and M2 in C.  hex2 and M2 are
architecture agnostic.

MesCC currently outputs M2, but only for x86.  I'm confident that if we
show that x86 works and if we consider it to be of value, then x86_64 is
just more work.  Other architectures...well, "just" more work ;-)

> Thank you, and congrats on this milestone!

Thanks!
janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-20 18:48   ` Jan Nieuwenhuizen
@ 2017-11-20 19:22     ` Gábor Boskovits
  0 siblings, 0 replies; 17+ messages in thread
From: Gábor Boskovits @ 2017-11-20 19:22 UTC (permalink / raw)
  To: bootstrappable; +Cc: Guix-devel

[-- Attachment #1: Type: text/plain, Size: 1357 bytes --]

We had a discussion about that on the irc channel, and it seems, that we
can make a boostrap path to another architecture by using a bootstrapped
toolchain and cross compiling. It is not very confortable, but I think we
can extend the list of bootstrappable software considerably by that.

2017-11-20 19:48 GMT+01:00 Jan Nieuwenhuizen <janneke@gnu.org>:

> Ludovic Courtès writes:
>
> Hey Ludo'
>
> > Also, AIUI, stage0 is i386-specific.  Thoughts on how we can eventually
> > support the other architectures Guix works on?
>
> I goofed ere.  Stage0 is mainly using a VM and it has a x86_64
> prototype; no x86 yet.  Of course, creating the x86 hex0 is almost
> trivial given that 64 bit has been done.
>
> However, the main problem is the gap between hex0 and hex1, hex2.  We
> just ignored this by prototyping hex2 and M2 in C.  hex2 and M2 are
> architecture agnostic.
>
> MesCC currently outputs M2, but only for x86.  I'm confident that if we
> show that x86 works and if we consider it to be of value, then x86_64 is
> just more work.  Other architectures...well, "just" more work ;-)
>
> > Thank you, and congrats on this milestone!
>
> Thanks!
> janneke
>
> --
> Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
> Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
>
>

[-- Attachment #2: Type: text/html, Size: 2080 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-20 18:41     ` Jan Nieuwenhuizen
  2017-11-20 18:48       ` Orians, Jeremiah (DTMB)
@ 2017-11-20 21:55       ` Ludovic Courtès
  2017-11-21 12:59         ` Orians, Jeremiah (DTMB)
  1 sibling, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2017-11-20 21:55 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, bootstrappable

Jan Nieuwenhuizen <janneke@gnu.org> skribis:

> Ricardo Wurmus writes:
>
>> Ludovic Courtès <ludo@gnu.org> writes:
>>
>>> So the next steps in the dependency graph are:
>>>
>>>   mes-boot -> mescc -> tinycc -> gcc@4.7 -> gcc
>>>
>>> Do I get this right?
>
> That has been my idea for a long time, yes...but it may not be feasible,
> wise or most fun.  It may not be feasible because Mes Scheme is just
> tooo slow.  We could look into fixing that, or try to avoid it by
>
>> It’s not clear yet.  An alternative approach is to try to build Guile
>> first by using mes as the bootstrap Scheme interpreter.
>
> ...yeah bootstrapping into to Guile Scheme early!  Something like
>
>    mes-boot -> mescc -> mini-guile -> mescc+/guilecc -> gcc@4.7

It wouldn’t really help in that mescc+/guilecc is just as capable as the
earlier mescc, no?

> That's a very tempting idea that Ricardo came up with in Berlin and we
> even hacked quite a bit on this.  To be precise, we looked if Mes could
> run ice-9/eval.scm.
>
> One of the targets that had on my list for a long time is
> libguile/eval.c.  Now I'm starting to wonder, what would be the fastest
> path to a minimal Guile, and what would we need for that?  IIUC, Guile
> does not run without at least some bits of libguile, such as
> libguile/strings.c.  Thoughts?

Indeed, Guile needs a C compiler.

In general, we need a C compiler early on… unless we have replacements
for Bash, Coreutils, etc. written in Guile or Mes, which would allow us
to strip bits of the tip of the DAG.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-20 21:55       ` Ludovic Courtès
@ 2017-11-21 12:59         ` Orians, Jeremiah (DTMB)
  2017-11-21 17:52           ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 17+ messages in thread
From: Orians, Jeremiah (DTMB) @ 2017-11-21 12:59 UTC (permalink / raw)
  To: bootstrappable@freelists.org, Jan Nieuwenhuizen; +Cc: guix-devel@gnu.org

> It wouldn’t really help in that mescc+/guilecc is just as capable as the earlier mescc, no?
There is however a real difference in terms of performance, guile is simply faster

> Indeed, Guile needs a C compiler.
Technically, it could be built from a lisp compiler

> In general, we need a C compiler early on… unless we have replacements for 
> Bash
Rain1 is working on that

> Coreutils, etc. written in Guile or Mes, which would allow us to strip bits of the tip of the DAG.
Actually we only need a core subset of coreutils that mescc can compile, which ironically is a small job should one use openbsd's core as a base

Essentially build from the stage0-seed to mescc, build the essentials only, then simply add pieces as we need them.

No need to make this any more complex than it already is.


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-21 12:59         ` Orians, Jeremiah (DTMB)
@ 2017-11-21 17:52           ` Jan Nieuwenhuizen
  2017-11-21 18:23             ` Orians, Jeremiah (DTMB)
  0 siblings, 1 reply; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-21 17:52 UTC (permalink / raw)
  To: Orians, Jeremiah (DTMB); +Cc: guix-devel@gnu.org, bootstrappable@freelists.org

Orians, Jeremiah (DTMB) writes:

>> It wouldn’t really help in that mescc+/guilecc is just as capable as the earlier mescc, no?
> There is however a real difference in terms of performance, guile is simply faster

Plus there is another angle on this.  MesCC, the bootstrap C compiler in
Scheme, is not a intended to be used beyond bootstrapping.  A C compiler
on top of Guile however, could be a very interesting project and could
easily target gcc; possibly attempt C++.  I may just be dreaming...

>> Indeed, Guile needs a C compiler.
> Technically, it could be built from a lisp compiler

Hmm, it's my understanding that Guile is pretty heavily tied to
libguile/*.c.  What makes you think that it's possible for Guile to run
without libguile/*.c?

janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-21 17:52           ` Jan Nieuwenhuizen
@ 2017-11-21 18:23             ` Orians, Jeremiah (DTMB)
  2017-11-23  4:56               ` Mark H Weaver
  0 siblings, 1 reply; 17+ messages in thread
From: Orians, Jeremiah (DTMB) @ 2017-11-21 18:23 UTC (permalink / raw)
  To: bootstrappable@freelists.org; +Cc: guix-devel@gnu.org

> Plus there is another angle on this.  MesCC, the bootstrap C compiler in Scheme, is not a intended to be used beyond bootstrapping. 
And probably will lose features over time not directly related to the act of bootstrapping itself

> A C compiler on top of Guile however, could be a very interesting project and could easily target gcc; possibly attempt C++.
Well mescc is well on its way to that

> I may just be dreaming...
I hope not

> Hmm, it's my understanding that Guile is pretty heavily tied to libguile/*.c.  What makes you think that it's possible for Guile to run
> without libguile/*.c?
https://wingolog.org/archives/2016/01/11/the-half-strap-self-hosting-and-guile

Specifically "The bootstrap C interpreter in libguile loads the Scheme compiler and builds eval.go from eval.scm"

Thus by simply having a scheme compiler able to compile eval.scm, we can skip the libguile/*.c Assuming I interpreted that situation correctly


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-21 18:23             ` Orians, Jeremiah (DTMB)
@ 2017-11-23  4:56               ` Mark H Weaver
  2017-11-27 12:42                 ` Orians, Jeremiah (DTMB)
  0 siblings, 1 reply; 17+ messages in thread
From: Mark H Weaver @ 2017-11-23  4:56 UTC (permalink / raw)
  To: Orians, Jeremiah (DTMB); +Cc: guix-devel, bootstrappable

Hi,

"Orians, Jeremiah (DTMB)" <OriansJ@michigan.gov> writes:

>> Hmm, it's my understanding that Guile is pretty heavily tied to
>> libguile/*.c.  What makes you think that it's possible for Guile to
>> run without libguile/*.c?
> https://wingolog.org/archives/2016/01/11/the-half-strap-self-hosting-and-guile
>
> Specifically "The bootstrap C interpreter in libguile loads the Scheme
> compiler and builds eval.go from eval.scm"
>
> Thus by simply having a scheme compiler able to compile eval.scm, we
> can skip the libguile/*.c  Assuming I interpreted that situation
> correctly

Jan is correct that Guile is still heavily tied to its C code.  It's
true that Guile's compiler is written in Scheme and that the C evaluator
is used only during bootstrapping, but the C bootstrap evaluator is only
a small piece of libguile.  The majority of libguile is still needed.
Notably, the entire runtime, the VM, and implementations of many data
structures and other libraries are written in C.

       Mark

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-20 11:42   ` [bootstrappable] " Ricardo Wurmus
  2017-11-20 18:41     ` Jan Nieuwenhuizen
@ 2017-11-23 17:55     ` Jan Nieuwenhuizen
  2017-11-23 22:12       ` Ricardo Wurmus
  1 sibling, 1 reply; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-23 17:55 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel, bootstrappable

[-- Attachment #1: Type: text/plain, Size: 1269 bytes --]

Ricardo Wurmus writes:

> Ludovic Courtès <ludo@gnu.org> writes:
>
>> So the next steps in the dependency graph are:
>>
>>   mes-boot -> mescc -> tinycc -> gcc@4.7 -> gcc
>>
>> Do I get this right?

Possibly: yes.

I have added tinycc-boot including tests.  I mean to refactor the
builders and just for fun add gcc-4.7.4 to this picture (see attached).

It's pretty exciting for me that I'm able to show a dependency diagram
generated by Guix of packages that build, that shows a compiler (tinycc)
that only depends on some much smaller seeds.

> Also: I wonder if we can simplify these bootstrap packages in Guix, so
> that they can be built with even fewer build-time features.

If you fetch branch wip-bootstrap from*) https://gitlab.com/janneke/guix
and run

    ./pre-inst-env guix graph --type=bag-with-origins tcc-boot > bag+origins.dot

you get a clear understanding of what Ricardo was saying: you'll find
the nice and clean attached image tucked away in the top right corner,
above an enormous cloud of dependencies...ugh!

Is there a way to use replace the guile-2.2.2 dependency with the static
bootstrap tarball guile-2.0.9?  That would already help a lot!

*) should i push this to savannah wip-bootstrap?

janneke


[-- Attachment #2: bootstrap.svg --]
[-- Type: application/octet-stream, Size: 36250 bytes --]

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
 -->
<!-- Title: Guix bag&#45;with&#45;origins Pages: 1 -->
<svg width="1878pt" height="620pt"
 viewBox="0.00 0.00 1877.93 620.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 616)">
<title>Guix bag&#45;with&#45;origins</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-616 1873.93,-616 1873.93,4 -4,4"/>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv -->
<g id="node1" class="node"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv</title>
<polygon fill="none" stroke="black" points="1111,-612 937,-612 937,-576 1111,-576 1111,-612"/>
<text text-anchor="middle" x="1024" y="-590.3" font-family="Helvetica,sans-Serif" font-size="14.00">tcc&#45;boot&#45;0.9.26&#45;0.c944601</text>
</g>
<!-- /gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv -->
<g id="node2" class="node"><title>/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv</title>
<polygon fill="none" stroke="black" points="144.5,-180 7.5,-180 7.5,-144 144.5,-144 144.5,-180"/>
<text text-anchor="middle" x="76" y="-158.3" font-family="Helvetica,sans-Serif" font-size="14.00">bootstrap&#45;binaries&#45;0</text>
</g>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv -->
<g id="edge1" class="edge"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv</title>
<path fill="none" stroke="#8b7765" d="M936.694,-590.02C689.062,-580.416 0,-545.226 0,-451 0,-451 0,-451 0,-305 0,-259.641 30.5166,-214.749 52.875,-187.946"/>
<polygon fill="#8b7765" stroke="#8b7765" points="55.6449,-190.093 59.5091,-180.228 50.3364,-185.53 55.6449,-190.093"/>
</g>
<!-- /gnu/store/inbwny51lgp3nz2h0jr6awz8axaal38y&#45;guile&#45;2.0.9.tar.xz.drv -->
<g id="node3" class="node"><title>/gnu/store/inbwny51lgp3nz2h0jr6awz8axaal38y&#45;guile&#45;2.0.9.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="1479,-468 1363,-468 1363,-432 1479,-432 1479,-468"/>
<text text-anchor="middle" x="1421" y="-446.3" font-family="Helvetica,sans-Serif" font-size="14.00">guile&#45;2.0.9.tar.xz</text>
</g>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/inbwny51lgp3nz2h0jr6awz8axaal38y&#45;guile&#45;2.0.9.tar.xz.drv -->
<g id="edge2" class="edge"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/inbwny51lgp3nz2h0jr6awz8axaal38y&#45;guile&#45;2.0.9.tar.xz.drv</title>
<path fill="none" stroke="#8b7765" d="M1111.2,-588.507C1231.8,-581.387 1437.3,-565.632 1460,-540 1476.35,-521.547 1461.32,-495.163 1445.42,-475.914"/>
<polygon fill="#8b7765" stroke="#8b7765" points="1447.85,-473.377 1438.64,-468.145 1442.58,-477.98 1447.85,-473.377"/>
</g>
<!-- /gnu/store/4k2223pfmgm0nn3jnd18l6zmngwki47b&#45;srfi&#45;43.scm.drv -->
<g id="node4" class="node"><title>/gnu/store/4k2223pfmgm0nn3jnd18l6zmngwki47b&#45;srfi&#45;43.scm.drv</title>
<ellipse fill="none" stroke="black" cx="1621" cy="-306" rx="248.856" ry="18"/>
<text text-anchor="middle" x="1621" y="-302.3" font-family="Times,serif" font-size="14.00">/gnu/store/4k2223pfmgm0nn3jnd18l6zmngwki47b&#45;srfi&#45;43.scm.drv</text>
</g>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/4k2223pfmgm0nn3jnd18l6zmngwki47b&#45;srfi&#45;43.scm.drv -->
<g id="edge3" class="edge"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/4k2223pfmgm0nn3jnd18l6zmngwki47b&#45;srfi&#45;43.scm.drv</title>
<path fill="none" stroke="#8b7765" d="M1111.08,-591.745C1225.53,-588.602 1418.98,-577.689 1478,-540 1554.93,-490.875 1596.98,-384.06 1613.14,-333.96"/>
<polygon fill="#8b7765" stroke="#8b7765" points="1616.56,-334.76 1616.2,-324.171 1609.87,-332.672 1616.56,-334.76"/>
</g>
<!-- /gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv -->
<g id="node5" class="node"><title>/gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv</title>
<polygon fill="none" stroke="black" points="920.5,-540 747.5,-540 747.5,-504 920.5,-504 920.5,-540"/>
<text text-anchor="middle" x="834" y="-518.3" font-family="Helvetica,sans-Serif" font-size="14.00">mes&#45;boot&#45;0.11&#45;0.e00044a</text>
</g>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv -->
<g id="edge4" class="edge"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv</title>
<path fill="none" stroke="#8b7765" d="M977.521,-575.876C951.085,-566.137 917.797,-553.872 889.936,-543.608"/>
<polygon fill="#8b7765" stroke="#8b7765" points="890.922,-540.241 880.328,-540.068 888.502,-546.81 890.922,-540.241"/>
</g>
<!-- /gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv -->
<g id="node6" class="node"><title>/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv</title>
<polygon fill="none" stroke="black" points="767,-468 559,-468 559,-432 767,-432 767,-468"/>
<text text-anchor="middle" x="663" y="-446.3" font-family="Helvetica,sans-Serif" font-size="14.00">mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004</text>
</g>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv -->
<g id="edge5" class="edge"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv</title>
<path fill="none" stroke="#8b7765" d="M936.763,-591.981C877.207,-587.798 798.454,-575.17 738,-540 711.984,-524.865 690.851,-497.211 677.727,-476.73"/>
<polygon fill="#8b7765" stroke="#8b7765" points="680.672,-474.839 672.437,-468.173 674.718,-478.52 680.672,-474.839"/>
</g>
<!-- /gnu/store/prdkds678hq0ms5bswxzh5hkjjix1aqh&#45;nyacc&#45;0.82.4&#45;0.44241a7.tar.xz.drv -->
<g id="node7" class="node"><title>/gnu/store/prdkds678hq0ms5bswxzh5hkjjix1aqh&#45;nyacc&#45;0.82.4&#45;0.44241a7.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="1237.5,-468 1038.5,-468 1038.5,-432 1237.5,-432 1237.5,-468"/>
<text text-anchor="middle" x="1138" y="-446.3" font-family="Helvetica,sans-Serif" font-size="14.00">nyacc&#45;0.82.4&#45;0.44241a7.tar.xz</text>
</g>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/prdkds678hq0ms5bswxzh5hkjjix1aqh&#45;nyacc&#45;0.82.4&#45;0.44241a7.tar.xz.drv -->
<g id="edge6" class="edge"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/prdkds678hq0ms5bswxzh5hkjjix1aqh&#45;nyacc&#45;0.82.4&#45;0.44241a7.tar.xz.drv</title>
<path fill="none" stroke="#8b7765" d="M1000.22,-575.787C977.891,-557.496 950.366,-527.969 968,-504 977.755,-490.741 1008.81,-479.342 1041.76,-470.55"/>
<polygon fill="#8b7765" stroke="#8b7765" points="1042.74,-473.911 1051.55,-468.023 1040.99,-467.133 1042.74,-473.911"/>
</g>
<!-- /gnu/store/ldva5w2d8flws520hdhc1ipbp1kjihzw&#45;tcc&#45;boot&#45;seed&#45;0.9.26&#45;0.c944601.tar.xz.drv -->
<g id="node8" class="node"><title>/gnu/store/ldva5w2d8flws520hdhc1ipbp1kjihzw&#45;tcc&#45;boot&#45;seed&#45;0.9.26&#45;0.c944601.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="1222.5,-540 977.5,-540 977.5,-504 1222.5,-504 1222.5,-540"/>
<text text-anchor="middle" x="1100" y="-518.3" font-family="Helvetica,sans-Serif" font-size="14.00">tcc&#45;boot&#45;seed&#45;0.9.26&#45;0.c944601.tar.xz</text>
</g>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/ldva5w2d8flws520hdhc1ipbp1kjihzw&#45;tcc&#45;boot&#45;seed&#45;0.9.26&#45;0.c944601.tar.xz.drv -->
<g id="edge7" class="edge"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/ldva5w2d8flws520hdhc1ipbp1kjihzw&#45;tcc&#45;boot&#45;seed&#45;0.9.26&#45;0.c944601.tar.xz.drv</title>
<path fill="none" stroke="#8b7765" d="M1042.79,-575.697C1052.17,-567.05 1063.68,-556.449 1073.91,-547.027"/>
<polygon fill="#8b7765" stroke="#8b7765" points="1076.45,-549.454 1081.43,-540.104 1071.7,-544.305 1076.45,-549.454"/>
</g>
<!-- /gnu/store/c279cafs29m73jlzznbmspbrn36a5hzw&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.tar.xz.drv -->
<g id="node9" class="node"><title>/gnu/store/c279cafs29m73jlzznbmspbrn36a5hzw&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="1451.5,-540 1240.5,-540 1240.5,-504 1451.5,-504 1451.5,-540"/>
<text text-anchor="middle" x="1346" y="-518.3" font-family="Helvetica,sans-Serif" font-size="14.00">tcc&#45;boot&#45;0.9.26&#45;0.c944601.tar.xz</text>
</g>
<!-- /gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/c279cafs29m73jlzznbmspbrn36a5hzw&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.tar.xz.drv -->
<g id="edge8" class="edge"><title>/gnu/store/77777f0qhb15hkqw8wdj3j6rq4yhmhkn&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.drv&#45;&gt;/gnu/store/c279cafs29m73jlzznbmspbrn36a5hzw&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.tar.xz.drv</title>
<path fill="none" stroke="#8b7765" d="M1102.36,-575.966C1149.29,-565.762 1209.09,-552.764 1257.69,-542.198"/>
<polygon fill="#8b7765" stroke="#8b7765" points="1258.54,-545.595 1267.57,-540.05 1257.05,-538.754 1258.54,-545.595"/>
</g>
<!-- /gnu/store/3p4gl806qs7723f57grmxpm9752f7gn5&#45;static&#45;binaries.tar.xz.drv -->
<g id="node10" class="node"><title>/gnu/store/3p4gl806qs7723f57grmxpm9752f7gn5&#45;static&#45;binaries.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="144.5,-108 7.5,-108 7.5,-72 144.5,-72 144.5,-108"/>
<text text-anchor="middle" x="76" y="-86.3" font-family="Helvetica,sans-Serif" font-size="14.00">static&#45;binaries.tar.xz</text>
</g>
<!-- /gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv&#45;&gt;/gnu/store/3p4gl806qs7723f57grmxpm9752f7gn5&#45;static&#45;binaries.tar.xz.drv -->
<g id="edge9" class="edge"><title>/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv&#45;&gt;/gnu/store/3p4gl806qs7723f57grmxpm9752f7gn5&#45;static&#45;binaries.tar.xz.drv</title>
<path fill="none" stroke="darkviolet" d="M76,-143.697C76,-135.983 76,-126.712 76,-118.112"/>
<polygon fill="darkviolet" stroke="darkviolet" points="79.5001,-118.104 76,-108.104 72.5001,-118.104 79.5001,-118.104"/>
</g>
<!-- /gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="node12" class="node"><title>/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<polygon fill="none" stroke="black" points="1138,-252 1058,-252 1058,-216 1138,-216 1138,-252"/>
<text text-anchor="middle" x="1098" y="-230.3" font-family="Helvetica,sans-Serif" font-size="14.00">guile&#45;2.2.2</text>
</g>
<!-- /gnu/store/inbwny51lgp3nz2h0jr6awz8axaal38y&#45;guile&#45;2.0.9.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge11" class="edge"><title>/gnu/store/inbwny51lgp3nz2h0jr6awz8axaal38y&#45;guile&#45;2.0.9.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="#00cdcd" d="M1415.25,-431.811C1403.19,-398.536 1372.01,-325.32 1320,-288 1269.16,-251.519 1196.57,-239.878 1148.41,-236.313"/>
<polygon fill="#00cdcd" stroke="#00cdcd" points="1148.42,-232.807 1138.22,-235.652 1147.97,-239.792 1148.42,-232.807"/>
</g>
<!-- /gnu/store/4k2223pfmgm0nn3jnd18l6zmngwki47b&#45;srfi&#45;43.scm.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge14" class="edge"><title>/gnu/store/4k2223pfmgm0nn3jnd18l6zmngwki47b&#45;srfi&#45;43.scm.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="darkseagreen" d="M1508.48,-289.94C1396.78,-274.989 1230.64,-252.753 1148.18,-241.716"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="1148.45,-238.221 1138.07,-240.363 1147.52,-245.159 1148.45,-238.221"/>
</g>
<!-- /gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv -->
<g id="edge15" class="edge"><title>/gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv</title>
<path fill="none" stroke="dimgrey" d="M747.417,-513.769C548.53,-495.997 76,-446.655 76,-379 76,-379 76,-379 76,-305 76,-264.996 76,-218.653 76,-190.08"/>
<polygon fill="dimgrey" stroke="dimgrey" points="79.5001,-190.049 76,-180.049 72.5001,-190.049 79.5001,-190.049"/>
</g>
<!-- /gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv -->
<g id="edge16" class="edge"><title>/gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv</title>
<path fill="none" stroke="dimgrey" d="M792.169,-503.876C768.584,-494.222 738.94,-482.087 714.001,-471.878"/>
<polygon fill="dimgrey" stroke="dimgrey" points="715.276,-468.618 704.695,-468.068 712.624,-475.096 715.276,-468.618"/>
</g>
<!-- /gnu/store/l3vm91ypqgp9cn3pqrbmd6pawik01aww&#45;nyacc&#45;0.82.4.tar.gz.drv -->
<g id="node14" class="node"><title>/gnu/store/l3vm91ypqgp9cn3pqrbmd6pawik01aww&#45;nyacc&#45;0.82.4.tar.gz.drv</title>
<polygon fill="none" stroke="black" points="1163.5,-324 1032.5,-324 1032.5,-288 1163.5,-288 1163.5,-324"/>
<text text-anchor="middle" x="1098" y="-302.3" font-family="Helvetica,sans-Serif" font-size="14.00">nyacc&#45;0.82.4.tar.gz</text>
</g>
<!-- /gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/l3vm91ypqgp9cn3pqrbmd6pawik01aww&#45;nyacc&#45;0.82.4.tar.gz.drv -->
<g id="edge17" class="edge"><title>/gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/l3vm91ypqgp9cn3pqrbmd6pawik01aww&#45;nyacc&#45;0.82.4.tar.gz.drv</title>
<path fill="none" stroke="dimgrey" d="M849.273,-503.749C884.078,-464.545 967.475,-371.271 983,-360 1000.58,-347.236 1021.73,-336.428 1041.06,-327.969"/>
<polygon fill="dimgrey" stroke="dimgrey" points="1042.55,-331.138 1050.39,-324.006 1039.82,-324.696 1042.55,-331.138"/>
</g>
<!-- /gnu/store/cvydcqg5qq8564hda2ih54zr1bsx5h5c&#45;mes&#45;seed&#45;0.11.tar.xz.drv -->
<g id="node15" class="node"><title>/gnu/store/cvydcqg5qq8564hda2ih54zr1bsx5h5c&#45;mes&#45;seed&#45;0.11.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="936,-396 792,-396 792,-360 936,-360 936,-396"/>
<text text-anchor="middle" x="864" y="-374.3" font-family="Helvetica,sans-Serif" font-size="14.00">mes&#45;seed&#45;0.11.tar.xz</text>
</g>
<!-- /gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/cvydcqg5qq8564hda2ih54zr1bsx5h5c&#45;mes&#45;seed&#45;0.11.tar.xz.drv -->
<g id="edge18" class="edge"><title>/gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/cvydcqg5qq8564hda2ih54zr1bsx5h5c&#45;mes&#45;seed&#45;0.11.tar.xz.drv</title>
<path fill="none" stroke="dimgrey" d="M837.619,-503.871C842.754,-479.564 852.207,-434.819 858.293,-406.013"/>
<polygon fill="dimgrey" stroke="dimgrey" points="861.726,-406.697 860.368,-396.189 854.877,-405.25 861.726,-406.697"/>
</g>
<!-- /gnu/store/jzyg1k9q4abad5ckc02laypnvkh3kf25&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz.drv -->
<g id="node16" class="node"><title>/gnu/store/jzyg1k9q4abad5ckc02laypnvkh3kf25&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="1201.5,-396 992.5,-396 992.5,-360 1201.5,-360 1201.5,-396"/>
<text text-anchor="middle" x="1097" y="-374.3" font-family="Helvetica,sans-Serif" font-size="14.00">mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz</text>
</g>
<!-- /gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/jzyg1k9q4abad5ckc02laypnvkh3kf25&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz.drv -->
<g id="edge19" class="edge"><title>/gnu/store/07f1bm5lxkxgh9mkfmgiv7ajc56n6xmc&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.drv&#45;&gt;/gnu/store/jzyg1k9q4abad5ckc02laypnvkh3kf25&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz.drv</title>
<path fill="none" stroke="dimgrey" d="M892.079,-503.897C919.007,-494.904 950.96,-482.681 978,-468 987.418,-462.887 1034.74,-426.92 1066.79,-402.304"/>
<polygon fill="dimgrey" stroke="dimgrey" points="1069.19,-404.877 1074.98,-396.007 1064.92,-399.327 1069.19,-404.877"/>
</g>
<!-- /gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv -->
<g id="edge20" class="edge"><title>/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv</title>
<path fill="none" stroke="darkseagreen" d="M558.835,-442.793C446.035,-435.005 274.042,-419.72 213,-396 126.561,-362.411 90.1262,-340.368 62,-252 55.5058,-231.596 59.9604,-207.565 65.5112,-189.619"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="68.8476,-190.679 68.738,-180.084 62.217,-188.435 68.8476,-190.679"/>
</g>
<!-- /gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/cvydcqg5qq8564hda2ih54zr1bsx5h5c&#45;mes&#45;seed&#45;0.11.tar.xz.drv -->
<g id="edge24" class="edge"><title>/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/cvydcqg5qq8564hda2ih54zr1bsx5h5c&#45;mes&#45;seed&#45;0.11.tar.xz.drv</title>
<path fill="none" stroke="darkseagreen" d="M711.913,-431.966C739.997,-422.185 775.455,-409.836 805.068,-399.524"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="806.575,-402.705 814.868,-396.111 804.273,-396.094 806.575,-402.705"/>
</g>
<!-- /gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/jzyg1k9q4abad5ckc02laypnvkh3kf25&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz.drv -->
<g id="edge23" class="edge"><title>/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/jzyg1k9q4abad5ckc02laypnvkh3kf25&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz.drv</title>
<path fill="none" stroke="darkseagreen" d="M767.23,-432.189C831.996,-421.743 915.322,-408.303 982.009,-397.547"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="982.828,-400.96 992.143,-395.912 981.713,-394.049 982.828,-400.96"/>
</g>
<!-- /gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv -->
<g id="node17" class="node"><title>/gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv</title>
<polygon fill="none" stroke="black" points="409.5,-396 222.5,-396 222.5,-360 409.5,-360 409.5,-396"/>
<text text-anchor="middle" x="316" y="-374.3" font-family="Helvetica,sans-Serif" font-size="14.00">stage0&#45;boot&#45;0.0.8&#45;0.14843ef</text>
</g>
<!-- /gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv -->
<g id="edge21" class="edge"><title>/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv</title>
<path fill="none" stroke="darkseagreen" d="M578.558,-431.966C527.767,-421.72 463.005,-408.655 410.51,-398.065"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="411.014,-394.597 400.52,-396.05 409.63,-401.458 411.014,-394.597"/>
</g>
<!-- /gnu/store/ask8wix1sxj4v9jfz3njfwrmd1ffddr8&#45;mescc&#45;tools&#45;boot&#45;seed&#45;0.2&#45;0.fbb9004.tar.xz.drv -->
<g id="node18" class="node"><title>/gnu/store/ask8wix1sxj4v9jfz3njfwrmd1ffddr8&#45;mescc&#45;tools&#45;boot&#45;seed&#45;0.2&#45;0.fbb9004.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="938,-324 660,-324 660,-288 938,-288 938,-324"/>
<text text-anchor="middle" x="799" y="-302.3" font-family="Helvetica,sans-Serif" font-size="14.00">mescc&#45;tools&#45;boot&#45;seed&#45;0.2&#45;0.fbb9004.tar.xz</text>
</g>
<!-- /gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/ask8wix1sxj4v9jfz3njfwrmd1ffddr8&#45;mescc&#45;tools&#45;boot&#45;seed&#45;0.2&#45;0.fbb9004.tar.xz.drv -->
<g id="edge22" class="edge"><title>/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/ask8wix1sxj4v9jfz3njfwrmd1ffddr8&#45;mescc&#45;tools&#45;boot&#45;seed&#45;0.2&#45;0.fbb9004.tar.xz.drv</title>
<path fill="none" stroke="darkseagreen" d="M590.425,-431.975C541.966,-417.177 491.719,-392.929 519,-360 528.701,-348.291 593.658,-335.605 658.563,-325.581"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="659.193,-329.025 668.551,-324.058 658.138,-322.105 659.193,-329.025"/>
</g>
<!-- /gnu/store/idyspj09y2az567qzyz0zhbyx5i4g883&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.tar.xz.drv -->
<g id="node19" class="node"><title>/gnu/store/idyspj09y2az567qzyz0zhbyx5i4g883&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="773.5,-396 528.5,-396 528.5,-360 773.5,-360 773.5,-396"/>
<text text-anchor="middle" x="651" y="-374.3" font-family="Helvetica,sans-Serif" font-size="14.00">mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.tar.xz</text>
</g>
<!-- /gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/idyspj09y2az567qzyz0zhbyx5i4g883&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.tar.xz.drv -->
<g id="edge25" class="edge"><title>/gnu/store/mmvqlqmj4fvfggc8is7phpzarrxjn0va&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.drv&#45;&gt;/gnu/store/idyspj09y2az567qzyz0zhbyx5i4g883&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.tar.xz.drv</title>
<path fill="none" stroke="darkseagreen" d="M660.034,-431.697C658.711,-423.983 657.122,-414.712 655.648,-406.112"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="659.072,-405.369 653.932,-396.104 652.172,-406.552 659.072,-405.369"/>
</g>
<!-- /gnu/store/prdkds678hq0ms5bswxzh5hkjjix1aqh&#45;nyacc&#45;0.82.4&#45;0.44241a7.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge36" class="edge"><title>/gnu/store/prdkds678hq0ms5bswxzh5hkjjix1aqh&#45;nyacc&#45;0.82.4&#45;0.44241a7.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="darkgoldenrod" d="M1174.03,-431.815C1187.92,-423.165 1202.3,-411.237 1210,-396 1217.22,-381.721 1212.26,-375.839 1210,-360 1205.29,-327.002 1209.53,-314.259 1189,-288 1178.08,-274.034 1162.38,-263.044 1147.08,-254.779"/>
<polygon fill="darkgoldenrod" stroke="darkgoldenrod" points="1148.66,-251.655 1138.16,-250.226 1145.47,-257.889 1148.66,-251.655"/>
</g>
<!-- /gnu/store/ldva5w2d8flws520hdhc1ipbp1kjihzw&#45;tcc&#45;boot&#45;seed&#45;0.9.26&#45;0.c944601.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge37" class="edge"><title>/gnu/store/ldva5w2d8flws520hdhc1ipbp1kjihzw&#45;tcc&#45;boot&#45;seed&#45;0.9.26&#45;0.c944601.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="magenta" d="M1197.97,-503.976C1216.82,-496.12 1234.32,-484.672 1246,-468 1275.35,-426.126 1283.61,-375.876 1212,-288 1195.77,-268.087 1170.37,-255.282 1147.66,-247.258"/>
<polygon fill="magenta" stroke="magenta" points="1148.72,-243.922 1138.13,-244.105 1146.53,-250.568 1148.72,-243.922"/>
</g>
<!-- /gnu/store/c279cafs29m73jlzznbmspbrn36a5hzw&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge38" class="edge"><title>/gnu/store/c279cafs29m73jlzznbmspbrn36a5hzw&#45;tcc&#45;boot&#45;0.9.26&#45;0.c944601.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="red" d="M1343.1,-503.836C1334.97,-460.977 1307.92,-348.38 1240,-288 1214.2,-265.068 1177.56,-251.721 1147.96,-244.158"/>
<polygon fill="red" stroke="red" points="1148.76,-240.75 1138.22,-241.809 1147.12,-247.555 1148.76,-240.75"/>
</g>
<!-- /gnu/store/af19ma2vm3qhvh3rw6cdivyp98s18bj3&#45;guile&#45;bootstrap&#45;2.0.drv -->
<g id="node11" class="node"><title>/gnu/store/af19ma2vm3qhvh3rw6cdivyp98s18bj3&#45;guile&#45;bootstrap&#45;2.0.drv</title>
<polygon fill="none" stroke="black" points="140.5,-36 11.5,-36 11.5,-0 140.5,-0 140.5,-36"/>
<text text-anchor="middle" x="76" y="-14.3" font-family="Helvetica,sans-Serif" font-size="14.00">guile&#45;bootstrap&#45;2.0</text>
</g>
<!-- /gnu/store/3p4gl806qs7723f57grmxpm9752f7gn5&#45;static&#45;binaries.tar.xz.drv&#45;&gt;/gnu/store/af19ma2vm3qhvh3rw6cdivyp98s18bj3&#45;guile&#45;bootstrap&#45;2.0.drv -->
<g id="edge10" class="edge"><title>/gnu/store/3p4gl806qs7723f57grmxpm9752f7gn5&#45;static&#45;binaries.tar.xz.drv&#45;&gt;/gnu/store/af19ma2vm3qhvh3rw6cdivyp98s18bj3&#45;guile&#45;bootstrap&#45;2.0.drv</title>
<path fill="none" stroke="red" d="M76,-71.6966C76,-63.9827 76,-54.7125 76,-46.1124"/>
<polygon fill="red" stroke="red" points="79.5001,-46.1043 76,-36.1043 72.5001,-46.1044 79.5001,-46.1043"/>
</g>
<!-- /gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv -->
<g id="edge12" class="edge"><title>/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv</title>
<path fill="none" stroke="darkgoldenrod" d="M1057.94,-230.256C905.509,-219.816 360.006,-182.452 154.804,-168.398"/>
<polygon fill="darkgoldenrod" stroke="darkgoldenrod" points="154.921,-164.897 144.706,-167.706 154.443,-171.881 154.921,-164.897"/>
</g>
<!-- *GNU buildsystem* -->
<g id="node13" class="node"><title>*GNU buildsystem*</title>
<ellipse fill="none" stroke="black" cx="1098" cy="-162" rx="83.6854" ry="18"/>
<text text-anchor="middle" x="1098" y="-158.3" font-family="Times,serif" font-size="14.00">*GNU buildsystem*</text>
</g>
<!-- /gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv&#45;&gt;*GNU buildsystem* -->
<g id="edge13" class="edge"><title>/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv&#45;&gt;*GNU buildsystem*</title>
<path fill="none" stroke="darkgoldenrod" d="M1098,-215.697C1098,-207.983 1098,-198.712 1098,-190.112"/>
<polygon fill="darkgoldenrod" stroke="darkgoldenrod" points="1101.5,-190.104 1098,-180.104 1094.5,-190.104 1101.5,-190.104"/>
</g>
<!-- /gnu/store/l3vm91ypqgp9cn3pqrbmd6pawik01aww&#45;nyacc&#45;0.82.4.tar.gz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge35" class="edge"><title>/gnu/store/l3vm91ypqgp9cn3pqrbmd6pawik01aww&#45;nyacc&#45;0.82.4.tar.gz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="darkseagreen" d="M1098,-287.697C1098,-279.983 1098,-270.712 1098,-262.112"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="1101.5,-262.104 1098,-252.104 1094.5,-262.104 1101.5,-262.104"/>
</g>
<!-- /gnu/store/cvydcqg5qq8564hda2ih54zr1bsx5h5c&#45;mes&#45;seed&#45;0.11.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge33" class="edge"><title>/gnu/store/cvydcqg5qq8564hda2ih54zr1bsx5h5c&#45;mes&#45;seed&#45;0.11.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="#00cdcd" d="M908.682,-359.905C930.86,-350.603 957.622,-338.117 980,-324 1001.08,-310.701 1003.25,-303.205 1023,-288 1036.27,-277.787 1051.27,-267.036 1064.35,-257.906"/>
<polygon fill="#00cdcd" stroke="#00cdcd" points="1066.41,-260.738 1072.63,-252.163 1062.42,-254.986 1066.41,-260.738"/>
</g>
<!-- /gnu/store/jzyg1k9q4abad5ckc02laypnvkh3kf25&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge32" class="edge"><title>/gnu/store/jzyg1k9q4abad5ckc02laypnvkh3kf25&#45;mes&#45;boot&#45;0.11&#45;0.e00044a.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="dimgrey" d="M1134.88,-359.909C1149.23,-351.332 1164.01,-339.433 1172,-324 1179.36,-309.792 1179.31,-302.231 1172,-288 1165.73,-275.791 1155.19,-265.766 1144.01,-257.848"/>
<polygon fill="dimgrey" stroke="dimgrey" points="1145.67,-254.754 1135.39,-252.202 1141.84,-260.61 1145.67,-254.754"/>
</g>
<!-- /gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv -->
<g id="edge26" class="edge"><title>/gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv&#45;&gt;/gnu/store/6wmyz3s372hhbv5kqlq5c93n3yg85y9q&#45;bootstrap&#45;binaries&#45;0.drv</title>
<path fill="none" stroke="dimgrey" d="M222.232,-367.339C190.58,-359.878 157.181,-346.81 133,-324 122.916,-314.488 97.1477,-232.959 83.9911,-189.705"/>
<polygon fill="dimgrey" stroke="dimgrey" points="87.3303,-188.655 81.0846,-180.097 80.6302,-190.682 87.3303,-188.655"/>
</g>
<!-- /gnu/store/mvcm7cdxn9hjwjn5nbwzla97l174wybz&#45;stage0&#45;boot&#45;seed&#45;0.0.8&#45;0.14843ef.tar.xz.drv -->
<g id="node20" class="node"><title>/gnu/store/mvcm7cdxn9hjwjn5nbwzla97l174wybz&#45;stage0&#45;boot&#45;seed&#45;0.0.8&#45;0.14843ef.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="641.5,-324 384.5,-324 384.5,-288 641.5,-288 641.5,-324"/>
<text text-anchor="middle" x="513" y="-302.3" font-family="Helvetica,sans-Serif" font-size="14.00">stage0&#45;boot&#45;seed&#45;0.0.8&#45;0.14843ef.tar.xz</text>
</g>
<!-- /gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv&#45;&gt;/gnu/store/mvcm7cdxn9hjwjn5nbwzla97l174wybz&#45;stage0&#45;boot&#45;seed&#45;0.0.8&#45;0.14843ef.tar.xz.drv -->
<g id="edge27" class="edge"><title>/gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv&#45;&gt;/gnu/store/mvcm7cdxn9hjwjn5nbwzla97l174wybz&#45;stage0&#45;boot&#45;seed&#45;0.0.8&#45;0.14843ef.tar.xz.drv</title>
<path fill="none" stroke="dimgrey" d="M363.94,-359.966C391.465,-350.185 426.217,-337.836 455.241,-327.524"/>
<polygon fill="dimgrey" stroke="dimgrey" points="456.594,-330.757 464.845,-324.111 454.251,-324.161 456.594,-330.757"/>
</g>
<!-- /gnu/store/fz55lm5qvqcpk63ndjnqihj43pc5as0n&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.tar.xz.drv -->
<g id="node21" class="node"><title>/gnu/store/fz55lm5qvqcpk63ndjnqihj43pc5as0n&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.tar.xz.drv</title>
<polygon fill="none" stroke="black" points="366,-324 142,-324 142,-288 366,-288 366,-324"/>
<text text-anchor="middle" x="254" y="-302.3" font-family="Helvetica,sans-Serif" font-size="14.00">stage0&#45;boot&#45;0.0.8&#45;0.14843ef.tar.xz</text>
</g>
<!-- /gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv&#45;&gt;/gnu/store/fz55lm5qvqcpk63ndjnqihj43pc5as0n&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.tar.xz.drv -->
<g id="edge28" class="edge"><title>/gnu/store/9xfmr1ignhfv26mrgl3dm6fkbf3jgqfg&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.drv&#45;&gt;/gnu/store/fz55lm5qvqcpk63ndjnqihj43pc5as0n&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.tar.xz.drv</title>
<path fill="none" stroke="dimgrey" d="M300.674,-359.697C293.241,-351.305 284.177,-341.07 276.02,-331.861"/>
<polygon fill="dimgrey" stroke="dimgrey" points="278.4,-329.27 269.15,-324.104 273.16,-333.911 278.4,-329.27"/>
</g>
<!-- /gnu/store/ask8wix1sxj4v9jfz3njfwrmd1ffddr8&#45;mescc&#45;tools&#45;boot&#45;seed&#45;0.2&#45;0.fbb9004.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge31" class="edge"><title>/gnu/store/ask8wix1sxj4v9jfz3njfwrmd1ffddr8&#45;mescc&#45;tools&#45;boot&#45;seed&#45;0.2&#45;0.fbb9004.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="#8b7765" d="M871.761,-287.966C926.308,-275.195 999.555,-258.047 1047.73,-246.768"/>
<polygon fill="#8b7765" stroke="#8b7765" points="1048.68,-250.142 1057.62,-244.454 1047.08,-243.326 1048.68,-250.142"/>
</g>
<!-- /gnu/store/idyspj09y2az567qzyz0zhbyx5i4g883&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge34" class="edge"><title>/gnu/store/idyspj09y2az567qzyz0zhbyx5i4g883&#45;mescc&#45;tools&#45;boot&#45;0.2&#45;0.fbb9004.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="darkseagreen" d="M766.366,-359.957C842.407,-348.102 930.848,-332.887 947,-324 966.017,-313.537 962.404,-300.708 980,-288 1000.7,-273.053 1026.28,-260.929 1048.33,-252.069"/>
<polygon fill="darkseagreen" stroke="darkseagreen" points="1049.81,-255.247 1057.86,-248.352 1047.27,-248.726 1049.81,-255.247"/>
</g>
<!-- /gnu/store/mvcm7cdxn9hjwjn5nbwzla97l174wybz&#45;stage0&#45;boot&#45;seed&#45;0.0.8&#45;0.14843ef.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge29" class="edge"><title>/gnu/store/mvcm7cdxn9hjwjn5nbwzla97l174wybz&#45;stage0&#45;boot&#45;seed&#45;0.0.8&#45;0.14843ef.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="#00cdcd" d="M641.547,-289.145C644.73,-288.759 647.885,-288.377 651,-288 794.966,-270.598 965.084,-250.577 1047.8,-240.877"/>
<polygon fill="#00cdcd" stroke="#00cdcd" points="1048.4,-244.33 1057.92,-239.69 1047.58,-237.378 1048.4,-244.33"/>
</g>
<!-- /gnu/store/fz55lm5qvqcpk63ndjnqihj43pc5as0n&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv -->
<g id="edge30" class="edge"><title>/gnu/store/fz55lm5qvqcpk63ndjnqihj43pc5as0n&#45;stage0&#45;boot&#45;0.0.8&#45;0.14843ef.tar.xz.drv&#45;&gt;/gnu/store/hgkklf1ysplq74msv30ivg0li22hllaz&#45;guile&#45;2.2.2.drv</title>
<path fill="none" stroke="magenta" d="M366.037,-288.992C369.055,-288.647 372.047,-288.315 375,-288 627.071,-261.083 930.059,-243.713 1047.8,-237.53"/>
<polygon fill="magenta" stroke="magenta" points="1048.14,-241.017 1057.94,-237 1047.77,-234.026 1048.14,-241.017"/>
</g>
</g>
</svg>

[-- Attachment #3: Type: text/plain, Size: 152 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-23 17:55     ` Jan Nieuwenhuizen
@ 2017-11-23 22:12       ` Ricardo Wurmus
  2017-11-25 10:51         ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 17+ messages in thread
From: Ricardo Wurmus @ 2017-11-23 22:12 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, bootstrappable


Hi janneke,

> Is there a way to use replace the guile-2.2.2 dependency with the static
> bootstrap tarball guile-2.0.9?  That would already help a lot!

You can override the “guile-for-build” in the GNU build system by
passing “#:guile ,my-guile” as an argument.

> *) should i push this to savannah wip-bootstrap?

Please do!

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-23 22:12       ` Ricardo Wurmus
@ 2017-11-25 10:51         ` Jan Nieuwenhuizen
  0 siblings, 0 replies; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-25 10:51 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel, bootstrappable

Ricardo Wurmus writes:

Hey Ricardo,
>> Is there a way to use replace the guile-2.2.2 dependency with the static
>> bootstrap tarball guile-2.0.9?  That would already help a lot!
>
> You can override the “guile-for-build” in the GNU build system by
> passing “#:guile ,my-guile” as an argument.

Thanks...but hmm.  I added this to all my packages (I think...I'm using the trivial build
system) and when i do

    ./pre-inst-env guix graph --type=bag-with-origins gcc-boot  | dot -Tsvg > bootstrap.svg

I still see our beautiful [almost-] full source bootstrap dependency
graph in the top right corner and a guile-2.2.2 dependency with the full
GNU build system cloud below it...

While this is not at all urgent, I do think you raised an important
concern here.  Could do with some more help :-)

>> *) should i push this to savannah wip-bootstrap?
>
> Please do!

Done!

Try something like

    git clone https://git.savannah.gnu.org/git/guix.git guix-bootstrap
    cd guix-bootstrap
    git checkout wip-bootstrap
    ./configure # your options here
    make && ./pre-inst-env guix build gcc-boot
    ./pre-inst-env guix graph --type=bag-with-origins gcc-boot\
        | dot -Tsvg > bootstrap.svg

This should fail with

    checking for the correct version of gmp.h... no
    configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
    Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
    their locations.  Source code for these libraries can be found at
    their respective hosting sites as well as at
    ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also

Note that mes-tcc also still fails some tests and that we run mescc on
Guile rather than on Mes because of severe Mes Scheme performance
issues.

Happy bootstrapping!
janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [bootstrappable] Re: prototyping the full source bootstrap path
  2017-11-23  4:56               ` Mark H Weaver
@ 2017-11-27 12:42                 ` Orians, Jeremiah (DTMB)
  0 siblings, 0 replies; 17+ messages in thread
From: Orians, Jeremiah (DTMB) @ 2017-11-27 12:42 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel@gnu.org, bootstrappable@freelists.org

> Jan is correct that Guile is still heavily tied to its C code.  It's true that Guile's compiler is written in Scheme and that
>  the C evaluator is used only during bootstrapping, but the C bootstrap evaluator is only a small piece of libguile. 
> The majority of libguile is still needed. Notably, the entire runtime, the VM, and implementations of many data
> structures and other libraries are written in C.

Thank you for correcting my mistaken assumption.

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2017-11-27 12:43 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-19 22:31 prototyping the full source bootstrap path Jan Nieuwenhuizen
2017-11-20  9:20 ` [bootstrappable] " Ludovic Courtès
2017-11-20 11:42   ` [bootstrappable] " Ricardo Wurmus
2017-11-20 18:41     ` Jan Nieuwenhuizen
2017-11-20 18:48       ` Orians, Jeremiah (DTMB)
2017-11-20 21:55       ` Ludovic Courtès
2017-11-21 12:59         ` Orians, Jeremiah (DTMB)
2017-11-21 17:52           ` Jan Nieuwenhuizen
2017-11-21 18:23             ` Orians, Jeremiah (DTMB)
2017-11-23  4:56               ` Mark H Weaver
2017-11-27 12:42                 ` Orians, Jeremiah (DTMB)
2017-11-23 17:55     ` Jan Nieuwenhuizen
2017-11-23 22:12       ` Ricardo Wurmus
2017-11-25 10:51         ` Jan Nieuwenhuizen
2017-11-20 18:48   ` Jan Nieuwenhuizen
2017-11-20 19:22     ` Gábor Boskovits
2017-11-20 12:45 ` [bootstrappable] " Orians, Jeremiah (DTMB)

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).