From: Philip McGrath <philip@philipmcgrath.com>
To: 55030@debbugs.gnu.org
Cc: "Ludovic Courtès" <ludo@gnu.org>,
"Philip McGrath" <philip@philipmcgrath.com>
Subject: [bug#55030] [PATCH v2 22/34] gnu: elm: Support 'elm reactor'.
Date: Wed, 18 May 2022 14:11:09 -0400 [thread overview]
Message-ID: <1a6669a4b3f0364cb0686e4ff70a0cdc44b53de6.1652890702.git.philip@philipmcgrath.com> (raw)
In-Reply-To: <cover.1652890702.git.philip@philipmcgrath.com>
* gnu/packages/elm.scm (elm): Rename to ...
(elm-sans-reactor): ... this new variable.
[synopsis, description]: Tweak.
(elm): New variable.
* guix/build-system/elm.scm (default-elm): Use elm-sans-reactor.
* doc/guix.texi (Build Systems)[elm-build-system]: Update accordingly.
---
doc/guix.texi | 7 ++--
gnu/packages/elm.scm | 75 +++++++++++++++++++++++++++++++++++++--
guix/build-system/elm.scm | 2 +-
3 files changed, 79 insertions(+), 5 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index d7bc7523cd..282cddf798 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -8724,7 +8724,7 @@ Build Systems
@samp{elm install}.
The build system adds an Elm compiler package to the set of inputs. The
-default compiler package (currently @code{elm}) can be overridden
+default compiler package (currently @code{elm-sans-reactor}) can be overridden
using the @code{#:elm} argument. Additionally, Elm packages needed by the
build system itself are added as implicit inputs if they are not already
present: to suppress this behavior, use the
@@ -8747,7 +8747,10 @@ Build Systems
Elm @dfn{projects} which declare @code{@{ "type": "package" @}} in their
@file{elm.json} files. Using @code{elm-build-system} to build Elm
@dfn{applications} (which declare @code{@{ "type": "application" @}}) is
-possible, but requires ad-hoc modifications to the build phases.
+possible, but requires ad-hoc modifications to the build phases. For
+an example, see the definition of
+the @code{elm} package itself (because the front-end for the
+@samp{elm reactor} command is an Elm application).
@item
Elm supports multiple versions of a package coexisting simultaneously under
diff --git a/gnu/packages/elm.scm b/gnu/packages/elm.scm
index 8f92eea041..d515d68e8f 100644
--- a/gnu/packages/elm.scm
+++ b/gnu/packages/elm.scm
@@ -40,9 +40,9 @@ (define-module (gnu packages elm)
;; `elm reactor` exit with a useful error message if they aren't there.
(define %reactor-root-base
"share/elm/reactor-")
-(define-public elm
+(define-public elm-sans-reactor
(package
- (name "elm")
+ (name "elm-sans-reactor")
(version "0.19.1")
(source
(origin
@@ -93,6 +93,77 @@ (define-public elm
ghc-vector
ghc-zip-archive))
(home-page "https://elm-lang.org")
+ (synopsis "Minimal variant of @command{elm}")
+ (description
+ "This package provides a version of the Elm compiler without support for
+the @command{elm reactor} development command.")
+ (license license:bsd-3)))
+
+(define-public elm
+ (package
+ (name "elm")
+ (version (package-version elm-sans-reactor))
+ (source (package-source elm-sans-reactor))
+ (native-inputs (list elm-sans-reactor))
+ (inputs (list elm-sans-reactor
+ elm-browser
+ elm-core
+ elm-html
+ elm-http
+ elm-json
+ elm-project-metadata-utils
+ elm-svg
+ elm-explorations-markdown))
+ (build-system elm-build-system)
+ (arguments
+ (list
+ #:modules
+ `((srfi srfi-26)
+ ,@%elm-default-modules)
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'stage)
+ (replace 'configure
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
+ (with-directory-excursion "reactor"
+ (patch-application-dependencies))))
+ (replace 'build
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
+ (with-directory-excursion "reactor"
+ (invoke (search-input-file (or native-inputs inputs)
+ "/bin/elm")
+ "make"
+ "--optimize"
+ "src/NotFound.elm"
+ "src/Errors.elm"
+ "src/Index.elm"))))
+ (replace 'install
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((out-dir #$output)
+ (bin-dir (string-append out-dir "/bin"))
+ (reactor-dir (string-append out-dir
+ "/"
+ #$%reactor-root-base
+ (getenv "GUIX_ELM_VERSION")))
+ (reactor-subdir (string-append reactor-dir "/_elm")))
+ ;; We can't use a symlink here because Haskell's
+ ;; `getExecutablePath` follows all symlinks.
+ ;; Guix can make it a hard link later.
+ (install-file (search-input-file inputs ;; NOT native-inputs
+ "/bin/elm")
+ bin-dir)
+ (install-file "reactor/assets/favicon.ico" reactor-dir)
+ (for-each (cut install-file <> reactor-subdir)
+ '("reactor/elm.js"
+ "reactor/assets/styles.css"
+ ;; TODO: these are source-code-pro v1.017 and
+ ;; source-sans-pro v1.050: there may be breaking
+ ;; changes in Guix's existing
+ ;; font-adobe-source-{code,sans}-pro packages
+ "reactor/assets/source-code-pro.ttf"
+ "reactor/assets/source-sans-pro.ttf")))))
+ (delete 'validate-compiled))))
+ (home-page "https://elm-lang.org")
(synopsis "Programming language for Web applications")
(description
"Elm is a statically-typed, purely-functional programming language for
diff --git a/guix/build-system/elm.scm b/guix/build-system/elm.scm
index 293bcbfb64..f5321f811b 100644
--- a/guix/build-system/elm.scm
+++ b/guix/build-system/elm.scm
@@ -101,7 +101,7 @@ (define (default-elm)
"Return the default Elm package for builds."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((elm (resolve-interface '(gnu packages elm))))
- (module-ref elm 'elm)))
+ (module-ref elm 'elm-sans-reactor)))
(define (default-elm-core)
"Return the default elm-core package."
--
2.32.0
next prev parent reply other threads:[~2022-05-18 18:16 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-19 23:27 [bug#55030] [PATCH 00/30] gnu: elm: Update to 0.19.1. Add build system & importer Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 01/30] gnu: elm-compiler: Update to 0.19.1 Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 02/30] gnu: elm: Rename package to match the command Philip McGrath
2022-05-01 20:22 ` [bug#55030] [PATCH 00/30] gnu: elm: Update to 0.19.1. Add build system & importer Ludovic Courtès
2022-05-01 21:27 ` Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 03/30] guix: Add elm-build-system and 'guix import elm' Philip McGrath
2022-05-01 20:35 ` [bug#55030] [PATCH 00/30] gnu: elm: Update to 0.19.1. Add build system & importer Ludovic Courtès
2022-05-01 22:03 ` Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 04/30] gnu: Add elm-core and elm-json Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 05/30] build-system/elm: Add implicit Elm inputs Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 06/30] gnu: Add elm-virtual-dom Philip McGrath
2022-05-01 20:37 ` [bug#55030] [PATCH 00/30] gnu: elm: Update to 0.19.1. Add build system & importer Ludovic Courtès
2022-05-01 22:17 ` Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 07/30] gnu: Add elm-html Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 08/30] gnu: Add elm-svg Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 09/30] gnu: Add elm-time Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 10/30] gnu: Add elm-url Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 11/30] gnu: Add elm-browser Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 12/30] gnu: Add elm-bytes Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 13/30] gnu: Add elm-file Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 14/30] gnu: Add elm-http Philip McGrath
2022-04-19 23:31 ` [bug#55030] [PATCH 15/30] gnu: Add elm-parser Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 16/30] gnu: Add elm-project-metadata-utils Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 17/30] gnu: Add elm-explorations-markdown Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 18/30] gnu: elm: Support 'elm reactor' Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 19/30] gnu: Add elm-todomvc Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 20/30] gnu: Add elm-debois-elm-dom Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 21/30] gnu: Add elm-random Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 22/30] gnu: Add elm-explorations-test Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 23/30] gnu: Add elm-danhandrea-elm-date-format Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 24/30] gnu: Add elm-danhandrea-elm-time-extra Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 25/30] gnu: Add elm-justinmimbs-date Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 26/30] gnu: Add elm-justinmimbs-time-extra Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 27/30] gnu: Add elm-myrho-elm-round Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 28/30] gnu: Add elm-ryannhg-date-format Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 29/30] gnu: Add elm-terezka-intervals Philip McGrath
2022-04-19 23:32 ` [bug#55030] [PATCH 30/30] gnu: Add elm-terezka-elm-charts Philip McGrath
2022-05-01 20:22 ` [bug#55030] [PATCH 00/30] gnu: elm: Update to 0.19.1. Add build system & importer Ludovic Courtès
2022-05-01 20:41 ` Ludovic Courtès
2022-05-01 22:22 ` Philip McGrath
2022-05-01 21:26 ` Philip McGrath
2022-05-08 21:34 ` Ludovic Courtès
2022-05-18 18:10 ` [bug#55030] [PATCH v2 00/34] " Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 01/34] gnu: elm-compiler: Update to 0.19.1 Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 02/34] gnu: elm: Rename package to match the command Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 03/34] guix: Add elm-build-system Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 04/34] gnu: Add elm-core and elm-json Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 05/34] build-system/elm: Add implicit Elm inputs Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 06/34] http-client: Accept '#:headers' in 'http-fetched/cached' Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 07/34] http-client: 'http-fetch/cached' converts strings to URIs Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 08/34] import: json: Accept '#:http-fetch' in 'json-fetch' Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 09/34] import: Add Elm importer Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 10/34] gnu: Add elm-virtual-dom Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 11/34] gnu: Add elm-html Philip McGrath
2022-05-18 18:10 ` [bug#55030] [PATCH v2 12/34] gnu: Add elm-svg Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 13/34] gnu: Add elm-time Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 14/34] gnu: Add elm-url Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 15/34] gnu: Add elm-browser Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 16/34] gnu: Add elm-bytes Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 17/34] gnu: Add elm-file Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 18/34] gnu: Add elm-http Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 19/34] gnu: Add elm-parser Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 20/34] gnu: Add elm-project-metadata-utils Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 21/34] gnu: Add elm-explorations-markdown Philip McGrath
2022-05-18 18:11 ` Philip McGrath [this message]
2022-05-18 18:11 ` [bug#55030] [PATCH v2 23/34] gnu: Add elm-todomvc Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 24/34] gnu: Add elm-debois-elm-dom Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 25/34] gnu: Add elm-random Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 26/34] gnu: Add elm-explorations-test Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 27/34] gnu: Add elm-danhandrea-elm-date-format Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 28/34] gnu: Add elm-danhandrea-elm-time-extra Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 29/34] gnu: Add elm-justinmimbs-date Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 30/34] gnu: Add elm-justinmimbs-time-extra Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 31/34] gnu: Add elm-myrho-elm-round Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 32/34] gnu: Add elm-ryannhg-date-format Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 33/34] gnu: Add elm-terezka-intervals Philip McGrath
2022-05-18 18:11 ` [bug#55030] [PATCH v2 34/34] gnu: Add elm-terezka-elm-charts Philip McGrath
2022-05-21 23:45 ` bug#55030: [PATCH 00/30] gnu: elm: Update to 0.19.1. Add build system & importer Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1a6669a4b3f0364cb0686e4ff70a0cdc44b53de6.1652890702.git.philip@philipmcgrath.com \
--to=philip@philipmcgrath.com \
--cc=55030@debbugs.gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).