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:
		
							parent
							
								
									9885c2fd07
								
							
						
					
					
						commit
						b6c0f18dee
					
				
					 2 changed files with 55 additions and 2 deletions
				
			
		| 
						 | 
					@ -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.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue