GNU bug report logs - #36665
[PATCH] gnu: Add elm-compiler 0.19.0

Previous Next

Package: guix-patches;

Reported by: Robert Vollmert <rob <at> vllmrt.net>

Date: Mon, 15 Jul 2019 13:49:02 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 36665 in the body.
You can then email your comments to 36665 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#36665; Package guix-patches. (Mon, 15 Jul 2019 13:49:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Robert Vollmert <rob <at> vllmrt.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 15 Jul 2019 13:49:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Vollmert <rob <at> vllmrt.net>
To: guix-patches <at> gnu.org
Cc: Robert Vollmert <rob <at> vllmrt.net>
Subject: [PATCH] gnu: Add elm-compiler 0.19.0
Date: Mon, 15 Jul 2019 15:47:14 +0200
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 <at> 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 <at> 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 <at> 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 <at> 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)





Information forwarded to guix-patches <at> gnu.org:
bug#36665; Package guix-patches. (Mon, 15 Jul 2019 14:03:01 GMT) Full text and rfc822 format available.

Message #8 received at 36665 <at> debbugs.gnu.org (full text, mbox):

From: Robert Vollmert <rob <at> vllmrt.net>
To: 36665 <at> debbugs.gnu.org
Cc: guix-devel <at> gnu.org
Subject: Re: [PATCH] gnu: Add elm-compiler 0.19.0
Date: Mon, 15 Jul 2019 16:02:35 +0200
> On 15. Jul 2019, at 15:47, Robert Vollmert <rob <at> 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





Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Sat, 17 Aug 2019 14:18:02 GMT) Full text and rfc822 format available.

Notification sent to Robert Vollmert <rob <at> vllmrt.net>:
bug acknowledged by developer. (Sat, 17 Aug 2019 14:18:03 GMT) Full text and rfc822 format available.

Message #13 received at 36665-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Robert Vollmert <rob <at> vllmrt.net>
Cc: 36665-done <at> debbugs.gnu.org
Subject: Re: [bug#36665] [PATCH] gnu: Add elm-compiler 0.19.0
Date: Sat, 17 Aug 2019 16:17:31 +0200
[Message part 1 (text/plain, inline)]
Hello,

Robert Vollmert <rob <at> 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’.

[Message part 2 (text/x-patch, inline)]
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

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 15 Sep 2019 11:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 224 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.