#| 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 . |# (use-modules (gnu packages guile) (guix build-system copy) (guix git-download) (guix packages) (guix gexp) (guix licenses)) (package (name "pffi-guile") (version "0.5.0") (synopsis "Portable Foreign Function Interface for R7RS") (description "Portable Foreign Function Interface for R7RS") (license lgpl3+) (home-page "https://sr.ht/~retropikzel/r7rs-pffi") (source (origin (method git-fetch) (uri (git-reference (url "https://git.sr.ht/~retropikzel/r7rs-pffi/") (commit "v0.5.0"))) (file-name (git-file-name "r7rs-pffi" version)) (sha256 (base32 "1ggkafggyqqla6ba8dlhzvvf6v7i6scpa2xyr1mfxxy8iwnl70aa")))) (build-system copy-build-system) (inputs (list guile-3.0)) (arguments (let* ((base-dir "share/guile/site/3.0/retropikzel/") (libdir (string-append base-dir "r7rs-pffi/"))) ;; Guile doesn't load sld files. It also won't load relative to the ;; site directory. `(#:phases (modify-phases %standard-phases (add-after 'unpack 'patch-paths (lambda* (#:key outputs #:allow-other-keys) (let* ((out (string-append (assoc-ref outputs "out") "/" ,libdir))) (substitute* '("retropikzel/r7rs-pffi.sld") (("\\(include \"r7rs-pffi") (string-append "(include \"" out))))))) #:install-plan '(("retropikzel/r7rs-pffi.sld" ,(string-append base-dir "r7rs-pffi.scm")) ("retropikzel/r7rs-pffi/guile.scm" ,libdir) ("retropikzel/r7rs-pffi/main.scm" ,libdir) ("retropikzel/r7rs-pffi/struct.scm" ,libdir))))))