Subject: [PATCH vREVISION 1/2] gnu: Add cyclone-bootstrap.

From: TakeV <[email-masked]>
Date: Wed, 6 Mar 2024 18:56:58 -0500

* gnu/packages/scheme.scm (cyclone-bootstrap): New variable.

Change-Id: I85d37ebc48882d4b830ef34851ae6d37ecf2e6e5
---
 gnu/packages/scheme.scm | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index ad06d7db06..e0151e954c 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -23,6 +23,7 @@
 ;;; Copyright © 2023 Andrew Whatson <[email-masked]>
 ;;; Copyright © 2023 Juliana Sims <[email-masked]>
 ;;; Copyright © 2023 Maxim Cournoyer <[email-masked]>
+;;; Copyright © 2024 TakeV <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -59,6 +60,7 @@ (define-module (gnu packages scheme)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages emacs)
@@ -1276,3 +1278,42 @@ (define-public stklos
 Machine.  STklos can also be compiled as a library and embedded in an
 application.")
     (license gpl2+)))
+
+;; Cyclone is self-hosted. To build it, we require the bootstrap compiler.
+(define cyclone-bootstrap
+  (package
+    (name "cyclone-bootstrap")
+    (version "0.36.0")
+    ;; TODO Use system's libtommath after
+    ;; https://github.com/justinethier/cyclone/issues/458 is resolved
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/justinethier/cyclone-bootstrap.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0fv0mnrn5shbx77383f4mbkvc4i9yyj1bjm3dfyhipnaqapbhqpi"))))
+    (inputs (list ck))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:phases #~(modify-phases %standard-phases
+                   (delete 'configure))
+      #:test-target "test"
+      #:make-flags #~(list "CC=gcc"
+                           (string-append "PREFIX="
+                                          #$output))))
+    (home-page "https://github.com/justinethier/cyclone-bootstrap")
+    (synopsis "Cyclone Scheme bootstrap compiler")
+    (description
+     "Cyclone Scheme is a brand-new, R7RS Scheme-to-C compiler that uses a
+variant of Cheney on the MTA to implement full tail recursion,
+continuations, and generational garbage collection.  This package uses
+intermediate code generated by compiling the Scheme source files to
+build and install Cyclone Scheme.  The compiler is self-hosting and
+cannot be built directly on a system without Cyclone binaries
+installed.")
+    (license expat)))
+

base-commit: 201f90f34f90242bb74baa5ca44bda6131b3a035
-- 
2.41.0