aboutsummaryrefslogtreecommitdiffstats
path: root/mcgoron/guix
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
parentworking path append wrapper, add r6rs (diff)
gauche with path
Diffstat (limited to 'mcgoron/guix')
-rw-r--r--mcgoron/guix/gauche.scm52
-rw-r--r--mcgoron/guix/scheme-packages.scm55
2 files changed, 55 insertions, 52 deletions
diff --git a/mcgoron/guix/gauche.scm b/mcgoron/guix/gauche.scm
deleted file mode 100644
index 099b6ec..0000000
--- a/mcgoron/guix/gauche.scm
+++ /dev/null
@@ -1,52 +0,0 @@
-#| Copyright (C) 2025 Peter McGoron
- |
- | This program is free software: you can redistribute it and/or modify it
- | under the terms of the GNU General Public License as published by the
- | Free Software Foundation, either version 3 of the License, or (at your
- | option) any later version.
- |
- | This program is distributed in the hope that it will be useful, but
- | WITHOUT ANY WARRANTY; without even the implied warranty of
- | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- | General Public License for more details.
- |
- | You should have received a copy of the GNU General Public License along
- | with this program. If not, see <https://www.gnu.org/licenses/>.
- |#
-
-(define-module (mcgoron guix gauche)
- #:use-module (guix packages)
- #:use-module (gnu packages scheme)
- #:use-module (guix gexp))
-
-(define-public 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)))))
-
-(define-public gauche-lib-dir
- (string-append "share/gauche-" gauche-abi-version "/site/lib"))
-
-;;; TODO: machine triple
-(define-public gauche-binlib-dir
- (string-append "lib/gauche-" gauche-abi-version "/site/x86_64-unknown-linux-gnu"))
-
-(define-public gauche-with-path
- (package
- (inherit gauche)
- (name "gauche-with-path")
- (native-search-paths
- (list (search-path-specification
- (variable "GAUCHE_LOAD_PATH")
- (files (list gauche-lib-dir)))
- (search-path-specification
- (variable "GAUCHE_DTNLOAD_PATH")
- (files (list gauche-lib-dir)))))))
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)))))
+