Skip to content

Commit efa4732

Browse files
authored
Merge pull request #324 from ethereum/cabal-multi
2 parents 73f31db + 30c757e commit efa4732

File tree

3 files changed

+65
-19
lines changed

3 files changed

+65
-19
lines changed

flake.lock

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,16 @@
1717
url = "github:ethereum/tests/v12.2";
1818
flake = false;
1919
};
20+
cabal-head = {
21+
url = "github:haskell/cabal";
22+
flake = false;
23+
};
2024
};
2125

22-
outputs = { self, nixpkgs, flake-utils, solidity, ethereum-tests, foundry, ... }:
26+
outputs = { self, nixpkgs, flake-utils, solidity, ethereum-tests, foundry, cabal-head, ... }:
2327
flake-utils.lib.eachDefaultSystem (system:
2428
let
25-
pkgs = nixpkgs.legacyPackages.${system};
29+
pkgs = (import nixpkgs { inherit system; config = { allowBroken = true; }; });
2630
testDeps = with pkgs; [
2731
go-ethereum
2832
solc
@@ -32,6 +36,44 @@
3236
foundry.defaultPackage.${system}
3337
];
3438

39+
# custom package set capable of building latest (unreleased) `cabal-install`.
40+
# This gives us support for multiple home units in cabal repl
41+
cabal-multi-pkgs = pkgs.haskell.packages.ghc94.override {
42+
overrides = with pkgs.haskell.lib; self: super: rec {
43+
cabal-install = dontCheck (self.callCabal2nix "cabal-install" "${cabal-head}/cabal-install" {});
44+
cabal-install-solver = dontCheck (self.callCabal2nix "cabal-install-solver" "${cabal-head}/cabal-install-solver" {});
45+
Cabal-described = dontCheck (self.callCabal2nix "Cabal-described" "${cabal-head}/Cabal-described" {});
46+
Cabal-QuickCheck = dontCheck (self.callCabal2nix "Cabal-QuickCheck" "${cabal-head}/Cabal-QuickCheck" {});
47+
Cabal-tree-diff = dontCheck (self.callCabal2nix "Cabal-tree-diff" "${cabal-head}/Cabal-tree-diff" {});
48+
Cabal-syntax = dontCheck (self.callCabal2nix "Cabal-syntax" "${cabal-head}/Cabal-syntax" {});
49+
Cabal = dontCheck (self.callCabal2nix "Cabal" "${cabal-head}/Cabal" {});
50+
unix = dontCheck (doJailbreak super.unix_2_8_1_1);
51+
filepath = dontCheck (doJailbreak super.filepath_1_4_100_3);
52+
process = dontCheck (doJailbreak super.process_1_6_17_0);
53+
directory = dontCheck (doJailbreak (super.directory_1_3_7_1));
54+
tasty = dontCheck (doJailbreak super.tasty);
55+
QuickCheck = dontCheck (doJailbreak super.QuickCheck);
56+
hashable = dontCheck (doJailbreak super.hashable);
57+
async = dontCheck (doJailbreak super.async);
58+
hspec-meta = dontCheck (doJailbreak super.hspec-meta);
59+
hpc = dontCheck (doJailbreak super.hpc);
60+
ghci = dontCheck (doJailbreak super.ghci);
61+
ghc-boot = dontCheck (doJailbreak super.ghc-boot);
62+
setenv = dontCheck (doJailbreak super.setenv);
63+
vector = dontCheck (doJailbreak super.vector);
64+
network-uri = dontCheck (doJailbreak super.network-uri);
65+
aeson = dontCheck (doJailbreak super.aeson);
66+
th-compat = dontCheck (doJailbreak super.th-compat);
67+
safe-exceptions = dontCheck (doJailbreak super.safe-exceptions);
68+
bifunctors = dontCheck (doJailbreak super.bifunctors);
69+
base-compat-batteries = dontCheck (doJailbreak super.base-compat-batteries);
70+
distributative = dontCheck (doJailbreak super.distributative);
71+
semialign = dontCheck (doJailbreak super.semialign);
72+
semigroupoids = dontCheck (doJailbreak super.semigroupoids);
73+
hackage-security = dontCheck (doJailbreak super.hackage-security);
74+
};
75+
};
76+
3577
secp256k1-static = stripDylib (pkgs.secp256k1.overrideAttrs (attrs: {
3678
configureFlags = attrs.configureFlags ++ [ "--enable-static" ];
3779
}));
@@ -144,9 +186,11 @@
144186
in haskellPackages.shellFor {
145187
packages = _: [ hevmUnwrapped ];
146188
buildInputs = [
189+
# cabal from nixpkgs
190+
# haskellPackages.cabal-install
191+
cabal-multi-pkgs.cabal-install
147192
mdbook
148193
yarn
149-
haskellPackages.cabal-install
150194
haskellPackages.eventlog2html
151195
haskellPackages.haskell-language-server
152196
] ++ testDeps;

hevm.cabal

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,7 @@ build-type:
2424
Simple
2525
extra-source-files:
2626
CHANGELOG.md
27-
bench/contracts/erc20.sol
28-
test/contracts/lib/test.sol
29-
test/contracts/lib/erc20.sol
30-
test/contracts/pass/trivial.sol
31-
test/contracts/pass/abstract.sol
32-
test/contracts/pass/cheatCodes.sol
33-
test/contracts/pass/constantinople.sol
34-
test/contracts/pass/dsProvePass.sol
35-
test/contracts/pass/invariants.sol
36-
test/contracts/pass/libraries.sol
37-
test/contracts/pass/loops.sol
38-
test/contracts/pass/rpc.sol
39-
test/contracts/fail/trivial.sol
40-
test/contracts/fail/cheatCodes.sol
41-
test/contracts/fail/dsProveFail.sol
42-
test/contracts/fail/invariantFail.sol
27+
bench/contracts/*.sol
4328
test/scripts/convert_trace_to_json.sh
4429

4530
flag ci

0 commit comments

Comments
 (0)