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 | |
| parent | working path append wrapper, add r6rs (diff) | |
gauche with path
Diffstat (limited to 'mcgoron/guix')
| -rw-r--r-- | mcgoron/guix/gauche.scm | 52 | ||||
| -rw-r--r-- | mcgoron/guix/scheme-packages.scm | 55 |
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))))) + |
