From 10a781534d23e05646be9ccf86ab07dbb23b6cdf Mon Sep 17 00:00:00 2001 From: Gabriel Gonzalez Date: Mon, 3 Dec 2018 08:07:18 -0800 Subject: [PATCH] GHCJS support for Dhall (#734) This adds a GHCJS build for Dhall so that: * We can build a `try.dhall-lang.org` to try Dhall in the browser until the PureScript implementation comes online * We can document how to build `dhall` using GHCJS * We can verify that new changes to `dhall` or its dependencies don't break GHCJS support * CI can build and cache GHCJS-related dependencies --- nix/cborg.nix | 21 +++++++++++++++++++++ nix/haskeline_0_7_3_1.nix | 16 ++++++++++++++++ nix/shared.nix | 10 +++++++--- release.nix | 6 ++++++ 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 nix/cborg.nix create mode 100644 nix/haskeline_0_7_3_1.nix diff --git a/nix/cborg.nix b/nix/cborg.nix new file mode 100644 index 0000000..d952357 --- /dev/null +++ b/nix/cborg.nix @@ -0,0 +1,21 @@ +{ mkDerivation, aeson, array, base, base16-bytestring +, base64-bytestring, bytestring, containers, deepseq, fail +, ghc-prim, half, integer-gmp, primitive, QuickCheck, scientific +, stdenv, tasty, tasty-hunit, tasty-quickcheck, text, vector +}: +mkDerivation { + pname = "cborg"; + version = "0.2.1.0"; + sha256 = "9198735f7645ae492345505448f790433f5fe407b19e1c6b2ec2a4c76bd97483"; + libraryHaskellDepends = [ + array base bytestring containers deepseq ghc-prim half integer-gmp + primitive text + ]; + testHaskellDepends = [ + aeson array base base16-bytestring base64-bytestring bytestring + deepseq fail half QuickCheck scientific tasty tasty-hunit + tasty-quickcheck text vector + ]; + description = "Concise Binary Object Representation"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/nix/haskeline_0_7_3_1.nix b/nix/haskeline_0_7_3_1.nix new file mode 100644 index 0000000..bb98fd0 --- /dev/null +++ b/nix/haskeline_0_7_3_1.nix @@ -0,0 +1,16 @@ +{ mkDerivation, base, bytestring, containers, directory, filepath +, process, stdenv, stm, transformers, unix +}: +mkDerivation { + pname = "haskeline"; + version = "0.7.4.3"; + sha256 = "046d0930bc2dbc57a7cd9ddb5d1e92c7fdb71c6b91b2bbf673f5406843d6b679"; + configureFlags = [ "-f-terminfo" ]; + libraryHaskellDepends = [ + base bytestring containers directory filepath process stm + transformers unix + ]; + homepage = "https://github.com/judah/haskeline"; + description = "A command-line interface for user input, written in Haskell"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/nix/shared.nix b/nix/shared.nix index 422839f..292390f 100644 --- a/nix/shared.nix +++ b/nix/shared.nix @@ -57,9 +57,9 @@ let pkgsNew.haskell.lib.dontCheck drv; failOnAllWarnings = drv: - # GHC 7.10.3 incorrectly detects non-exhaustive pattern - # matches - if compiler == "ghc7103" + # Older versions of GHC incorrectly detect non-exhaustive + # pattern matches + if compiler == "ghc7103" || compiler == "ghcjs" then drv else pkgsNew.haskell.lib.failOnAllWarnings drv; @@ -69,7 +69,11 @@ let "comonad" "distributive" "doctest" + "half" + "http-types" + "megaparsec" "prettyprinter" + "prettyprinter-ansi-terminal" # https://github.com/well-typed/cborg/issues/172 "serialise" "unordered-containers" diff --git a/release.nix b/release.nix index bcbe25a..e0ffd2c 100644 --- a/release.nix +++ b/release.nix @@ -5,6 +5,9 @@ let shared_8_6_1 = import ./nix/shared.nix { compiler = "ghc861"; }; + shared_ghcjs = + import ./nix/shared.nix { compiler = "ghcjs"; }; + shared = import ./nix/shared.nix { }; @@ -38,6 +41,9 @@ in shared.tarball-dhall-json shared.tarball-dhall-text + # Verify that `dhall` can be built using GHCJS + shared_ghcjs.dhall + # This is the only `dhall` build that runs the test suite coverage.dhall