Archived
1
0
Fork 0

gnu: Add elm-todomvc.

* gnu/packages/elm.scm (elm-todomvc): New variable.
* doc/guix.texi (Build Systems)[elm-build-system]: Mention it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Philip McGrath 2022-05-18 14:11:10 -04:00 committed by Ludovic Courtès
parent 9885c2fd07
commit b6c0f18dee
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 55 additions and 2 deletions

View file

@ -8748,7 +8748,7 @@ Elm @dfn{projects} which declare @code{@{ "type": "package" @}} in their
@file{elm.json} files. Using @code{elm-build-system} to build Elm @file{elm.json} files. Using @code{elm-build-system} to build Elm
@dfn{applications} (which declare @code{@{ "type": "application" @}}) is @dfn{applications} (which declare @code{@{ "type": "application" @}}) is
possible, but requires ad-hoc modifications to the build phases. For possible, but requires ad-hoc modifications to the build phases. For
an example, see the definition of examples, see the definitions of the @code{elm-todomvc} example application and
the @code{elm} package itself (because the front-end for the the @code{elm} package itself (because the front-end for the
@samp{elm reactor} command is an Elm application). @samp{elm reactor} command is an Elm application).
@ -8757,7 +8757,7 @@ Elm supports multiple versions of a package coexisting simultaneously under
@env{ELM_HOME}, but this does not yet work well with @code{elm-build-system}. @env{ELM_HOME}, but this does not yet work well with @code{elm-build-system}.
This limitation primarily affects Elm applications, because they specify This limitation primarily affects Elm applications, because they specify
exact versions for their dependencies, whereas Elm packages specify supported exact versions for their dependencies, whereas Elm packages specify supported
version ranges. As a workaround, you can use version ranges. As a workaround, the example applications mentioned above use
the @code{patch-application-dependencies} procedure provided by the @code{patch-application-dependencies} procedure provided by
@code{(guix build elm-build-system)} to rewrite their @file{elm.json} files to @code{(guix build elm-build-system)} to rewrite their @file{elm.json} files to
refer to the package versions actually present in the build environment. refer to the package versions actually present in the build environment.

View file

@ -487,3 +487,56 @@ you.")
on the @code{marked} project, which focuses on speed.") on the @code{marked} project, which focuses on speed.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public elm-todomvc
(let ((commit "f236e7e56941c7705aba6e42cb020ff515fe3290")
(revision "1"))
(package
(name "elm-todomvc")
(version (git-version "1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/evancz/elm-todomvc")
(commit commit)))
(sha256
(base32 "0g37bglzshkf79s4n7aq9ib44h5qn8ng7n72sh2xslgd20h05nfw"))
(file-name (git-file-name name version))))
(inputs (list elm-browser elm-core elm-html elm-json))
(build-system elm-build-system)
(arguments
(list
#:modules
`((srfi srfi-26)
,@%elm-default-modules)
#:phases
#~(modify-phases %standard-phases
(delete 'stage)
(replace 'configure
patch-application-dependencies)
(replace 'build
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(invoke (search-input-file (or native-inputs inputs)
"/bin/elm")
"make"
"src/Main.elm"
"--output=elm.js")))
(replace 'install
(lambda args
(let* ((out-dir #$output)
(dest-dir
(string-append out-dir
"/share/"
(strip-store-file-name out-dir))))
(for-each (cut install-file <> dest-dir)
`("elm.js"
"index.html"
"style.css"
"README.md")))))
(delete 'validate-compiled))))
(home-page "https://github.com/evancz/elm-todomvc")
(synopsis "TodoMVC in Elm")
(description "This is the official Elm implementation of
@url{https://todomvc.com,TodoMVC}, a simple to-do--list application used to
compare front-end web frameworks.")
(license license:bsd-3))))