diff options
| author | 2025-08-16 19:28:00 -0400 | |
|---|---|---|
| committer | 2025-08-16 19:28:00 -0400 | |
| commit | a8621d7c984f2eb963eded1e82e142a9e6e06d94 (patch) | |
| tree | 6bbd8373d3b0adfe9e5af364a98865b40f13f85f /mcgoron/guix/scheme-packages.scm | |
| parent | working path append wrapper, add r6rs (diff) | |
gauche with path
Diffstat (limited to '')
| -rw-r--r-- | mcgoron/guix/scheme-packages.scm | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/mcgoron/guix/scheme-packages.scm b/mcgoron/guix/scheme-packages.scm index 4959a34..d7ba866 100644 --- a/mcgoron/guix/scheme-packages.scm +++ b/mcgoron/guix/scheme-packages.scm @@ -15,6 +15,7 @@ |# (define-module (mcgoron guix scheme-packages) + #:use-module (rnrs base) #:use-module (guix packages) #:use-module (gnu packages) #:use-module (guix licenses) @@ -364,3 +365,57 @@ sh ,(append-to "SAGITTARIUS_LOADPATH" "GUIX_SAGITTARIUS_PATH" "R6RS_LIBRARY_PATH" "R7RS_LIBRARY_PATH") impl)))) + +;;;;;;;;;;;;;;;;;; +;;;; Gauche +;;;;;;;;;;;;;;;;;; + +(define (generate-gauche-library-information package) + (define gauche-abi-version + (let* ((version (string-split (package-version gauche) #\.)) + (major (string->number (car version))) + (minor (string->number (list-ref version 1))) + (patch (string->number (list-ref version 2)))) + (cond + ((and (= major 0) (= minor 9) (= patch 10)) + "0.97") + ((and (= major 0) (= minor 9) (> patch 11)) + "0.98") + (else (error 'gauche-abi-version "unknown gauche version: patch me!" + major minor patch))))) + (values gauche-abi-version + (string-append "share/gauche-" gauche-abi-version "/site/lib") + (string-append "lib/gauche-" gauche-abi-version "/site/x86_64-unknown-linux-gnu"))) + +(define-public gauche-build-system + (let-values (((_1 dir _2) (generate-gauche-library-information gauche))) + (default-copying-build-system 'gauche + "Library for pure Scheme gauche libraries" + dir))) + +(define-public gauche-with-path + (let-values (((abi-ver libpath dynlibpath) (generate-gauche-library-information gauche))) + (package/path gauche + "gauche" + "Gauche with Guix paths" + "Wrapper for Gauche that adds Guix-managed paths" + "/bin/gosh" + "/bin/gosh" + "GUIX_GAUCHE_PATH" + (list (search-path-specification + (variable "GUIX_GAUCHE_DYN_PATH") + (files (list dynlibpath))) + r7rs-search-path-specification) + libpath + `(lambda (sh impl) + (format #t + "#!~a + + ~a + ~a + exec -a $0 \"~a\" \"$@\"" + sh + ,(append-to "GAUCHE_LOAD_PATH" "GUIX_GAUCHE_PATH" "R7RS_LIBRARY_PATH") + ,(append-to "GAUCHE_DYNLOAD_PATH" "GUIX_GAUCHE_DYN_PATH") + impl))))) + |
