aboutsummaryrefslogtreecommitdiffstats
path: root/mcgoron/guix/scheme-packages.scm
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2025-08-16 19:28:00 -0400
committerGravatar Peter McGoron 2025-08-16 19:28:00 -0400
commita8621d7c984f2eb963eded1e82e142a9e6e06d94 (patch)
tree6bbd8373d3b0adfe9e5af364a98865b40f13f85f /mcgoron/guix/scheme-packages.scm
parentworking path append wrapper, add r6rs (diff)
gauche with path
Diffstat (limited to '')
-rw-r--r--mcgoron/guix/scheme-packages.scm55
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)))))
+