[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
19/25: gnu: Add chez-nanopass.
From: |
guix-commits |
Subject: |
19/25: gnu: Add chez-nanopass. |
Date: |
Fri, 4 Mar 2022 17:54:15 -0500 (EST) |
lilyp pushed a commit to branch master
in repository guix.
commit 6bca38f2824c5f3bd3be7ee138a5d266cb96f91d
Author: Philip McGrath <philip@philipmcgrath.com>
AuthorDate: Sun Feb 27 16:29:15 2022 -0500
gnu: Add chez-nanopass.
* gnu/packages/chez.scm (nanopass): Rename to ...
(chez-nanopass-bootstrap): ... this new variable, and promote it from an
origin to a package.
(chez-nanopass): New variable.
(unpack-nanopass+stex): New variable using 'chez-nanopass-bootstrap'.
(chez-scheme-for-racket-bootstrap-bootfiles)
(chez-scheme)[native-inputs]: Add 'chez-nanopass-bootstrap'.
[arguments]<#:phases>: Adapt 'unpack-nanopass+stex' phase
to use the new variable.
* gnu/packages/racket.scm (racket-vm-cs): Likewise.
(make-unpack-nanopass+stex): Remove it.
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
---
gnu/packages/chez.scm | 122 +++++++++++++++++++++++++++++++++++++-----------
gnu/packages/racket.scm | 19 +-------
2 files changed, 98 insertions(+), 43 deletions(-)
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 6855195cfe..43d2c764f3 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -48,7 +48,8 @@
#:use-module (srfi srfi-1)
#:export (nix-system->chez-machine
chez-machine->nonthreaded
- chez-machine->threaded))
+ chez-machine->threaded
+ unpack-nanopass+stex))
(define (chez-machine->nonthreaded machine)
"Given a string MACHINE naming a Chez Scheme machine type, returns a string
@@ -159,6 +160,20 @@ If native threads are supported, the returned list will
include
;; Chez Scheme:
;;
+
+(define unpack-nanopass+stex
+ #~(begin
+ (copy-recursively
+ (dirname (search-input-file %build-inputs
+ "lib/chez-scheme/nanopass.ss"))
+ "nanopass"
+ #:keep-mtime? #t)
+ (mkdir-p "stex")
+ (with-output-to-file "stex/Mf-stex"
+ (lambda ()
+ ;; otherwise, it will try to download submodules
+ (display "# to placate ../configure")))))
+
(define-public chez-scheme
(package
(name "chez-scheme")
@@ -176,6 +191,9 @@ If native threads are supported, the returned list will
include
(file-name (git-file-name name version))
(snippet #~(begin
(use-modules (guix build utils))
+ ;; TODO: consider putting this in a (guix ...) or
+ ;; (guix build ...) module so it can be shared
+ ;; with the Racket origin without cyclic issues.
(for-each (lambda (dir)
(when (directory-exists? dir)
(delete-file-recursively dir)))
@@ -193,9 +211,7 @@ If native threads are supported, the returned list will
include
;; for X11 clipboard support in expeditor:
;; https://github.com/cisco/ChezScheme/issues/9#issuecomment-222057232
libx11))
- (native-inputs
- (list nanopass ; source only
- stex-bootstrap))
+ (native-inputs (list chez-nanopass-bootstrap stex-bootstrap))
(native-search-paths
(list (search-path-specification
(variable "CHEZSCHEMELIBDIRS")
@@ -215,14 +231,7 @@ If native threads are supported, the returned list will
include
#~(modify-phases %standard-phases
(add-after 'unpack 'unpack-nanopass+stex
(lambda args
- (copy-recursively #$nanopass
- "nanopass"
- #:keep-mtime? #t)
- (mkdir-p "stex")
- (with-output-to-file "stex/Mf-stex"
- (lambda ()
- ;; otherwise, it will try to download submodules
- (display "# to placate ../configure")))))
+ #$unpack-nanopass+stex))
;; NOTE: the custom Chez 'configure' script doesn't allow
;; unrecognized flags, such as those automatically added
;; by `gnu-build-system`.
@@ -317,7 +326,7 @@ and 32-bit PowerPC architectures.")
;; When updating, remember to also update %racket-version in racket.scm.
(source #f) ; avoid problematic cycle with racket.scm
(inputs `())
- (native-inputs (list racket-vm-bc))
+ (native-inputs (list chez-nanopass-bootstrap racket-vm-bc))
(build-system copy-build-system)
;; TODO: cross compilation
(arguments
@@ -336,10 +345,7 @@ and 32-bit PowerPC architectures.")
(chdir "racket/src/ChezScheme")))
(add-after 'chdir 'unpack-nanopass+stex
(lambda args
- (copy-recursively
- #$nanopass
- "nanopass"
- #:keep-mtime? #t)))
+ #$unpack-nanopass+stex))
(add-before 'install 'build
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(invoke (search-input-file (or native-inputs inputs)
@@ -502,15 +508,79 @@ User's Guix}, among other documents.")
(outputs '("out" "doc"))
(properties '())))
-(define-public nanopass
- (let ((version "1.9.2"))
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/nanopass/nanopass-framework-scheme")
- (commit (string-append "v" version))))
- (sha256 (base32 "16vjsik9rrzbabbhbxbaha51ppi3f9n8rk59pc6zdyffs0vziy4i"))
- (file-name (git-file-name "nanopass" version)))))
+(define-public chez-nanopass-bootstrap
+ (hidden-package
+ (package
+ (name "chez-nanopass")
+ (version "1.9.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nanopass/nanopass-framework-scheme")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "16vjsik9rrzbabbhbxbaha51ppi3f9n8rk59pc6zdyffs0vziy4i"))
+ (file-name (git-file-name "nanopass-framework-scheme" version))
+ (snippet
+ #~(begin
+ (use-modules (guix build utils))
+ (when (file-exists? "doc/user-guide.pdf")
+ (delete-file "doc/user-guide.pdf"))
+ (substitute* "doc/Makefile"
+ (("include ~/stex/Mf-stex")
+ "include $(STEXLIB)/Mf-stex"))))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan
+ #~`(("nanopass.ss" "lib/chez-scheme/")
+ ("nanopass" "lib/chez-scheme/"))))
+ (home-page "https://nanopass.org")
+ (synopsis "DSL for compiler development")
+ (description "The Nanopass framework is an embedded domain-specific
+language for writing compilers composed of several simple passes that
+operate over well-defined intermediate languages. The goal of this
+organization is both to simplify the understanding of each pass, because it
+is responsible for a single task, and to simplify the addition of new passes
+anywhere in the compiler. Nanopass reduces the boilerplate required to
+create compilers, making them easier to understand and maintain.")
+ (license expat))))
+
+(define-public chez-nanopass
+ (package/inherit chez-nanopass-bootstrap
+ (properties '())
+ ;; TODO: cross-compilation
+ (native-inputs (list chez-scheme stex))
+ (arguments
+ (substitute-keyword-arguments (package-arguments chez-nanopass-bootstrap)
+ ((#:install-plan base-plan)
+ #~`(("nanopass.so" "lib/chez-scheme/")
+ ("doc/user-guide.pdf" #$(string-append
+ "share/doc/"
+ (package-name this-package)
+ "-"
+ (package-version this-package)
+ "/"))
+ ,@#$base-plan))
+ ((#:phases base-phases #~%standard-phases)
+ #~(modify-phases #$base-phases
+ (add-before 'install 'compile-and-test
+ (lambda args
+ (invoke "scheme"
+ "--compile-imported-libraries"
+ "--program" "test-all.ss")))
+ (add-after 'compile-and-test 'build-doc
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
+ (with-directory-excursion "doc"
+ (invoke "make"
+ (string-append "Scheme="
+ (search-input-file
+ (or native-inputs inputs)
+ "/bin/scheme"))
+ (string-append "STEXLIB="
+ (search-input-directory
+ (or native-inputs inputs)
+ "/lib/stex"))))))))))))
;;
;; Other Chez packages:
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index c982a964ff..716f3f72a1 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -254,22 +254,6 @@
"--enable-origtree"
,(string-append "--prefix=" #$output "/opt/racket-vm")))
-(define (make-unpack-nanopass+stex)
- ;; Adapted from chez-scheme.
- ;; Thunked to avoid evaluating 'chez-scheme' too early.
- ;; TODO: Refactor enough to share this directly.
- #~(begin
- (copy-recursively
- #$nanopass
- "nanopass"
- #:keep-mtime? #t)
- (mkdir-p "stex")
- (with-output-to-file "stex/Mf-stex"
- (lambda ()
- ;; otherwise, it will try to download submodules
- (display "# to placate ../configure")))))
-
-
(define-public racket-vm-cgc
;; Eventually, it may make sense for some vm packages to not be hidden,
;; but this one is especially likely to remain hidden.
@@ -387,6 +371,7 @@ collector, 3M (``Moving Memory Manager'').")
(modify-inputs (package-native-inputs racket-vm-cgc)
(delete "libtool")
(prepend chez-scheme-for-racket-bootstrap-bootfiles
+ chez-nanopass-bootstrap
racket-vm-bc)))
(arguments
(substitute-keyword-arguments (package-arguments racket-vm-cgc)
@@ -395,7 +380,7 @@ collector, 3M (``Moving Memory Manager'').")
(add-after 'unpack 'unpack-nanopass+stex
(lambda args
(with-directory-excursion "racket/src/ChezScheme"
- #$(make-unpack-nanopass+stex))))
+ #$unpack-nanopass+stex)))
(add-after 'unpack-nanopass+stex 'unpack-bootfiles
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(with-directory-excursion "racket/src/ChezScheme"
- 08/25: gnu: racket-minimal: Add "debug" output., (continued)
- 08/25: gnu: racket-minimal: Add "debug" output., guix-commits, 2022/03/04
- 25/25: gnu: komikku: Update to 0.37.0., guix-commits, 2022/03/04
- 14/25: gnu: chez-scheme: Use new style for Chez packages., guix-commits, 2022/03/04
- 11/25: gnu: racket: Move Chez bootfiles to (gnu packages chez)., guix-commits, 2022/03/04
- 13/25: gnu: racket: Add 'racket-vm-for-system'., guix-commits, 2022/03/04
- 12/25: gnu: chez: Add utilities for Chez machine types., guix-commits, 2022/03/04
- 15/25: gnu: chez-scheme: Use "lib/chez-scheme" for search path., guix-commits, 2022/03/04
- 09/25: gnu: configure-layer.rkt: Adjust indentation., guix-commits, 2022/03/04
- 16/25: gnu: chez-scheme: Use shared zlib and lz4., guix-commits, 2022/03/04
- 23/25: gnu: chez: Add 'chez-scheme-for-system'., guix-commits, 2022/03/04
- 19/25: gnu: Add chez-nanopass.,
guix-commits <=
- 04/25: gnu: racket-minimal: Use new package style., guix-commits, 2022/03/04
- 06/25: gnu: racket-minimal: Change inheritance to follow bootstrapping., guix-commits, 2022/03/04
- 10/25: gnu: racket-minimal: Separate from the Racket VM., guix-commits, 2022/03/04
- 22/25: gnu: Add chez-scheme-for-racket., guix-commits, 2022/03/04
- 01/25: gnu: Use license prefix in (gnu packages racket)., guix-commits, 2022/03/04
- 02/25: gnu: racket: Update to 8.4., guix-commits, 2022/03/04
- 21/25: gnu: chez-mit: Support chez-scheme-for-racket., guix-commits, 2022/03/04
- 24/25: gnu: racket-vm-cs: Build with "--enable-scheme"., guix-commits, 2022/03/04
- 20/25: gnu: chez-scheme: Explicitly package bootstrap bootfiles., guix-commits, 2022/03/04
- 17/25: gnu: chez-scheme: Use new package style., guix-commits, 2022/03/04