Skip to content
This repository has been archived by the owner on Feb 17, 2025. It is now read-only.

Commit

Permalink
update flake
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreyMlashkin committed Aug 21, 2024
1 parent 002176a commit 8b1cbcd
Show file tree
Hide file tree
Showing 6 changed files with 177 additions and 189 deletions.
85 changes: 39 additions & 46 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

217 changes: 74 additions & 143 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,175 +11,106 @@
flake-utils.follows = "flake-utils";
};
};
nil-evm-assigner = {
type = "github";
owner = "NilFoundation";
repo = "evm-assigner";
nil-crypto3 = {
url = "https://github.com/NilFoundation/crypto3";
type = "git";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
nix-3rdparty.follows = "nix-3rdparty";
nil-crypto3.follows = "nil-crypto3";
nil-zkllvm-blueprint.follows = "nil-zkllvm-blueprint";
};
};
nil-crypto3 = {
nil-evm-assigner = {
type = "github";
owner = "NilFoundation";
repo = "crypto3";
rev = "3bd5b8df2091274abaa28fd86b9e3e89d661b95a";
repo = "evm-assigner";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
nix-3rdparty.follows = "nix-3rdparty";
nil-crypto3.follows = "nil-crypto3";
};
};
nil-zkllvm-blueprint = {
url = "https://github.com/NilFoundation/zkllvm-blueprint";
type = "git";
submodules = true;
rev = "73d6a40e39b6b6fc7b1c84441e62337206dc0815";
nil-cluster = {
type = "git"; # 'git' is required here, for 'github' we cannot compute cluster version via git history
url = "ssh://git@github.com/NilFoundation/nil";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
nil-crypto3.follows = "nil-crypto3";
};
};
};

outputs =
{ self
outputs = { self
, nixpkgs
, flake-utils
, nix-3rdparty
, nil-evm-assigner
, nil-crypto3
, nil-zkllvm-blueprint
}:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
overlays = [ nix-3rdparty.overlays.${system}.default ];
inherit system;
};
evm-assigner-pkgs = nil-evm-assigner.packages.${system};
evm-assigner = { enableDebug ? false }:
if enableDebug then evm-assigner-pkgs.debug else evm-assigner-pkgs.default;

crypto3 = nil-crypto3.packages.${system}.default;
blueprint = nil-zkllvm-blueprint.packages.${system}.default;

# Default env will bring us GCC 13 as default compiler
stdenv = pkgs.stdenv;

defaultNativeBuildInputs = [
pkgs.cmake
pkgs.ninja
];

defaultBuildInputs = { enableDebug ? false }: [
# Default nixpkgs packages
pkgs.python3
pkgs.python312Packages.jsonschema
pkgs.python312Packages.requests
pkgs.solc
pkgs.valijson
# Packages from nix-3rdparty
(pkgs.intx.override { inherit enableDebug; })
(pkgs.sszpp.override { inherit enableDebug; })
# Repo dependencies
(evm-assigner { inherit enableDebug; })
crypto3
blueprint
# Blueprint will propagate Boost library.
# We don't include it here explicitly to reuse the same version.
];

defaultCheckInputs = [
pkgs.gtest
];

defaultDevTools = [
pkgs.doxygen
pkgs.clang_17 # clang-format and clang-tidy
];

releaseBuild = stdenv.mkDerivation {
name = "zkEVM-framework";

nativeBuildInputs = defaultNativeBuildInputs;

buildInputs = defaultBuildInputs { };

src = self;

cmakeBuildType = "Release";

doCheck = false;
};

debugBuild = releaseBuild.overrideAttrs (finalAttrs: previousAttrs: {
name = previousAttrs.name + "-debug";

buildInputs = defaultBuildInputs { enableDebug = true; };

cmakeBuildType = "Debug";

dontStrip = true;
});

testBuild = releaseBuild.overrideAttrs (finalAttrs: previousAttrs: {
name = previousAttrs.name + "-tests";

cmakeFlags = [ "-DENABLE_TESTS=TRUE" ];

doCheck = true;

checkInputs = defaultCheckInputs;

checkPhase = ''
ctest
ninja executables_tests
'';

GTEST_OUTPUT = "xml:${placeholder "out"}/test-reports/";

dontInstall = true;
});

makeDevShell = { enableDebug }: pkgs.mkShell {
nativeBuildInputs = defaultNativeBuildInputs
++ defaultBuildInputs { inherit enableDebug; }
++ defaultCheckInputs
++ defaultDevTools;

shellHook = ''
echo "zkEVM-framework ${if enableDebug then "debug" else "release"} dev environment activated"
'';
};
in
rec {
packages = rec {
default = release;
release = releaseBuild;
debug = debugBuild;
};
checks.default = testBuild;
apps = {
assigner = {
type = "app";
program = "${packages.default}/bin/assigner";
, nil-cluster
}:
(flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
stdenv = pkgs.stdenv;
# stdenv = pkgs.llvmPackages_16.stdenv;
crypto3 = nil-crypto3.packages.${system}.crypto3;
evm-assigner = nil-evm-assigner.packages.${system}.default;
cluster = nil-cluster.packages.${system}.default;
intx = nix-3rdparty.packages.${system}.intx;
sszpp = nix-3rdparty.packages.${system}.sszpp;

in {
packages = rec {
zkevm-framework = (pkgs.callPackage ./zkevm-framework.nix {
src_repo = self;
crypto3 = crypto3;
evm-assigner = evm-assigner;
intx = intx;
sszpp = sszpp;
});
zkevm-framework-debug = (pkgs.callPackage ./zkevm-framework.nix {
src_repo = self;
crypto3 = crypto3;
evm-assigner = evm-assigner;
intx = intx;
sszpp = sszpp;
enableDebug = true;
});
zkevm-framework-debug-tests = (pkgs.callPackage ./zkevm-framework.nix {
src_repo = self;
crypto3 = crypto3;
evm-assigner = evm-assigner;
intx = intx;
sszpp = sszpp;
enableDebug = true;
runTests = true;
});
default = zkevm-framework-debug-tests;
};
block_gen = {
type = "app";
program = "${packages.default}/bin/block_gen";
checks = rec {
gcc = (pkgs.callPackage ./zkevm-framework.nix {
src_repo = self;
crypto3 = crypto3;
evm-assigner = evm-assigner;
intx = intx;
sszpp = sszpp;
runTests = true;
});
clang = (pkgs.callPackage ./zkevm-framework.nix {
stdenv = pkgs.llvmPackages_18.stdenv;
src_repo = self;
crypto3 = crypto3;
evm-assigner = evm-assigner;
intx = intx;
sszpp = sszpp;
runTests = true;
});
default = gcc;
};
};
devShells = rec {
default = debug;
release = makeDevShell { enableDebug = false; };
debug = makeDevShell { enableDebug = true; };
};
}
);
}));
}

# `nix flake -L check` to run all tests (-L to output build logs)
# `nix flake show` to show derivations tree
# If build fails due to OOM, run `export NIX_CONFIG="cores = 2"` to set desired parallel level
Loading

0 comments on commit 8b1cbcd

Please sign in to comment.