diff options
| author | AwesomeAdam54321 <adam.faiz@disroot.org> | 2025-11-01 23:02:08 +0800 |
|---|---|---|
| committer | Sharlatan Hellseher <sharlatanus@gmail.com> | 2026-02-27 09:50:00 +0000 |
| commit | 2372afa29586ac92a2e163a1136b7a77edbdc910 (patch) | |
| tree | ee32e081be0ac23722d5cc1b91566a230fc80d9d /gnu | |
| parent | 384aaf9bafdccfa3332dd9f0b913c1ed6a0b379c (diff) | |
gnu: Add ypsilon.
* gnu/packages/patches/ypsilon-Use-GNU-toolchain-as-default.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
Merges: https://codeberg.org/guix/guix/pulls/3994
Change-Id: I33a3ffd2ca1e5a3cd789cf9a1e50d8824a156404
Reviewed-by: Zhu Zihao <all_but_last@163.com>
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/local.mk | 1 | ||||
| -rw-r--r-- | gnu/packages/patches/ypsilon-Use-GNU-toolchain-as-default.patch | 62 | ||||
| -rw-r--r-- | gnu/packages/scheme.scm | 70 |
3 files changed, 133 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index eed6ddf1b72..60892e32e77 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2610,6 +2610,7 @@ dist_patch_DATA = \ %D%/packages/patches/xygrib-newer-proj.patch \ %D%/packages/patches/yajl-CVE-2023-33460.patch \ %D%/packages/patches/yggdrasil-extra-config.patch \ + %D%/packages/patches/ypsilon-Use-GNU-toolchain-as-default.patch \ %D%/packages/patches/zabbix-agent2-test-timezone-fix.patch \ %D%/packages/patches/zig-0.9-build-respect-PKG_CONFIG-env-var.patch \ %D%/packages/patches/zig-0.9-fix-runpath.patch \ diff --git a/gnu/packages/patches/ypsilon-Use-GNU-toolchain-as-default.patch b/gnu/packages/patches/ypsilon-Use-GNU-toolchain-as-default.patch new file mode 100644 index 00000000000..82a73fe2b81 --- /dev/null +++ b/gnu/packages/patches/ypsilon-Use-GNU-toolchain-as-default.patch @@ -0,0 +1,62 @@ +From bb45dc3a0ae24f383c401fa0a191c84797557391 Mon Sep 17 00:00:00 2001 +From: AwesomeAdam54321 <adam.faiz@disroot.org> +Date: Sat, 1 Nov 2025 20:00:21 +0800 +Subject: [PATCH] ypsilon: Use GNU toolchain as default. + +This is hacky, but it works. Ideally, the defaults should be adjusted +according to the configuration. +--- + CMakeLists.txt | 10 +++++----- + Makefile | 6 +++--- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4aa2a75..d495e3d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -23,12 +23,12 @@ include_directories(${LLVM_INCLUDE_DIRS}) + separate_arguments(LLVM_DEFINITIONS_LIST NATIVE_COMMAND ${LLVM_DEFINITIONS}) + add_definitions(${LLVM_DEFINITIONS_LIST}) + +-set(CMAKE_C_COMPILER "clang") +-set(CMAKE_CXX_COMPILER "clang++") ++set(CMAKE_C_COMPILER "gcc") ++set(CMAKE_CXX_COMPILER "g++") + +-if(NOT APPLE) +- add_link_options("-fuse-ld=lld") +-endif(NOT APPLE) ++#if(NOT APPLE) ++# add_link_options("-fuse-ld=lld") ++#endif(NOT APPLE) + + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto") + set(CMAKE_LINKER_FLAGS_RELEASE "${CMAKE_LINKER_FLAGS_RELEASE} -flto") +diff --git a/Makefile b/Makefile +index 09b7a50..dd2eb1b 100644 +--- a/Makefile ++++ b/Makefile +@@ -8,9 +8,9 @@ PREFIX = /usr/local + + CPPFLAGS = -DNDEBUG -DSYSTEM_SHARE_PATH='"$(DESTDIR)$(PREFIX)/share/$(PROG)"' -DSYSTEM_EXTENSION_PATH='"$(DESTDIR)$(PREFIX)/lib/$(PROG)"' + +-CXX = clang++ ++CXX = g++ + +-CXXFLAGS = `llvm-config --cxxflags` -fcxx-exceptions ++CXXFLAGS = `llvm-config --cxxflags` -fexceptions + + SRCS = file.cpp main.cpp object_heap_compact.cpp subr_flonum.cpp vm0.cpp vm1.cpp vm2.cpp vm3.cpp object_set.cpp \ + object_slab.cpp subr_list.cpp serialize.cpp vm3.cpp port.cpp subr_others.cpp arith.cpp printer.cpp \ +@@ -45,7 +45,7 @@ ifneq (,$(findstring Linux, $(UNAME))) + endif + endif + CXXFLAGS += -O3 -pthread -fomit-frame-pointer -momit-leaf-frame-pointer +- LDFLAGS = -fuse-ld=lld ++ #LDFLAGS = -fuse-ld=lld + LDLIBS = -Wl,--as-needed $(shell llvm-config --ldflags --system-libs --libs all) -pthread -Wl,--no-as-needed -ldl + endif + +-- +2.51.0 + diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 0b886ca61ee..fdeafdda1a8 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -55,6 +55,7 @@ #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system asdf) + #:use-module (guix build-system cmake) #:use-module (guix build-system copy) #:use-module (guix build-system emacs) #:use-module (guix build-system gnu) @@ -87,6 +88,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages lisp-check) #:use-module (gnu packages lisp-xyz) + #:use-module (gnu packages llvm) #:use-module (gnu packages m4) #:use-module (gnu packages man) #:use-module (gnu packages multiprecision) @@ -667,6 +669,74 @@ syntactic extensions. The resulting expression or program is then evaluated by an existing Scheme implementation.") (license license:expat)))) +(define-public ypsilon + (let ((commit "9982a834cd08bfa45e7db33b6a7b7d39c03f5632") + (revision "0")) + (package + (name "ypsilon") + (version "2.0.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fujita-y/ypsilon") + (commit commit))) + (sha256 + (base32 "199bggcdgww2c3r5fzlhzx7mdwl3l579skraar09bpjzp6kcxk1n")) + (patches (search-patches "ypsilon-Use-GNU-toolchain-as-default.patch")) + (file-name (git-file-name name version)))) + (build-system cmake-build-system) + (inputs (list llvm-15 libffi)) + (arguments + (list + #:out-of-source? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-asan + (lambda _ + (substitute* "CMakeLists.txt" + ;; TODO: Fix reported memory leak when rebuilding heap files + (("-fsanitize=address") "")))) + (add-after 'disable-asan 'disable-march + (lambda _ + (substitute* "Makefile" + (("-march=x86") "") + (("-march=x86-64") "")))) + (add-after 'disable-march 'fix-test-sitelib + (lambda _ + (substitute* "CMakeLists.txt" + (("--sitelib=./test:./sitelib") + "--sitelib=./source/test:./source/sitelib")) + (substitute* '("CMakeLists.txt" "test/r6rs-lib.scm") + (("./test/") "./source/test/")) + (substitute* "test/r4rstest.scm" + (("(current-directory )\"test\"" all _) + (string-append _ "\"source/test\""))))) + (add-before 'configure 'set-home + (lambda _ + (setenv "HOME" + (getcwd)))) + (add-after 'build 'rebuild-heap-files + (lambda _ + (substitute* "src/core.h" + (("(#define UNBOUND_GLOC_RETURN_UNSPEC )0" all _) + (string-append _ "1"))) + (with-directory-excursion "heap" + (invoke "make")) + (invoke "make") + (with-directory-excursion "heap" + (invoke "make")) + (substitute* "src/core.h" + (("(#define UNBOUND_GLOC_RETURN_UNSPEC )1" all _) + (string-append _ "0"))) + (invoke "make")))))) + (synopsis "R7RS/R6RS Scheme Implementation") + (description + "Ypsilon Scheme is an R7RS/R6RS Scheme implementation with +on-the-fly FFI and native stub code generation, making use of the LLVM.") + (home-page "https://github.com/fujita-y/ypsilon") + (license license:bsd-2)))) + (define-public scheme48-rx (let* ((commit "dd9037f6f9ea01019390614f6b126b7dd293798d") (revision "2")) |
