From 149c6523780388c5374d7dc30b1b0f8eeafe3983 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Sat, 22 Oct 2016 10:58:32 +0200 Subject: [PATCH] gnu: Add chez-scmutils. * gnu/packages/chez.scm (chez-scmutils): New variable. --- gnu/packages/chez.scm | 66 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm index fc4bf69f0d..7d77cc30fe 100644 --- a/gnu/packages/chez.scm +++ b/gnu/packages/chez.scm @@ -498,3 +498,69 @@ strings.") libraries for Chez Scheme. The main goal was to provide the functionality required to port the program 'Scmutils' to Chez Scheme.") (license gpl3+))) + +(define-public chez-scmutils + (package + (name "chez-scmutils") + (version "0.1") + (home-page "https://github.com/fedeinthemix/chez-scmutils") + (source + (origin + (method url-fetch) + (uri (string-append home-page "/archive/v" version ".tar.gz")) + (sha256 + (base32 "1a5j61pggaiwl1gl6m038rcy5n8r2sj5nyjmz86jydx97mm5i8hj")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system gnu-build-system) + (inputs + `(("chez-srfi" ,chez-srfi))) ; for tests + (native-inputs + `(("chez-scheme" ,chez-scheme))) + (propagated-inputs + `(("chez-mit" ,chez-mit) + ("chez-srfi" ,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) + (zero? (apply system* "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) + (zero? (apply system* "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")))))))) + (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 +libraries providing most of the functionality of the original.") + (license gpl3+)))