Skip to content

Commit dcddff8

Browse files
committed
flakified KEVM / EVM
1 parent 482340d commit dcddff8

11 files changed

+233
-251
lines changed

flake.lock

+79
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
{
2+
description = "Mantis flake";
3+
4+
inputs = {
5+
flake-utils.url = "github:numtide/flake-utils";
6+
nixpkgs.url =
7+
"github:nixos/nixpkgs?rev=a98302aa9b9628915878a6ea9776c40a0bb02950";
8+
nixpkgs-sbt = {
9+
url = "github:nixos/nixpkgs?rev=e2bb73ce5f786b83e984b80199112f86b8a6cc9d";
10+
flake = false;
11+
};
12+
sbtix = {
13+
url =
14+
"github:input-output-hk/Sbtix?rev=7b969a5641fce10500ca51cbe88af4ea160d7064";
15+
flake = false;
16+
};
17+
};
18+
19+
outputs = { self, nixpkgs, flake-utils, nixpkgs-sbt, ... }@inputs:
20+
let
21+
overlay = final: prev: {
22+
inherit (import nixpkgs-sbt { inherit (final) system; }) sbt;
23+
sbtix = final.callPackage ./sbtix.nix { };
24+
25+
mantisPkgs = final.callPackage ./nix/pkgs/mantis {
26+
src = builtins.fetchGit {
27+
url = "https://github.com/input-output-hk/mantis";
28+
rev = self.rev or "482340d5e6ab635e5a5047e9b670d59b4ad366c2";
29+
ref = "develop";
30+
submodules = true;
31+
};
32+
};
33+
34+
jdk = prev.openjdk8_headless;
35+
jre = prev.openjdk8_headless.jre;
36+
37+
inherit (final.mantisPkgs) mantis;
38+
39+
kevm = final.callPackage ./nix/pkgs/kevm.nix { };
40+
41+
mantis-entrypoint = final.callPackage ./nix/entrypoint.nix { };
42+
};
43+
44+
pkgsForSystem = system:
45+
(import nixpkgs) {
46+
inherit system;
47+
overlays = [ overlay ];
48+
};
49+
50+
mkHydraUtils = mkPkgs:
51+
let
52+
# nothing in lib should really depend on the system
53+
libPkgs = mkPkgs "x86_64-linux";
54+
# [attrset] -> attrset
55+
recursiveMerge = libPkgs.lib.foldr libPkgs.lib.recursiveUpdate { };
56+
mkHydraJobsForSystem = attrs: system:
57+
recursiveMerge
58+
(map (n: { "${n}"."${system}" = (mkPkgs system)."${n}"; }) attrs);
59+
in {
60+
collectHydraSets = jobSets: { hydraJobs = recursiveMerge jobSets; };
61+
mkHydraSet = attrs: systems:
62+
recursiveMerge (map (mkHydraJobsForSystem attrs) systems);
63+
};
64+
65+
hydraUtils = mkHydraUtils pkgsForSystem;
66+
inherit (hydraUtils) collectHydraSets mkHydraSet;
67+
68+
in flake-utils.lib.eachDefaultSystem (system: rec {
69+
pkgs = pkgsForSystem system;
70+
legacyPackages = pkgs;
71+
72+
defaultPackage = pkgs.mantis;
73+
devShell = pkgs.mkShell { nativeBuildInputs = with pkgs; [ solc sbt ]; };
74+
apps.mantis = flake-utils.lib.mkApp { drv = pkgs.mantis; };
75+
defaultApp = apps.mantis;
76+
}) // (collectHydraSets [
77+
(mkHydraSet [ "mantis" ] [ "x86_64-linux" "x86_64-darwin" ])
78+
(mkHydraSet [ "kevm" ] [ "x86_64-linux" ])
79+
(mkHydraSet [ "mantis-entrypoint" ] [ "x86_64-linux" ])
80+
]);
81+
}

nix/default.nix

-25
This file was deleted.

nix/entrypoint.nix

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{ lib, writeShellScript, awscli, mantis-kevm, coreutils, gnugrep }:
2+
writeShellScript "mantis" ''
3+
set -exuo pipefail
4+
5+
export PATH="${lib.makeBinPath [ coreutils mantis-kevm awscli gnugrep ]}"
6+
7+
${builtins.readFile ./entrypoint.sh}
8+
''

nix/entrypoint.sh

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env bash
2+
3+
set -exuo pipefail
4+
5+
mkdir -p /tmp "$NOMAD_TASK_DIR/mantis"
6+
cd "$NOMAD_TASK_DIR"
7+
8+
if [ -n "${DAG_NAME:-}" ]; then
9+
if [ -f "ethash/$DAG_NAME" ]; then
10+
echo "found existing DAG"
11+
sha256sum "ethash/$DAG_NAME"
12+
else
13+
mkdir -p ethash
14+
aws \
15+
--endpoint-url "$MONITORING_ADDR" \
16+
s3 cp \
17+
"s3://mantis-kevm-dag/$DAG_NAME" \
18+
"ethash/$DAG_NAME" \
19+
|| echo "Unable to download DAG, skipping."
20+
fi
21+
fi
22+
23+
set +x
24+
echo "Waiting for $REQUIRED_PEER_COUNT peers to show up in the config"
25+
until [ "$(grep -c enode mantis.conf)" -ge "$REQUIRED_PEER_COUNT" ]; do
26+
sleep 1
27+
done
28+
set -x
29+
30+
ulimit -c unlimited
31+
cp mantis.conf running.conf
32+
33+
exec mantis "-Duser.home=$NOMAD_TASK_DIR" "$@"

nix/pkgs/default.nix

-9
This file was deleted.

nix/pkgs/kevm.nix

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{ lib, stdenv, dockerTools, secp256k1, gmp5, mpfr, zlib }:
2+
let libPath = lib.makeLibraryPath [ secp256k1 gmp5 mpfr zlib ];
3+
in stdenv.mkDerivation {
4+
name = "kevm";
5+
6+
src = dockerTools.pullImage {
7+
imageName = "inputoutput/mantis";
8+
imageDigest =
9+
"sha256:594ed009f1bc1f12b86e11136441602107c3d580476002d9bae58b258a74ac1b";
10+
sha256 = "sha256-JT+FarGQlgYoO392Ne1ofdqmishZLfH+OwV2CXTYwdA=";
11+
};
12+
13+
installPhase = ''
14+
mkdir -p tmp $out/bin
15+
tar --delay-directory-restore -C tmp -xf layer.tar || true
16+
17+
cp tmp/bin/kevm-vm $out/bin
18+
chmod 0755 $out/bin/kevm-vm
19+
20+
patchelf \
21+
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
22+
--set-rpath "${libPath}" \
23+
"$out/bin/kevm-vm"
24+
'';
25+
}

nix/pkgs/mantis/default.nix

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
{ src, mkSrc, lib, gitignoreSource, callPackage, jre }: rec {
1+
{ src, lib, callPackage, jre }: rec {
22

3-
mantis-source = mkSrc src;
4-
5-
mantis-unwrapped = callPackage ./unwrapped.nix { src = mantis-source; };
3+
mantis-unwrapped = callPackage ./unwrapped.nix { inherit src; };
64

75
mantis = callPackage ./wrapped.nix {
86
mantis = mantis-unwrapped;

nix/pkgs/mantis/wrapped.nix

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
{ lib, stdenv, mantis, makeWrapper, jre, gawk }:
1+
{ lib, stdenv, mantis, makeWrapper, jre, gawk, gnused, kevm }:
22
let
33
inherit (stdenv.lib) optionalString makeLibraryPath;
44
inherit (stdenv) cc isDarwin;
55
LD_LIBRARY_PATH = makeLibraryPath [ cc.cc.lib ];
6-
PATH = lib.makeBinPath [ jre gawk ];
6+
PATH = lib.makeBinPath [ jre gawk gnused kevm ];
77
in stdenv.mkDerivation {
88
pname = "mantis";
99
version = let
@@ -23,11 +23,13 @@ in stdenv.mkDerivation {
2323
2424
for p in $(find $out/bin/* -executable); do
2525
wrapProgram "$p" \
26-
--prefix PATH : ${PATH} \
26+
--set PATH ${PATH} \
2727
${
2828
optionalString (!isDarwin)
2929
"--prefix LD_LIBRARY_PATH : ${LD_LIBRARY_PATH}"
3030
}
3131
done
32+
33+
ln -s ${kevm}/bin/kevm-vm $out/bin
3234
'';
3335
}

nix/sources.json

-74
This file was deleted.

0 commit comments

Comments
 (0)