all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#36665] [PATCH] gnu: Add elm-compiler 0.19.0
@ 2019-07-15 13:47 Robert Vollmert
  2019-07-15 14:02 ` Robert Vollmert
  2019-08-17 14:17 ` bug#36665: " Ludovic Courtès
  0 siblings, 2 replies; 3+ messages in thread
From: Robert Vollmert @ 2019-07-15 13:47 UTC (permalink / raw)
  To: 36665; +Cc: Robert Vollmert

This adds the elm compiler, version 0.19.0. This provides the
`elm` command, with the exception of the `elm reactor` subcommand.

Named `elm-compiler`, to leave space for `elm` as the full elm
including reactor.

* gnu/packages/elm.scm: New module.
(elm-compiler): New package.
* gnu/packages/patches/elm-disable-reactor.patch: New patch.
* gnu/packages/patches/elm-fix-map-key.patch: New patch.
* gnu/packages/patches/elm-relax-glsl-bound.patch: New patch.
* gnu/local.mk: Add new files.
---

This depends on patch set 36663: Add elm compiler dependencies.

 gnu/local.mk                                  |  4 +
 gnu/packages/elm.scm                          | 78 +++++++++++++++++++
 .../patches/elm-disable-reactor.patch         | 71 +++++++++++++++++
 gnu/packages/patches/elm-fix-map-key.patch    | 38 +++++++++
 .../patches/elm-relax-glsl-bound.patch        | 19 +++++
 5 files changed, 210 insertions(+)
 create mode 100644 gnu/packages/elm.scm
 create mode 100644 gnu/packages/patches/elm-disable-reactor.patch
 create mode 100644 gnu/packages/patches/elm-fix-map-key.patch
 create mode 100644 gnu/packages/patches/elm-relax-glsl-bound.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index af76145225..4f131e8fac 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -161,6 +161,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/electronics.scm			\
   %D%/packages/elf.scm				\
   %D%/packages/elixir.scm			\
+  %D%/packages/elm.scm				\
   %D%/packages/embedded.scm			\
   %D%/packages/emacs.scm			\
   %D%/packages/emacs-xyz.scm			\
@@ -768,6 +769,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
   %D%/packages/patches/elixir-path-length.patch			\
+  %D%/packages/patches/elm-disable-reactor.patch		\
+  %D%/packages/patches/elm-fix-map-key.patch			\
+  %D%/packages/patches/elm-relax-glsl-bound.patch		\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/emacs-exec-path.patch			\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
diff --git a/gnu/packages/elm.scm b/gnu/packages/elm.scm
new file mode 100644
index 0000000000..e4dea88585
--- /dev/null
+++ b/gnu/packages/elm.scm
@@ -0,0 +1,78 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages elm)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages haskell)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages haskell-web)
+  #:use-module (guix build-system haskell)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+;; The full elm build calls out to itself via Template Haskell to
+;; compile the elm reactor web app. elm reactor isn't required to
+;; compile elm applications, so we take this part out of this
+;; bootstrap package.
+(define-public elm-compiler
+  (package
+    (name "elm-compiler")
+    (version "0.19.0")
+    (source
+     (origin
+       (method url-fetch)
+       (file-name "elm-0.19.0.tar.gz")
+       (uri "https://github.com/elm/compiler/archive/0.19.0.tar.gz")
+       (sha256
+        (base32 "0g4risrjrvngz3j4wf432j82gjcc8i1b7l5lwbb0fhr24hvz6ka9"))
+       (patches
+        (search-patches "elm-disable-reactor.patch"
+                        "elm-relax-glsl-bound.patch"
+                        "elm-fix-map-key.patch"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-ansi-terminal" ,ghc-ansi-terminal)
+       ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+       ("ghc-edit-distance" ,ghc-edit-distance)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-http" ,ghc-http)
+       ("ghc-http-client" ,ghc-http-client)
+       ("ghc-http-client-tls" ,ghc-http-client-tls)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-language-glsl" ,ghc-language-glsl)
+       ("ghc-logict" ,ghc-logict)
+       ("ghc-network" ,ghc-network)
+       ("ghc-raw-strings-qq" ,ghc-raw-strings-qq)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-snap-core" ,ghc-snap-core)
+       ("ghc-snap-server" ,ghc-snap-server)
+       ("ghc-unordered-containers"
+        ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-zip-archive" ,ghc-zip-archive)))
+    (home-page "https://elm-lang.org")
+    (synopsis "The `elm` command line interface, without `elm reactor`")
+    (description
+     "This includes commands like `elm make`, `elm repl`, and many others
+for helping make Elm developers happy and productive.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/patches/elm-disable-reactor.patch b/gnu/packages/patches/elm-disable-reactor.patch
new file mode 100644
index 0000000000..9871b55e8d
--- /dev/null
+++ b/gnu/packages/patches/elm-disable-reactor.patch
@@ -0,0 +1,71 @@
+commit 20d80e2323b565a36751c9455e535d8f73fa32f7
+Author: Robert Vollmert <rob@vllmrt.net>
+Date:   Fri Jun 14 16:05:47 2019 +0200
+
+    disable reactor
+
+diff --git a/elm.cabal b/elm.cabal
+index c75f9689..ece63c46 100644
+--- a/elm.cabal
++++ b/elm.cabal
+@@ -45,9 +45,6 @@ Executable elm
+         builder/src
+         ui/terminal/src
+ 
+-    other-extensions:
+-        TemplateHaskell
+-
+     Main-Is:
+         Main.hs
+ 
+@@ -56,8 +53,6 @@ Executable elm
+         Develop
+         Develop.Generate.Help
+         Develop.Generate.Index
+-        Develop.StaticFiles
+-        Develop.StaticFiles.Build
+         Diff
+         Init
+         Install
+diff --git a/ui/terminal/src/Develop.hs b/ui/terminal/src/Develop.hs
+index 4b2252e1..7ed7716e 100644
+--- a/ui/terminal/src/Develop.hs
++++ b/ui/terminal/src/Develop.hs
+@@ -23,7 +23,6 @@ import Snap.Util.FileServe
+ import qualified Elm.Project as Project
+ import qualified Develop.Generate.Help as Generate
+ import qualified Develop.Generate.Index as Index
+-import qualified Develop.StaticFiles as StaticFiles
+ import qualified Generate.Output as Output
+ import qualified Json.Encode as Encode
+ import qualified Reporting.Exit as Exit
+@@ -219,16 +218,7 @@ compileToHtmlBuilder mode file =
+ 
+ 
+ serveAssets :: Snap ()
+-serveAssets =
+-  do  file <- getSafePath
+-      case StaticFiles.lookup file of
+-        Nothing ->
+-          pass
+-
+-        Just (content, mimeType) ->
+-          do  modifyResponse (setContentType (mimeType <> ";charset=utf-8"))
+-              writeBS content
+-
++serveAssets = pass
+ 
+ 
+ -- MIME TYPES
+diff --git a/ui/terminal/src/Main.hs b/terminal/src/Main.hs
+index 7000f3ca..2c76965a 100644
+--- a/ui/terminal/src/Main.hs
++++ b/ui/terminal/src/Main.hs
+@@ -39,7 +39,6 @@ main =
+       complex intro outro
+         [ repl
+         , init
+-        , reactor
+         , make
+         , install
+         , bump
diff --git a/gnu/packages/patches/elm-fix-map-key.patch b/gnu/packages/patches/elm-fix-map-key.patch
new file mode 100644
index 0000000000..4f05ded530
--- /dev/null
+++ b/gnu/packages/patches/elm-fix-map-key.patch
@@ -0,0 +1,38 @@
+commit e3512d887df41a8162c3e361171c04beca08415b
+Author: Tom Stejskal <tom.stejskal@gmail.com>
+Date:   Mon Nov 19 20:09:43 2018 +0100
+
+    Fix Map.!: given key is not an element in the map
+
+diff --git a/compiler/src/Elm/Compiler/Type/Extract.hs b/compiler/src/Elm/Compiler/Type/Extract.hs
+index 1aafe1d4..99763392 100644
+--- a/compiler/src/Elm/Compiler/Type/Extract.hs
++++ b/compiler/src/Elm/Compiler/Type/Extract.hs
+@@ -10,6 +10,7 @@ module Elm.Compiler.Type.Extract
+ 
+ 
+ import Data.Map ((!))
++import qualified Data.Map as Map
+ import qualified Data.Maybe as Maybe
+ import qualified Data.Set as Set
+ 
+@@ -134,11 +135,15 @@ extractUnion interfaces (Opt.Global home name) =
+     else
+       let
+         pname = toPublicName home name
+-        unions = I._unions (interfaces ! home)
++        maybeUnions = I._unions <$> Map.lookup home interfaces
+       in
+-      case I.toUnionInternals (unions ! name) of
+-        Can.Union vars ctors _ _ ->
+-          T.Union pname vars <$> traverse extractCtor ctors
++      case Map.lookup name =<< maybeUnions of
++        Just union ->
++          case I.toUnionInternals union of
++            Can.Union vars ctors _ _ ->
++              T.Union pname vars <$> traverse extractCtor ctors
++        Nothing ->
++          return $ T.Union pname [] []
+ 
+ 
+ extractCtor :: Can.Ctor -> Extractor (N.Name, [T.Type])
diff --git a/gnu/packages/patches/elm-relax-glsl-bound.patch b/gnu/packages/patches/elm-relax-glsl-bound.patch
new file mode 100644
index 0000000000..3f8be810c2
--- /dev/null
+++ b/gnu/packages/patches/elm-relax-glsl-bound.patch
@@ -0,0 +1,19 @@
+commit 4c649a5a270aba15cc6a3913c3ad51a293047f40
+Author: Rémi Lefèvre <rlefevre@gmail.com>
+Date:   Mon Sep 3 19:18:54 2018 +0200
+
+    update language-glsl maximum version
+
+diff --git a/elm.cabal b/elm.cabal
+index 48aa84f0..464fe9d5 100644
+--- a/elm.cabal
++++ b/elm.cabal
+@@ -246,7 +246,7 @@ Executable elm
+         http-client >= 0.5 && < 0.6,
+         http-client-tls >= 0.3 && < 0.4,
+         http-types >= 0.9 && < 1.0,
+-        language-glsl >= 0.0.2 && < 0.3,
++        language-glsl >= 0.0.2 && < 0.4,
+         logict,
+         mtl >= 2.2.1 && < 3,
+         network >= 2.4 && < 2.7,
-- 
2.20.1 (Apple Git-117)

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] gnu: Add elm-compiler 0.19.0
  2019-07-15 13:47 [bug#36665] [PATCH] gnu: Add elm-compiler 0.19.0 Robert Vollmert
@ 2019-07-15 14:02 ` Robert Vollmert
  2019-08-17 14:17 ` bug#36665: " Ludovic Courtès
  1 sibling, 0 replies; 3+ messages in thread
From: Robert Vollmert @ 2019-07-15 14:02 UTC (permalink / raw)
  To: 36665; +Cc: guix-devel

> On 15. Jul 2019, at 15:47, Robert Vollmert <rob@vllmrt.net> wrote:
> 
> This adds the elm compiler, version 0.19.0. This provides the
> `elm` command, with the exception of the `elm reactor` subcommand.
> 
> Named `elm-compiler`, to leave space for `elm` as the full elm
> including reactor.

I have some working but unfinished follow-up patches to this which add an
elm build system and which build the full elm including the reactor; compare

elm build systems:
  https://github.com/robx/guix/commit/95b2c1adba30bf000f85e85184fb04756591b1c9
guix import elm:
  https://github.com/robx/guix/commit/25e9b6e07242ccb4ef9c615df02b3f6571f334c8
full elm package:
  https://github.com/robx/guix/commit/20abbe7f2fe67cdb14e1ecaf7f55793e9467a1ea

^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#36665: [PATCH] gnu: Add elm-compiler 0.19.0
  2019-07-15 13:47 [bug#36665] [PATCH] gnu: Add elm-compiler 0.19.0 Robert Vollmert
  2019-07-15 14:02 ` Robert Vollmert
@ 2019-08-17 14:17 ` Ludovic Courtès
  1 sibling, 0 replies; 3+ messages in thread
From: Ludovic Courtès @ 2019-08-17 14:17 UTC (permalink / raw)
  To: Robert Vollmert; +Cc: 36665-done

[-- Attachment #1: Type: text/plain, Size: 946 bytes --]

Hello,

Robert Vollmert <rob@vllmrt.net> skribis:

> This adds the elm compiler, version 0.19.0. This provides the
> `elm` command, with the exception of the `elm reactor` subcommand.
>
> Named `elm-compiler`, to leave space for `elm` as the full elm
> including reactor.
>
> * gnu/packages/elm.scm: New module.
> (elm-compiler): New package.
> * gnu/packages/patches/elm-disable-reactor.patch: New patch.
> * gnu/packages/patches/elm-fix-map-key.patch: New patch.
> * gnu/packages/patches/elm-relax-glsl-bound.patch: New patch.
> * gnu/local.mk: Add new files.

Finally applied with the minor changes below, which address issues
reported by ‘guix lint’ and tweak the synopsis and description.

Note that ‘elm repl’ says that it wants ‘node’ in $PATH, but I think
that’s OK: people who need the REPL can add Node to their environment,
and otherwise they can do without Node, AIUI.

Thank you!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 3755 bytes --]

diff --git a/gnu/local.mk b/gnu/local.mk
index 9ac43897d4..aab29beb0a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -774,9 +774,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
   %D%/packages/patches/elixir-path-length.patch			\
-  %D%/packages/patches/elm-disable-reactor.patch		\
-  %D%/packages/patches/elm-fix-map-key.patch			\
-  %D%/packages/patches/elm-relax-glsl-bound.patch		\
+  %D%/packages/patches/elm-compiler-disable-reactor.patch	\
+  %D%/packages/patches/elm-compiler-fix-map-key.patch		\
+  %D%/packages/patches/elm-compiler-relax-glsl-bound.patch	\
   %D%/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch   \
   %D%/packages/patches/emacs-exec-path.patch			\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
diff --git a/gnu/packages/elm.scm b/gnu/packages/elm.scm
index e4dea88585..c6a8a81a94 100644
--- a/gnu/packages/elm.scm
+++ b/gnu/packages/elm.scm
@@ -24,7 +24,7 @@
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages haskell-web)
   #:use-module (guix build-system haskell)
-  #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages))
 
@@ -38,15 +38,17 @@
     (version "0.19.0")
     (source
      (origin
-       (method url-fetch)
-       (file-name "elm-0.19.0.tar.gz")
-       (uri "https://github.com/elm/compiler/archive/0.19.0.tar.gz")
+       (method git-fetch)
+       (file-name (git-file-name name version))
+       (uri (git-reference
+             (url "https://github.com/elm/compiler/")
+             (commit version)))
        (sha256
-        (base32 "0g4risrjrvngz3j4wf432j82gjcc8i1b7l5lwbb0fhr24hvz6ka9"))
+        (base32 "0s93z9vr0vp5w894ghc5s34nsq09sg1msf59zfiba87sid5vgjqy"))
        (patches
-        (search-patches "elm-disable-reactor.patch"
-                        "elm-relax-glsl-bound.patch"
-                        "elm-fix-map-key.patch"))))
+        (search-patches "elm-compiler-disable-reactor.patch"
+                        "elm-compiler-relax-glsl-bound.patch"
+                        "elm-compiler-fix-map-key.patch"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-ansi-terminal" ,ghc-ansi-terminal)
@@ -71,8 +73,9 @@
        ("ghc-vector" ,ghc-vector)
        ("ghc-zip-archive" ,ghc-zip-archive)))
     (home-page "https://elm-lang.org")
-    (synopsis "The `elm` command line interface, without `elm reactor`")
+    (synopsis "Programming language for Web applications")
     (description
-     "This includes commands like `elm make`, `elm repl`, and many others
-for helping make Elm developers happy and productive.")
+     "This package provides Elm, a statically-typed functional programming
+language for the browser.  It includes commands for developers such as like
+@command{elm make} and @command{elm repl}.")
     (license license:bsd-3)))
diff --git a/gnu/packages/patches/elm-disable-reactor.patch b/gnu/packages/patches/elm-compiler-disable-reactor.patch
similarity index 100%
rename from gnu/packages/patches/elm-disable-reactor.patch
rename to gnu/packages/patches/elm-compiler-disable-reactor.patch
diff --git a/gnu/packages/patches/elm-fix-map-key.patch b/gnu/packages/patches/elm-compiler-fix-map-key.patch
similarity index 100%
rename from gnu/packages/patches/elm-fix-map-key.patch
rename to gnu/packages/patches/elm-compiler-fix-map-key.patch
diff --git a/gnu/packages/patches/elm-relax-glsl-bound.patch b/gnu/packages/patches/elm-compiler-relax-glsl-bound.patch
similarity index 100%
rename from gnu/packages/patches/elm-relax-glsl-bound.patch
rename to gnu/packages/patches/elm-compiler-relax-glsl-bound.patch

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-08-17 14:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-15 13:47 [bug#36665] [PATCH] gnu: Add elm-compiler 0.19.0 Robert Vollmert
2019-07-15 14:02 ` Robert Vollmert
2019-08-17 14:17 ` bug#36665: " Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.