From e7f92411f9d81d8a4de44d886e0d5435e3d69686 Mon Sep 17 00:00:00 2001 From: TakeV Date: Mon, 4 Mar 2024 13:57:34 -0500 Subject: [PATCH] gnu: Add cyclone-bootstrap. * 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 070696d6ba..c933a33e3c 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -24,6 +24,7 @@ ;;; Copyright © 2023 Juliana Sims ;;; Copyright © 2023 Maxim Cournoyer ;;; Copyright © 2024 Skylar Hill +;;; Copyright © 2024 TakeV ;;; ;;; This file is part of GNU Guix. ;;; @@ -60,6 +61,7 @@ #: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) @@ -1254,3 +1256,42 @@ as well as light. The implementation is based on an ad-hoc Virtual 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))) +