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

update flake #84

Merged
merged 10 commits into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ include(GNUInstallDirs)
option(BUILD_DOCS "Build documentation" FALSE)
option(ENABLE_TESTS "Enable tests" FALSE)


add_subdirectory(libs)
add_subdirectory(bin)

Expand Down
67 changes: 18 additions & 49 deletions flake.lock

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

192 changes: 57 additions & 135 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,15 @@
flake-utils.follows = "flake-utils";
nix-3rdparty.follows = "nix-3rdparty";
nil-crypto3.follows = "nil-crypto3";
nil-zkllvm-blueprint.follows = "nil-zkllvm-blueprint";
};
};
nil-crypto3 = {
type = "github";
owner = "NilFoundation";
repo = "crypto3";
rev = "3bd5b8df2091274abaa28fd86b9e3e89d661b95a";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
nix-3rdparty.follows = "nix-3rdparty";
};
};
nil-zkllvm-blueprint = {
url = "https://github.com/NilFoundation/zkllvm-blueprint";
url = "https://github.com/NilFoundation/crypto3";
type = "git";
submodules = true;
rev = "73d6a40e39b6b6fc7b1c84441e62337206dc0815";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
nil-crypto3.follows = "nil-crypto3";
nix-3rdparty.follows = "nix-3rdparty";
};
};
};
Expand All @@ -54,118 +40,56 @@
, 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 = {
}:
(flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
stdenv = pkgs.stdenv;
crypto3 = nil-crypto3.packages.${system}.crypto3;
evm-assigner = nil-evm-assigner.packages.${system}.default;
intx = nix-3rdparty.packages.${system}.intx;
sszpp = nix-3rdparty.packages.${system}.sszpp;

in rec {
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;
};
checks = rec {
gcc = (pkgs.callPackage ./zkevm-framework.nix {
src_repo = self;
crypto3 = crypto3;
evm-assigner = evm-assigner;
intx = intx;
sszpp = sszpp;
runTests = true;
});
default = gcc;
};
apps = rec {
assigner = {
type = "app";
program = "${packages.default}/bin/assigner";
Expand All @@ -175,11 +99,9 @@
program = "${packages.default}/bin/block_gen";
};
};
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
4 changes: 2 additions & 2 deletions libs/preset/include/zkevm_framework/preset/bytecode.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ std::optional<std::string> initialize_bytecode_circuit(
cur_selector_id++;
nil::crypto3::zk::snark::pack_lookup_tables_horizontal(
bytecode_circuit.get_reserved_indices(), bytecode_circuit.get_reserved_tables(),
bytecode_circuit, bytecode_table, lookup_columns_indices, cur_selector_id,
bytecode_table.rows_amount(), 500000);
bytecode_circuit.get_reserved_dynamic_tables(), bytecode_circuit, bytecode_table,
lookup_columns_indices, cur_selector_id, bytecode_table.rows_amount(), 500000);
// TODO bytecode_table.rows_amount() = 0 here, it's correct?'
return {};
}
Expand Down
3 changes: 3 additions & 0 deletions run_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ninja executables_tests && \
ctest

5 changes: 4 additions & 1 deletion tests/libs/assigner_runner/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
add_executable(assigner_runner_test runner_test.cpp)

target_link_libraries(assigner_runner_test PRIVATE zkEVMAssignerRunner zkEVMPreset GTest::gtest_main)
find_package(Boost COMPONENTS REQUIRED random)

target_link_libraries(assigner_runner_test PRIVATE zkEVMAssignerRunner zkEVMPreset GTest::gtest_main Boost::random)

target_compile_definitions(assigner_runner_test
PRIVATE BLOCK_CONFIG="${CMAKE_SOURCE_DIR}/bin/assigner/example_data/call_block.json"
PRIVATE STATE_CONFIG="${CMAKE_SOURCE_DIR}/bin/assigner/example_data/state.json")
Expand Down
Loading
Loading