[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#53878] [PATCH v5 13/22] gnu: chez-scheme: Use "lib/chez-scheme" for
From: |
Philip McGrath |
Subject: |
[bug#53878] [PATCH v5 13/22] gnu: chez-scheme: Use "lib/chez-scheme" for search path. |
Date: |
Sat, 26 Feb 2022 08:02:45 -0500 |
There does not seem to be any widely accepted standard path to use for
"CHEZSCHEMELIBDIRS". Using a path without a version number in it avoids
having to compute the actual path everywhere, which would be especially
unpleasant when support is added for the Racket variant of Chez Scheme,
which always has a different version number than upstream.
* gnu/packages/chez.scm (chez-scheme)[native-search-paths]: Change to
use "lib/chez-scheme" instead of "lib/csvX.Y.Z-site" for
"CHEZSCHEMELIBDIRS".
(chez-srfi, chez-web, chez-sockets, chez-matchable, chez-irregex,
chez-fmt, chez-mit, chez-scmutils): Update accordingly. Also, remove
input labels and use G-expressions.
---
gnu/packages/chez.scm | 382 +++++++++++++++++++++---------------------
1 file changed, 194 insertions(+), 188 deletions(-)
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 603fc4201e..0a84a07247 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -233,7 +233,7 @@ (define-public chez-scheme
(native-search-paths
(list (search-path-specification
(variable "CHEZSCHEMELIBDIRS")
- (files (list (string-append "lib/csv" version "-site"))))))
+ (files (list (string-append "lib/chez-scheme"))))))
(outputs '("out" "doc"))
(arguments
`(#:modules
@@ -443,6 +443,27 @@ (define-public chez-scheme-for-racket-bootstrap-bootfiles
;; Packages:
;;
+;; Help function for Chez Scheme to add the current path to
+;; CHEZSCHEMELIBDIRS.
+(define chez-configure
+ #~(lambda _
+ (let ((chez-env (getenv "CHEZSCHEMELIBDIRS")))
+ (setenv "CHEZSCHEMELIBDIRS"
+ (if chez-env
+ (string-append ".:" chez-env)
+ ".")))))
+
+;; Help function to define make flags for some Chez Scheme custom make
+;; files.
+(define (chez-make-flags name version)
+ #~(let ((out #$output))
+ (list
+ ;; Set 'schemedir' so that libraries are installed in
+ ;; 'lib/chez-scheme' like Chez's 'native-search-paths' expects.
+ (string-append "schemedir=" out "/lib/chez-scheme")
+ (string-append "PREFIX=" out)
+ (string-append "DOCDIR=" out "/share/doc/" #$name "-" #$version))))
+
(define-public chez-srfi
(package
(name "chez-srfi")
@@ -460,13 +481,11 @@ (define-public chez-srfi
(native-inputs
(list chez-scheme))
(arguments
- `(#:make-flags (let ((out (assoc-ref %outputs "out")))
- (list (string-append "PREFIX=" out)
- "CHEZ=chez-scheme --libdirs ./"
- (string-append "chezversion=" ,(package-version
chez-scheme))))
- #:test-target "test"
- #:phases (modify-phases %standard-phases
- (delete 'configure))))
+ (list #:make-flags (chez-make-flags name version)
+ #:test-target "test"
+ #:phases #~(modify-phases %standard-phases
+ (replace 'configure
+ #$chez-configure))))
(home-page "https://github.com/fedeinthemix/chez-srfi")
(synopsis "SRFI libraries for Chez Scheme")
(description
@@ -491,42 +510,48 @@ (define-public chez-web
(base32 "1dq25qygyncbfq4kwwqqgyyakfqjwhp5q23vrf3bff1p66nyfl3b"))))
(build-system gnu-build-system)
(native-inputs
- `(("chez-scheme" ,chez-scheme)
- ("ghostscript" ,ghostscript)
- ("texlive" ,(texlive-updmap.cfg (list texlive-oberdiek
- texlive-epsf
- texlive-metapost
- texlive-charter
- texlive-pdftex
- texlive-context
- texlive-cm
- texlive-tex-plain)))))
+ (list chez-scheme
+ ghostscript
+ ;; FIXME: This package fails to build with the error:
+ ;; mktexpk: don't know how to create bitmap font for bchr8r
+ ;; Replacing the following with `texlive` fixes it.
+ ;; What is missing?
+ (texlive-updmap.cfg (list texlive-oberdiek
+ texlive-epsf
+ texlive-metapost
+ texlive-charter
+ texlive-pdftex
+ texlive-context
+ texlive-cm
+ texlive-tex-plain))))
(arguments
- `(#:make-flags (list (string-append "PREFIX=" %output)
- (string-append "DOCDIR=" %output "/share/doc/"
- ,name "-" ,version)
- (string-append "LIBDIR=" %output "/lib/chezweb")
- (string-append "TEXDIR=" %output
"/share/texmf-local"))
- #:tests? #f ; no tests
- #:phases
- (modify-phases %standard-phases
- ;; This package has a custom "bootstrap" script that
- ;; is meant to be run from the Makefile.
- (delete 'bootstrap)
- (replace 'configure
- (lambda* _
- (copy-file "config.mk.template" "config.mk")
- (substitute* "tangleit"
- (("\\./cheztangle\\.ss" all)
- (string-append "chez-scheme --program " all)))
- (substitute* "weaveit"
- (("mpost chezweb\\.mp")
- "mpost --tex=tex chezweb.mp")
- (("\\./chezweave" all)
- (string-append "chez-scheme --program " all)))
- (substitute* "installit"
- (("-g \\$GROUP -o \\$OWNER") ""))
- #t)))))
+ (list
+ #:make-flags
+ #~(list (string-append "PREFIX=" #$output)
+ (string-append "DOCDIR=" #$output "/share/doc/"
+ #$name "-" #$version)
+ ;; lib/chez-scheme/chezweb ???
+ (string-append "LIBDIR=" #$output "/lib/chezweb")
+ (string-append "TEXDIR=" #$output "/share/texmf-local"))
+ #:tests? #f ; no tests
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; This package has a custom "bootstrap" script that
+ ;; is meant to be run from the Makefile.
+ (delete 'bootstrap)
+ (replace 'configure
+ (lambda* _
+ (copy-file "config.mk.template" "config.mk")
+ (substitute* "tangleit"
+ (("\\./cheztangle\\.ss" all)
+ (string-append "scheme --program " all)))
+ (substitute* "weaveit"
+ (("mpost chezweb\\.mp")
+ "mpost --tex=tex chezweb.mp")
+ (("\\./chezweave" all)
+ (string-append "scheme --program " all)))
+ (substitute* "installit"
+ (("-g \\$GROUP -o \\$OWNER") "")))))))
(home-page "https://github.com/arcfide/ChezWEB")
(synopsis "Hygienic Literate Programming for Chez Scheme")
(description "ChezWEB is a system for doing Knuthian style WEB
@@ -550,95 +575,74 @@ (define-public chez-sockets
(base32 "1n5fbwwz51fdzvjackgmnsgh363g9inyxv7kmzi0469cwavwcx5m"))))
(build-system gnu-build-system)
(native-inputs
- `(("chez-scheme" ,chez-scheme)
- ("chez-web" ,chez-web)
- ("texlive" ,(texlive-updmap.cfg (list texlive-pdftex)))))
+ (list chez-scheme
+ chez-web
+ (texlive-updmap.cfg (list texlive-pdftex))))
(arguments
- `(#:tests? #f ; no tests
- #:phases
- (modify-phases %standard-phases
- (replace 'configure
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (chez-web (assoc-ref inputs "chez-web"))
- (chez (assoc-ref inputs "chez-scheme"))
- (chez-h (dirname (car (find-files chez "scheme\\.h")))))
- (substitute* "Makefile"
- (("(SCHEMEH=).*$" all var)
- (string-append var chez-h)))
- #t)))
- (add-before 'build 'tangle
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "TEXINPUTS"
- (string-append
- (getcwd) ":"
- (assoc-ref inputs "chez-web")
"/share/texmf-local/tex/generic:"
- ":"))
- ;; just using "make" tries to build the .c files before
- ;; they are created.
- (and (invoke "make" "sockets")
- (invoke "make"))))
- (replace 'build
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (chez-site (string-append out "/lib/csv"
- ,(package-version chez-scheme)
- "-site/arcfide")))
- ;; make sure Chez Scheme can find the shared libraries.
- (substitute* "sockets.ss"
- (("(load-shared-object)
\"(socket-ffi-values\\.[sd][oy].*)\""
- all cmd so)
- (string-append cmd " \"" chez-site "/" so "\""))
- (("sockets-stub\\.[sd][oy].*" all)
- (string-append chez-site "/" all)))
- ;; to compile chez-sockets, the .so files must be
- ;; installed (because of the absolute path we
- ;; inserted above).
- (for-each (lambda (f d) (install-file f d))
- '("socket-ffi-values.so" "sockets-stub.so")
- (list chez-site chez-site))
- (zero? (system "echo '(compile-file \"sockets.sls\")' |
scheme -q")))))
- (replace 'install
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (lib (string-append out "/lib/chez-sockets"))
- (doc (string-append out "/share/doc/" ,name "-"
,version))
- (chez-site (string-append out "/lib/csv"
- ,(package-version chez-scheme)
- "-site/arcfide")))
- (for-each (lambda (f d) (install-file f d))
- '("sockets.pdf" "sockets.so")
- (list doc chez-site))
- #t))))))
+ (list
+ #:tests? #f ; no tests
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
+ (let* ((scheme (search-input-file (or native-inputs inputs)
+ "/bin/scheme"))
+ (lib (string-append (dirname scheme) "/../lib"))
+ (header-file (car (find-files lib "scheme\\.h")))
+ (include-dir (dirname header-file)))
+ (substitute* "Makefile"
+ (("(SCHEMEH=).*$" _ var)
+ (string-append var include-dir))))))
+ (add-before 'build 'tangle
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "TEXINPUTS"
+ (string-append
+ (getcwd) ":"
+ (assoc-ref inputs "chez-web")
+ "/share/texmf-local/tex/generic:"
+ ":"))
+ ;; just using "make" tries to build the .c files before
+ ;; they are created.
+ (and (invoke "make" "sockets")
+ (invoke "make"))))
+ (replace 'build
+ (lambda args
+ (let ((chez-site (string-append #$output
+ "/lib/chez-scheme/arcfide")))
+ ;; make sure Chez Scheme can find the shared libraries.
+ (substitute* "sockets.ss"
+ (("(object \")(socket-ffi-values\\.[sd][oy][^\"]*)(\")"
+ _ pre file post)
+ (string-append pre chez-site "/" file post))
+ (("(\")(sockets-stub\\.[sd][oy][^\"]*)(\")"
+ _ pre file post)
+ (string-append pre chez-site "/" file post)))
+ ;; to compile chez-sockets, the .so files must be
+ ;; installed (because of the absolute path we
+ ;; inserted above).
+ (for-each (lambda (f)
+ (install-file f chez-site))
+ '("socket-ffi-values.so"
+ "sockets-stub.so"))
+ (invoke "bash"
+ "-c"
+ (format #f "echo '~s' | scheme -q"
+ '(compile-file "sockets.sls"))))))
+ (replace 'install
+ (lambda args
+ (install-file "sockets.so"
+ (string-append #$output
+ "/lib/chez-scheme/arcfide"))
+ (install-file "sockets.pdf"
+ (string-append #$output
+ "/share/doc/"
+ #$name "-" #$version)))))))
(home-page "https://github.com/arcfide/chez-sockets")
(synopsis "Extensible sockets library for Chez Scheme")
(description "Chez-sockets is an extensible sockets library for
Chez Scheme.")
(license expat))))
-;; Help function for Chez Scheme to add the current path to
-;; CHEZSCHEMELIBDIRS.
-(define chez-configure
- '(lambda _
- (let ((chez-env (getenv "CHEZSCHEMELIBDIRS")))
- (setenv "CHEZSCHEMELIBDIRS"
- (if chez-env
- (string-append ".:" chez-env)
- "."))
- #t)))
-
-;; Help function to define make flags for some Chez Scheme custom make
-;; files.
-(define (chez-make-flags name version)
- `(let ((out (assoc-ref %outputs "out")))
- (list
- ;; Set 'chezversion' so that libraries are installed in
- ;; 'lib/csvX.Y.Z-site' like Chez's 'native-search-paths' expects.
- (string-append "chezversion=" ,(package-version chez-scheme))
- (string-append "PREFIX=" out)
- (string-append "DOCDIR=" out "/share/doc/"
- ,name "-" ,version))))
-
(define-public chez-matchable
(package
(name "chez-matchable")
@@ -659,10 +663,11 @@ (define-public chez-matchable
(native-inputs
(list chez-scheme))
(arguments
- `(#:make-flags ,(chez-make-flags name version)
- #:test-target "test"
- #:phases (modify-phases %standard-phases
- (replace 'configure ,chez-configure))))
+ (list #:make-flags (chez-make-flags name version)
+ #:test-target "test"
+ #:phases #~(modify-phases %standard-phases
+ (replace 'configure
+ #$chez-configure))))
(synopsis "Portable hygienic pattern matcher for Scheme")
(description "This package provides a superset of the popular Scheme
@code{match} package by Andrew Wright, written in fully portable
@@ -690,10 +695,11 @@ (define-public chez-irregex
(native-inputs
(list chez-scheme))
(arguments
- `(#:make-flags ,(chez-make-flags name version)
- #:test-target "test"
- #:phases (modify-phases %standard-phases
- (replace 'configure ,chez-configure))))
+ (list #:make-flags (chez-make-flags name version)
+ #:test-target "test"
+ #:phases #~(modify-phases %standard-phases
+ (replace 'configure
+ #$chez-configure))))
(home-page "https://github.com/fedeinthemix/chez-irregex")
(synopsis "Portable regular expression library for Scheme")
(description "This package provides a portable and efficient
@@ -720,17 +726,18 @@ (define-public chez-fmt
(native-inputs
(list chez-scheme))
(arguments
- `(#:make-flags ,(chez-make-flags name version)
- #:test-target "chez-check"
- #:phases
- (modify-phases %standard-phases
- (replace 'configure ,chez-configure)
- (replace 'build
- (lambda* (#:key (make-flags '()) #:allow-other-keys)
- (apply invoke "make" "chez-build" make-flags)))
- (replace 'install
- (lambda* (#:key (make-flags '()) #:allow-other-keys)
- (apply invoke "make" "chez-install" make-flags))))))
+ (list #:make-flags (chez-make-flags name version)
+ #:test-target "chez-check"
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'configure
+ #$chez-configure)
+ (replace 'build
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (apply invoke "make" "chez-build" make-flags)))
+ (replace 'install
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (apply invoke "make" "chez-install" make-flags))))))
(home-page "http://synthcode.com/scheme/fmt")
(synopsis "Combinator formatting library for Chez Scheme")
(description "This package provides a library of procedures for
@@ -760,10 +767,11 @@ (define-public chez-mit
(native-inputs
(list chez-scheme))
(arguments
- `(#:make-flags ,(chez-make-flags name version)
- #:test-target "test"
- #:phases (modify-phases %standard-phases
- (replace 'configure ,chez-configure))))
+ (list #:make-flags (chez-make-flags name version)
+ #:test-target "test"
+ #:phases #~(modify-phases %standard-phases
+ (replace 'configure
+ #$chez-configure))))
(synopsis "MIT/GNU Scheme compatibility library for Chez Scheme")
(description "This package provides a set of MIT/GNU Scheme compatibility
libraries for Chez Scheme. The main goal was to provide the functionality
@@ -792,46 +800,44 @@ (define-public chez-scmutils
(propagated-inputs
(list chez-mit chez-srfi))
(arguments
- `(#:make-flags ,(chez-make-flags name version)
- #:tests? #f ; no test suite
- #:phases
- (modify-phases %standard-phases
- (replace 'configure ,chez-configure)
- ;; Since the documentation is lacking, we install the source
- ;; code. For things to work correctly we have to replace
- ;; relative paths by absolute ones in 'include' forms. This
- ;; in turn requires us to compile the files in the final
- ;; destination.
- (delete 'build)
- (add-after 'install 'install-src
- (lambda* (#:key (make-flags '()) #:allow-other-keys)
- (apply invoke "make" "install-src" make-flags)))
- (add-after 'install-src 'absolute-path-in-scm-files
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (for-each (lambda (file)
- (substitute* file
- (("include +\"\\./scmutils")
- (string-append "include \"" (dirname file)))))
- (find-files out "\\.sls"))
- (for-each (lambda (file)
- (substitute* file
- (("include +\"\\./scmutils/simplify")
- (string-append "include \"" (dirname file)))))
- (find-files out "fbe-syntax\\.scm"))
- #t)))
- (add-after 'absolute-path-in-scm-files 'build
- (lambda* (#:key outputs (make-flags '()) #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (mk-file (car (find-files out "Makefile"))))
- (with-directory-excursion (dirname mk-file)
- (apply invoke "make" "build" make-flags)))))
- (add-after 'build 'clean-up
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out")))
- (for-each delete-file
- (find-files out "Makefile|compile-all\\.ss"))
- #t))))))
+ (list
+ #:make-flags (chez-make-flags name version)
+ #:tests? #f ; no test suite
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'configure
+ #$chez-configure)
+ ;; Since the documentation is lacking, we install the source
+ ;; code. For things to work correctly we have to replace
+ ;; relative paths by absolute ones in 'include' forms. This
+ ;; in turn requires us to compile the files in the final
+ ;; destination.
+ (delete 'build)
+ (add-after 'install 'install-src
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (apply invoke "make" "install-src" make-flags)))
+ (add-after 'install-src 'absolute-path-in-scm-files
+ (lambda* (#:key #:allow-other-keys)
+ (for-each (lambda (file)
+ (substitute* file
+ (("include +\"\\./scmutils")
+ (string-append "include \"" (dirname file)))))
+ (find-files #$output "\\.sls"))
+ (for-each (lambda (file)
+ (substitute* file
+ (("include +\"\\./scmutils/simplify")
+ (string-append "include \"" (dirname file)))))
+ (find-files #$output "fbe-syntax\\.scm"))))
+ (add-after 'absolute-path-in-scm-files 'build
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (let ((mk-file (car (find-files #$output "Makefile"))))
+ (with-directory-excursion (dirname mk-file)
+ (apply invoke "make" "build" make-flags)))))
+ (add-after 'build 'clean-up
+ (lambda args
+ (for-each delete-file
+ (find-files #$output
+ "Makefile|compile-all\\.ss")))))))
(synopsis "Port of MIT/GNU Scheme Scmutils to Chez Scheme")
(description "This package provides a port of the MIT/GNU Scheme
Scmutils program to Chez Scheme. The port consists of a set of
--
2.32.0
- [bug#53878] [PATCH v5 03/22] gnu: racket: Use Git origins for Racket packages., (continued)
- [bug#53878] [PATCH v5 03/22] gnu: racket: Use Git origins for Racket packages., Liliana Marie Prikler, 2022/02/26
- [bug#53878] [PATCH v5 08/22] gnu: make-installation-layer.rkt: Adjust indentation., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 04/22] gnu: racket-minimal: Use new package style., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 04/22] gnu: racket-minimal: Use new package style., Liliana Marie Prikler, 2022/02/26
- [bug#53878] [PATCH v5 04/22] gnu: racket-minimal: Use new package style., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 06/22] gnu: racket-minimal: Change inheritance to follow bootstrapping., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 06/22] gnu: racket-minimal: Change inheritance to follow bootstrapping., Liliana Marie Prikler, 2022/02/26
- [bug#53878] [PATCH v5 10/22] gnu: racket: Move Chez bootfiles to (gnu packages chez)., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 10/22] gnu: racket: Move Chez bootfiles to (gnu packages chez)., Liliana Marie Prikler, 2022/02/26
- [bug#53878] [PATCH v5 11/22] gnu: chez: Add utilities for Chez machine types., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 13/22] gnu: chez-scheme: Use "lib/chez-scheme" for search path.,
Philip McGrath <=
- [bug#53878] [PATCH v5 13/22] gnu: chez-scheme: Use "lib/chez-scheme" for search path., Liliana Marie Prikler, 2022/02/26
- [bug#53878] [PATCH v5 05/22] gnu: racket-minimal: Don't configure non-existant catalogs., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 07/22] gnu: racket-minimal: Add "debug" output., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 09/22] gnu: racket-minimal: Separate from the Racket VM., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 12/22] gnu: racket: Add 'racket-vm-for-system'., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 14/22] gnu: chez-scheme: Use shared zlib and lz4., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 15/22] gnu: chez-scheme: Use new package style., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 17/22] gnu: Add chez-nanopass., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 18/22] gnu: chez-scheme: Explicitly package bootstrap bootfiles., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v5 16/22] gnu: Add stex., Philip McGrath, 2022/02/26