[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#53878] [PATCH v6 14/24] gnu: chez-scheme: Use new style for Chez pa
From: |
Philip McGrath |
Subject: |
[bug#53878] [PATCH v6 14/24] gnu: chez-scheme: Use new style for Chez packages. |
Date: |
Sat, 26 Feb 2022 21:34:40 -0500 |
* gnu/packages/chez.scm (chez-configure, chez-make-flags): Use
G-expressions.
(chez-srfi)[arguments]: Use G-expressions, 'chez-configure', and
'chez-make-flags'.
(chez-web, chez-sockets)[native-inputs]: Remove labels.
[arguments]: Use G-expressions.
(chez-matchable, chez-irregex, chez-fmt, chez-mit,
chez-scmutils)[arguments]: Use G-expressions.
---
gnu/packages/chez.scm | 382 ++++++++++++++++++++++--------------------
1 file changed, 196 insertions(+), 186 deletions(-)
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 603fc4201e..4ee9711bb4 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -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 '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-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,78 @@ (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)
+ (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/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))))))
+ ;; 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/csv"
+ #$(package-version chez-scheme)
+ "-site/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 +667,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 +699,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 +730,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 +771,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 +804,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 v6 06/24] gnu: racket-minimal: Change inheritance to follow bootstrapping., (continued)
- [bug#53878] [PATCH v6 06/24] gnu: racket-minimal: Change inheritance to follow bootstrapping., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 08/24] gnu: racket-minimal: Add "debug" output., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 07/24] gnu: racket-minimal: Adjust indentation., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 09/24] gnu: configure-layer.rkt: Adjust indentation., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 10/24] gnu: racket-minimal: Separate from the Racket VM., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 11/24] gnu: racket: Move Chez bootfiles to (gnu packages chez)., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 12/24] gnu: chez: Add utilities for Chez machine types., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 13/24] gnu: racket: Add 'racket-vm-for-system'., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 15/24] gnu: chez-scheme: Use "lib/chez-scheme" for search path., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 15/24] gnu: chez-scheme: Use "lib/chez-scheme" for search path., Liliana Marie Prikler, 2022/02/27
- [bug#53878] [PATCH v6 14/24] gnu: chez-scheme: Use new style for Chez packages.,
Philip McGrath <=
- [bug#53878] [PATCH v6 16/24] gnu: chez-scheme: Use shared zlib and lz4., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 17/24] gnu: chez-scheme: Use new package style., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 20/24] gnu: chez-scheme: Explicitly package bootstrap bootfiles., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 21/24] gnu: chez-mit: Support chez-scheme-for-racket., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 18/24] gnu: Add stex., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 19/24] gnu: Add chez-nanopass., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 24/24] gnu: racket-vm-cs: Build with "--enable-scheme"., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 22/24] gnu: Add chez-scheme-for-racket., Philip McGrath, 2022/02/26
- [bug#53878] [PATCH v6 23/24] gnu: chez: Add 'chez-scheme-for-system'., Philip McGrath, 2022/02/26
[bug#53878] [PATCH v7 00/24] Update Racket to 8.4. Adjust Chez Scheme packages., Philip McGrath, 2022/02/27