gnu: chez-scheme: Use new style for Chez packages.

* 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.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
Philip McGrath 2022-02-27 16:29:10 -05:00 committed by Liliana Marie Prikler
parent 9b1bfc0ce9
commit 346d8b9a49
No known key found for this signature in database
GPG key ID: 442A84B8C70E2F87

View file

@ -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)
(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")))
;; 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))))))
;; 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