From 6ab1f7489434acef34f08f0787c27f802f9a80f5 Mon Sep 17 00:00:00 2001 From: Ben Siraphob Date: Mon, 26 Jun 2023 18:20:42 +0700 Subject: [PATCH] Support for GHC 9.4 --- flake.lock | 36 +++++++++++++++++++++++++++--------- flake.nix | 42 ++++++++++++++++++++++++++++++++++++++---- hevm.cabal | 6 +++--- 3 files changed, 68 insertions(+), 16 deletions(-) diff --git a/flake.lock b/flake.lock index 303e7bca9..8a22758f1 100644 --- a/flake.lock +++ b/flake.lock @@ -34,12 +34,15 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1678901627, - "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", + "lastModified": 1687171271, + "narHash": "sha256-BJlq+ozK2B1sJDQXS3tzJM5a+oVZmi1q0FlBK/Xqv7M=", "owner": "numtide", "repo": "flake-utils", - "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", + "rev": "abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c", "type": "github" }, "original": { @@ -69,11 +72,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1677921223, - "narHash": "sha256-TsrPW+VfLu19dYm4uuAaM9LLHm30iZiyW1+0mbFgwbk=", + "lastModified": 1685870001, + "narHash": "sha256-ijUNyTvT/dT9JOcsNiVtu/u1Eicf0HqQ7SPyZ5yRU84=", "owner": "shazow", "repo": "foundry.nix", - "rev": "79df1481c10789570c40749a4c8f8aada16f2eea", + "rev": "c80b4ea3bdce135164a7aac78aafb7c619b2dd23", "type": "github" }, "original": { @@ -115,11 +118,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1679402239, - "narHash": "sha256-xJLprGQf4v0cKNtWaI2tMvn+tuYir3yNAFd41CWNgAw=", + "lastModified": 1687516207, + "narHash": "sha256-IUC1kzgrlEpoCk5DZP7VFpmKsIPXJMlnkDQANCVseYU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9cc171df4617329f2c776fefe3ee83f1a0ffa046", + "rev": "ea90def4a1e4b05a3f0b16123efb10b53b6cad54", "type": "github" }, "original": { @@ -155,6 +158,21 @@ "rev": "1c8745c54a239d20b6fb0f79a8bd2628d779b27e", "type": "github" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 235f99696..361ca7f81 100644 --- a/flake.nix +++ b/flake.nix @@ -32,6 +32,7 @@ z3 cvc5 git + ] ++ lib.optionals (!stdenv.isDarwin) [ foundry.defaultPackage.${system} ]; @@ -39,8 +40,39 @@ configureFlags = attrs.configureFlags ++ [ "--enable-static" ]; })); + patchedHaskellPackages = pkgs.haskell.packages.ghc94.override { + overrides = self: super: { + # disable tests in optics + optics-core = pkgs.haskell.lib.dontCheck (self.callCabal2nix "optics-core" (pkgs.fetchFromGitHub { + owner = "well-typed"; + repo = "optics"; + rev = "46b03019bd7d9eddb767b19a68b94125eec3b17a"; + sha256 = "sha256-wzZ/64G7nVAzIFjKNs/jBvv6gQdTIQS4X/OvM5KWfnU="; + } + "/optics-core") {}); + optics = pkgs.haskell.lib.dontCheck (self.callCabal2nix "optics" (pkgs.fetchFromGitHub { + owner = "well-typed"; + repo = "optics"; + rev = "46b03019bd7d9eddb767b19a68b94125eec3b17a"; + sha256 = "sha256-wzZ/64G7nVAzIFjKNs/jBvv6gQdTIQS4X/OvM5KWfnU="; + } + "/optics") {}); + indexed-profunctors = pkgs.haskell.lib.dontCheck (self.callCabal2nix "optics" (pkgs.fetchFromGitHub { + owner = "well-typed"; + repo = "optics"; + rev = "46b03019bd7d9eddb767b19a68b94125eec3b17a"; + sha256 = "sha256-wzZ/64G7nVAzIFjKNs/jBvv6gQdTIQS4X/OvM5KWfnU="; + } + "/indexed-profunctors") {}); + # use obsidian systems fork of string-qq + string-qq = self.callCabal2nix "string-qq" (pkgs.fetchFromGitHub { + owner = "obsidiansystems"; + repo = "string-qq"; + rev = "82ad6d72b694dc61e9b6b7eb856cb2d3d27e2865"; + sha256 = "sha256-CNtB8jkNyNBR+ZJbtLoeA6U1ivT3gEs4UVFVHIZe27w="; + }) {}; + }; + }; + hevmUnwrapped = (with pkgs; lib.pipe ( - haskellPackages.callCabal2nix "hevm" ./. { + patchedHaskellPackages.callCabal2nix "hevm" ./. { # Haskell libs with the same names as C libs... # Depend on the C libs, not the Haskell libs. # These are system deps, not Cabal deps. @@ -67,6 +99,7 @@ "--extra-lib-dirs=${glibc.static}/lib" ])) haskell.lib.dontHaddock + haskell.lib.doJailbreak ]).overrideAttrs(final: prev: { HEVM_SOLIDITY_REPO = solidity; HEVM_ETHEREUM_TESTS_REPO = ethereum-tests; @@ -144,13 +177,14 @@ devShell = with pkgs; let libraryPath = "${lib.makeLibraryPath [ libff secp256k1 gmp ]}"; - in haskellPackages.shellFor { + in patchedHaskellPackages.shellFor { packages = _: [ hevmUnwrapped ]; buildInputs = [ mdbook yarn - haskellPackages.cabal-install - haskellPackages.haskell-language-server + go-ethereum + patchedHaskellPackages.cabal-install + patchedHaskellPackages.haskell-language-server ] ++ testDeps; withHoogle = true; diff --git a/hevm.cabal b/hevm.cabal index df085e5c2..11ab748b3 100644 --- a/hevm.cabal +++ b/hevm.cabal @@ -138,15 +138,15 @@ library Decimal >= 0.5.1 && < 0.6, containers >= 0.6.0 && < 0.7, deepseq >= 1.4.4 && < 1.5, - time >= 1.11.1.1 && < 1.12, + time >= 1.11.1.1 && <= 1.12.2, transformers >= 0.5.6 && < 0.6, tree-view >= 0.5 && < 0.6, abstract-par >= 0.3.3 && < 0.4, - aeson >= 2.0.0 && < 2.1, + aeson >= 2.0.0 && <= 2.1.2.1, bytestring >= 0.11.3.1 && < 0.12, scientific >= 0.3.6 && < 0.4, binary >= 0.8.6 && < 0.9, - text >= 1.2.3 && < 1.3, + text >= 1.2.3 && <= 2.0.2, unordered-containers >= 0.2.10 && < 0.3, vector >= 0.12.1 && < 0.13, ansi-wl-pprint >= 0.6.9 && < 0.7,