Subject: [PATCH 0/3] RISC-V support to commencement until tcc-boot0

From: Ekaitz Zarraga <[email-masked]>
Date: Thu, 11 Jan 2024 17:37:13 +0100

I've been fixing this with Efraim, this is the second version.

From e4184bdf83dcba2df301ded15ff7d3d8a43eae36 Mon Sep 17 00:00:00 2001
Message-ID: <[email-masked]>
From: Ekaitz Zarraga <[email-masked]>
Date: Fri, 22 Dec 2023 14:05:33 +0100
Subject: [PATCH v2 1/3] gnu: stage0-posix: Update to 1.6.0

In 1.6.0 we have all the inputs merged in the tarball so we don't need
to add extra inputs in separate tarballs.

* gnu/packages/commencement (bootstrap-seeds): Remove it.
(stage0-posix): Update to 1.6.0 and take sub-packages from the tarball.

Change-Id: Ic025335ecc66acecbc0a928995a07e521aeb7742
---
 gnu/packages/commencement.scm | 120 +++++-----------------------------
 1 file changed, 16 insertions(+), 104 deletions(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 9124f0e2e0..ec93ddb51e 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2021 Chris Marusich <[email-masked]>
 ;;; Copyright © 2021 Julien Lepiller <[email-masked]>
 ;;; Copyright © 2022 Ricardo Wurmus <[email-masked]>
-;;; Copyright © 2022 Ekaitz Zarraga <[email-masked]>
+;;; Copyright © 2022, 2023 Ekaitz Zarraga <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -302,97 +302,24 @@ (define (%boot-gash-inputs)
     ("bootar" ,bootar)
     ("guile" ,%bootstrap-guile)))
 
-(define bootstrap-seeds
-  (package
-    (name "bootstrap-seeds")
-    (version "1.0.0")
-    (source (origin
-              (method url-fetch)
-              (uri (list
-                    (string-append "mirror://gnu/guix/mirror/"
-                                   "bootstrap-seeds-" version ".tar.gz")
-                    (string-append
-                     "https://lilypond.org/janneke/guix/20220501/"
-                     "bootstrap-seeds-" version ".tar.gz")))
-       (sha256
-        (base32
-         "0scz2bx8fd8c821h6y1j3x6ywgxxns7iinyn9z32dnkiacfdcpfn"))))
-    (native-inputs (list bootar))
-    (build-system trivial-build-system)
-    (arguments
-     (list #:guile %bootstrap-guile
-           #:modules '((guix build utils))
-           #:builder
-           #~(begin
-               (use-modules (guix build utils))
-               (let ((source #$(package-source this-package))
-                     (tar #$(this-package-native-input "bootar"))
-                     (out #$output))
-                 (setenv "PATH" (string-append tar "/bin:"))
-                 (invoke "tar" "xvf" source)
-                 (mkdir-p out)
-                 (copy-recursively "bootstrap-seeds" out)))))
-    (home-page "https://github.com/oriansj/bootstrap-seeds")
-    (synopsis "The initial bootstrap seeds: 357-byte hex0 and kaem shell")
-    (description
-     "This package provides pre-built binaries of the bootstrap seeds.  It
-contains a hex0-seed and an optional kaem-minimal shell.  The size of the hex0
-seeds are for knight: 250 bytes, x86-linux: 357 bytes, x86_64-linux: 431
-bytes, and aarch64-linux 526 bytes.  These can be used to build stage0: hex0,
-hex1, hex2, M1, and M2-Planet.")
-    (license license:gpl3+)))
-
 (define stage0-posix
   ;; The initial bootstrap package: no binary inputs except those from
   ;; `bootstrap-seeds, for x86 a 357 byte binary seed: `x86/hex0-seed'.
-  (let* ((mescc-tools-version "1.4.0")
-         (m2-planet-version "1.9.0")
-         (mescc-tools
-          (origin
-            (method url-fetch)
-            (uri (list
-                  (string-append
-                   "mirror://gnu/guix/mirror/"
-                   "mescc-tools-" mescc-tools-version ".tar.gz")
-                  (string-append
-                   "https://lilypond.org/janneke/guix/20220502/"
-                   "mescc-tools-" mescc-tools-version ".tar.gz")))
-            (sha256
-             (base32
-              "1xi6f48pf5bhajhfis189gpizxij7nbp1vzvsb1aafhz4skkiqvg"))))
-         (m2-planet
-          (origin
-            (method url-fetch)
-            (uri (list
-                  (string-append
-                   "mirror://gnu/guix/mirror/"
-                   "M2-Planet-" m2-planet-version ".tar.gz")
-                  (string-append
-                   "https://lilypond.org/janneke/guix/20220502/"
-                   "M2-Planet-" m2-planet-version ".tar.gz")))
-            (sha256
-             (base32
-              "1xrn69sc5nz4hwaishqyrcidp1ncxwib9zswl45x378ddz3mmk7g")))))
     (package
       (name "stage0-posix")
-      (version "1.4")
+      (version "1.6.0")
       (source (origin
                 (method url-fetch)
-                (uri (list
-                      (string-append "mirror://gnu/guix/mirror/"
-                                     "stage0-posix-" version ".tar.gz")
-                      (string-append
-                       "https://lilypond.org/janneke/guix/20220502/"
-                       "stage0-posix-" version ".tar.gz")))
+                (uri (string-append
+                       "https://github.com/oriansj/" name "/releases/download/"
+                       "Release_" version "/" name "-" version ".tar.gz"))
                 (sha256
-                 (base32
-                  "1ammifkj33205qrpfm84yb1c99lwgbn4jsl1hd08aab8c9ffz6p4"))))
+                  (base32
+                    "0p06wn95y6xbp2kcd81h2fm3wxvldd1qqyxgav0farl34xlzyq4j"))))
       (supported-systems '("i686-linux" "x86_64-linux"
                            "aarch64-linux"
                            "riscv64-linux"))
-      (native-inputs
-       `(("bootstrap-seeds" ,bootstrap-seeds)
-         ,@(%boot-gash-inputs)))
+      (native-inputs (%boot-gash-inputs))
       (build-system trivial-build-system)
       (arguments
        (list
@@ -401,9 +328,7 @@ (define stage0-posix
         #:builder
         #~(begin
             (use-modules (guix build utils))
-            (let* ((bootstrap-seeds #$(this-package-native-input
-                                       "bootstrap-seeds"))
-                   (source #$(package-source this-package))
+            (let* ((source #$(package-source this-package))
                    (tar #$(this-package-native-input "bootar"))
                    (bash #$(this-package-native-input "bash"))
                    (coreutils #$(this-package-native-input "coreutils"))
@@ -422,32 +347,19 @@ (define stage0-posix
                       "riscv64")
                      (else
                       (error "stage0-posix: system not supported" target))))
-                   (kaem (string-append "../bootstrap-seeds/POSIX/"
+                   (kaem (string-append "bootstrap-seeds/POSIX/"
                                         stage0-cpu "/kaem-optional-seed")))
               (setenv "PATH" (string-append tar "/bin:"
                                             coreutils "/bin:"
                                             bash "/bin"))
               (invoke "tar" "xvf" source)
               (chdir (string-append "stage0-posix-" #$version))
-              (copy-recursively bootstrap-seeds "bootstrap-seeds")
-              (invoke "tar" "xvf" #$mescc-tools)
-              (rmdir "mescc-tools")
-              (symlink (string-append "mescc-tools-" #$mescc-tools-version)
-                       "mescc-tools")
-              (invoke "tar" "xvf" #$m2-planet)
-              (rmdir "M2-Planet")
-              (symlink (string-append "M2-Planet-" #$m2-planet-version)
-                       "M2-Planet")
-              (rmdir "M2libc")
-              (symlink "M2-Planet/M2libc" "M2libc")
               (mkdir-p bindir)
-              (with-directory-excursion stage0-cpu
-                (with-output-to-file "mes-m2.kaem"
-                  (lambda _ (display "")))
-                (with-output-to-file "mescc-tools-extra.kaem"
-                  (lambda _ (display "")))
-                (invoke kaem "kaem.run"))
-              (with-directory-excursion "bin"
+              ;; Keep the same capitalization between the file name and the
+              ;; folder
+              (rename-file "kaem.aarch64" "kaem.AArch64")
+              (invoke kaem (string-append "kaem." stage0-cpu))
+              (with-directory-excursion (string-append stage0-cpu "/bin")
                 (install-file "hex2" bindir)
                 (install-file "M1" bindir)
                 (install-file "blood-elf" bindir)
@@ -460,7 +372,7 @@ (define stage0-posix
 the bootstrap-seeds, the stage0-posix package first builds hex0 and then all
 the way up: hex1, catm, hex2, M0, cc_x86, M1, M2, get_machine (that's all of
 MesCC-Tools), and finally M2-Planet.")
-      (license license:gpl3+))))
+      (license license:gpl3+)))
 
 (define mes-boot
   (package

base-commit: e8814809c2de6fe2f23169775207b3d2e537724f
-- 
2.41.0

From 1001b730e30942c71c148c2f6d08fae6cdef7972 Mon Sep 17 00:00:00 2001
Message-ID: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Ekaitz Zarraga <[email-masked]>
Date: Sun, 24 Dec 2023 20:30:02 +0100
Subject: [PATCH v2 2/3] gnu: mes-boot: Update to 0.25.1.

* gnu/packages/commencement.scm(mes-boot): Update to 0.25.1.
[supported-systems]: Add riscv64-linux

Change-Id: I262a8b6855e8c6528969d0c4b69a42cd2f477f2d
---
 gnu/packages/commencement.scm | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index ec93ddb51e..f526e04b06 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -57,6 +57,7 @@ (define-module (gnu packages commencement)
   #:use-module (gnu packages xml)
   #:use-module (guix gexp)
   #:use-module (guix packages)
+  #:use-module (guix platform)
   #:use-module ((guix store) #:select (%store-monad))
   #:use-module (guix monads)
   #:use-module (guix download)
@@ -374,11 +375,12 @@ (define stage0-posix
 MesCC-Tools), and finally M2-Planet.")
       (license license:gpl3+)))
 
+
 (define mes-boot
   (package
     (inherit mes)
     (name "mes-boot")
-    (version "0.24.2")
+    (version "0.25.1")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "mirror://gnu/mes/"
@@ -387,10 +389,10 @@ (define mes-boot
                                         "mes-" version ".tar.gz")))
               (sha256
                (base32
-                "0vp8v88zszh1imm3dvdfi3m8cywshdj7xcrsq4cgmss69s2y1nkx"))))
+                "03np6h4qx94givjdvq2rmhvab38y5f91254n0avg4vq2j0cx78in"))))
     (inputs '())
     (propagated-inputs '())
-    (supported-systems '("i686-linux" "x86_64-linux"))
+    (supported-systems '("i686-linux" "x86_64-linux" "riscv64-linux"))
     (native-inputs
      `(("m2-planet" ,stage0-posix)
        ("nyacc-source" ,(bootstrap-origin
@@ -419,9 +421,17 @@ (define mes-boot
                                            dir "/nyacc-1.00.2/module"))
                 (invoke "gash" "configure.sh"
                         (string-append "--prefix=" out)
-                        "--host=i686-linux-gnu"))))
+                        (string-append "--host="
+                          #$(cond
+                              ((target-x86-64?) "i686-linux-gnu")
+                              (#t (platform-system->target
+                                    (%current-system)))))))))
           (replace 'build
             (lambda _
+              ;; TODO: GUILE_LOAD_PATH is leaking. We need to clean it.
+              (substitute* "kaem.run"
+                (("cp bin/mes-m2 bin/mes" all)
+                 (string-append "GUILE_LOAD_PATH=/fubar\n" all)))
               (invoke "gash" "bootstrap.sh")))
           (delete 'check)
           (replace 'install
-- 
2.41.0

From e9c91d0eba095e165877c8bd22b8d341187815ee Mon Sep 17 00:00:00 2001
Message-ID: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Ekaitz Zarraga <[email-masked]>
Date: Sun, 24 Dec 2023 20:31:57 +0100
Subject: [PATCH v2 3/3] gnu: tcc-boot0: Update to 0.9.26-1149-g46a75d0c.

* gnu/packages/commencement.scm (tcc-boot0): Update to
  0.9.26-1149-g46a75d0c.
[supported-systems]: Add riscv64-linux.

Change-Id: I5de3e0a36366d57722e380edeedd389f3cf36f98
---
 gnu/packages/commencement.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index f526e04b06..a8f0961581 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -480,7 +480,7 @@ (define tcc-boot0
   (package
     (inherit tcc)
     (name "tcc-boot0")
-    (version "0.9.26-1136-g5bba73cc")
+    (version "0.9.26-1149-g46a75d0c")
     (source (origin
               (method url-fetch)
               (uri (list
@@ -490,9 +490,9 @@ (define tcc-boot0
                                    "tcc-" version ".tar.gz")))
               (sha256
                (base32
-                "1y2f04qwdqg7dgxiscbf0ibybx2gclniwbbcsxpayazzii2cvji3"))))
+                "068x3r55fnz7pdxb6q01s8s26pb4kpxm61q8mwsa4cf6389cxxpl"))))
     (build-system gnu-build-system)
-    (supported-systems '("i686-linux" "x86_64-linux"))
+    (supported-systems '("i686-linux" "x86_64-linux" "riscv64-linux"))
     (inputs '())
     (propagated-inputs '())
     (native-inputs
@@ -527,6 +527,7 @@ (define tcc-boot0
                 (setenv "prefix" out)
                 (setenv "GUILE_LOAD_PATH"
                         (string-append dir "/nyacc-1.00.2/module"))
+                (setenv "ONE_SOURCE" "true")
                 (invoke "sh" "configure"
                         "--cc=mescc"
                         (string-append "--prefix=" out)
-- 
2.41.0