From f267bfc0cfd4ad1374af52d3e6d701d740e2d328 Mon Sep 17 00:00:00 2001 From: Koby Date: Wed, 22 Feb 2023 08:46:25 +0100 Subject: [PATCH 1/7] feat(build): Nix flake to build with --- Cargo.lock | 22 ++++- crates/nargo/Cargo.toml | 3 +- crates/nargo/build.rs | 12 +++ flake.lock | 185 ++++++++++++++++++++++++++++++++++++++++ flake.nix | 105 +++++++++++++++++++++++ 5 files changed, 322 insertions(+), 5 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/Cargo.lock b/Cargo.lock index d886da120ef..2a5aaff7f19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -385,11 +385,11 @@ dependencies = [ [[package]] name = "barretenberg_static_lib" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=d0e1257c22618f98f53781faba3c372ef91a0172#d0e1257c22618f98f53781faba3c372ef91a0172" +source = "git+https://github.com/noir-lang/aztec_backend?branch=kh/nix-connect#1dd146196538acd0ada0b15acb86a203f57eaf8c" dependencies = [ "barretenberg_wrapper", "blake2", - "common", + "common 0.1.0 (git+https://github.com/noir-lang/aztec_backend?branch=kh/nix-connect)", "dirs 3.0.2", "downloader", "hex", @@ -408,7 +408,7 @@ version = "0.1.0" source = "git+https://github.com/noir-lang/aztec_backend?rev=d0e1257c22618f98f53781faba3c372ef91a0172#d0e1257c22618f98f53781faba3c372ef91a0172" dependencies = [ "blake2", - "common", + "common 0.1.0 (git+https://github.com/noir-lang/aztec_backend?rev=d0e1257c22618f98f53781faba3c372ef91a0172)", "sha2", "sled", "tempfile", @@ -418,7 +418,7 @@ dependencies = [ [[package]] name = "barretenberg_wrapper" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec-connect?branch=kw/noir-dsl#225bb52f9f9831fae94d0bfbd2f3c554b92ed039" +source = "git+https://github.com/kobyhallx/aztec-connect?branch=kh/nix-flake#ebbd586fba93b31e3c72cd082a8ca4bdb4a1706d" dependencies = [ "bindgen", "cmake", @@ -645,6 +645,20 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "common" +version = "0.1.0" +source = "git+https://github.com/noir-lang/aztec_backend?branch=kh/nix-connect#1dd146196538acd0ada0b15acb86a203f57eaf8c" +dependencies = [ + "acvm 0.4.1", + "blake2", + "dirs 3.0.2", + "downloader", + "indicatif", + "regex", + "sled", +] + [[package]] name = "common" version = "0.1.0" diff --git a/crates/nargo/Cargo.toml b/crates/nargo/Cargo.toml index 1e5ecdc3c07..f3baecde492 100644 --- a/crates/nargo/Cargo.toml +++ b/crates/nargo/Cargo.toml @@ -31,7 +31,8 @@ termcolor = "1.1.2" tempdir = "0.3.7" # Backends -aztec_backend = { optional = true, package = "barretenberg_static_lib", git = "https://github.com/noir-lang/aztec_backend", rev = "d0e1257c22618f98f53781faba3c372ef91a0172" } +# aztec_backend = { optional = true, package = "barretenberg_static_lib", [git = "https://github.com/noir-lang/aztec_backend", rev = "d0e1257c22618f98f53781faba3c372ef91a0172"] } +aztec_backend = { optional = true, package = "barretenberg_static_lib", git = "https://github.com/noir-lang/aztec_backend", branch = "kh/nix-connect" } aztec_wasm_backend = { optional = true, package = "barretenberg_wasm", git = "https://github.com/noir-lang/aztec_backend", rev = "d0e1257c22618f98f53781faba3c372ef91a0172" } marlin_arkworks_backend = { optional = true, git = "https://github.com/noir-lang/marlin_arkworks_backend", rev = "144378edad821bfaa52bf2cacca8ecc87514a4fc" } diff --git a/crates/nargo/build.rs b/crates/nargo/build.rs index 9bd33aab0e7..a059097ca2d 100644 --- a/crates/nargo/build.rs +++ b/crates/nargo/build.rs @@ -70,8 +70,20 @@ pub fn copy, V: AsRef>(from: U, to: V) -> Result<(), std::i Ok(()) } +const GIT_COMMIT: &&str = &"GIT_COMMIT"; + fn main() { check_rustc_version(); + + if let Ok(git_commit) = std::env::var(GIT_COMMIT) { + println!("Using environment defined $GIT_COMMIT={git_commit}") + } else { + println!("Collecting Git Data from system..."); + build_data::set_GIT_COMMIT(); + build_data::set_GIT_DIRTY(); + build_data::no_debug_rebuilds(); + } + let stdlib_src_dir = Path::new("../../noir_stdlib/"); rerun_if_stdlib_changes(stdlib_src_dir); let target = dirs::config_dir().unwrap().join("noir-lang").join("std"); diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000000..6548616a937 --- /dev/null +++ b/flake.lock @@ -0,0 +1,185 @@ +{ + "nodes": { + "crane": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1676515499, + "narHash": "sha256-Qk9kVSAT/Iz2AwrtnOfCih6KB2Odu4mN8fBvRjiMdZ0=", + "owner": "ipetkov", + "repo": "crane", + "rev": "cfb6efcfc706e21c84682171581168e591b265d9", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "libbarretenberg_flake": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1676556021, + "narHash": "sha256-97Mmp0JlRLECyL8Uw3C5KaAZLE/2LISHbJJ1A6+F1TU=", + "owner": "kobyhallx", + "repo": "aztec-connect", + "rev": "2803779d36eabdace4afd4c8b8c39648431f472c", + "type": "github" + }, + "original": { + "owner": "kobyhallx", + "ref": "kh-ndsl-w-flake", + "repo": "aztec-connect", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1676487294, + "narHash": "sha256-fbD0tVsowxAUXwfw2C9EdEAH8UEJNsCm0zJcfkJy3Pg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "63b5955814db30d2e2ff7157aaa5665b502ed2f4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "crane": "crane", + "flake-utils": "flake-utils_2", + "libbarretenberg_flake": "libbarretenberg_flake", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay_2" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "crane", + "flake-utils" + ], + "nixpkgs": [ + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1676437770, + "narHash": "sha256-mhJye91Bn0jJIE7NnEywGty/U5qdELfsT8S+FBjTdG4=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "a619538647bd03e3ee1d7b947f7c11ff289b376e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1676514619, + "narHash": "sha256-/zVNJdETe/7txiP8NVjAjrAPudLIvjKJWgztuTi75Qw=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "3bab7ae4a80de02377005d611dc4b0a13082aa7c", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000000..f4e0fc6cc32 --- /dev/null +++ b/flake.nix @@ -0,0 +1,105 @@ +{ + description = "Build Nargo"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + + crane = { + url = "github:ipetkov/crane"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + flake-utils.url = "github:numtide/flake-utils"; + + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-utils.follows = "flake-utils"; + }; + }; + + libbarretenberg_flake = { + url = "github:kobyhallx/aztec-connect/kh-ndsl-w-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = + { self, nixpkgs, crane, flake-utils, rust-overlay, libbarretenberg_flake, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ (import rust-overlay) ]; + }; + + + craneLib = (crane.mkLib pkgs).overrideScope' (final: prev: { + stdenv = pkgs.llvmPackages.stdenv; + }); + + # TODO: line below looks terrible we can do better naming here in referenced flake + libbarretenberg = libbarretenberg_flake.packages.${system}.default; + + commonArgs = { + src = craneLib.cleanCargoSource ./.; + + doCheck = false; + + cargoCheckCommand = "true"; + cargoBuildCommand = "cargo build --release"; + + }; + + GIT_COMMIT = pkgs.lib.optionalString (self ? rev) self.rev; + GIT_DIRTY = "false"; + + nargo = craneLib.buildPackage ({ + pname = "nargo"; + src = craneLib.cleanCargoSource ./.; + + doCheck = false; + + inherit GIT_COMMIT; + inherit GIT_DIRTY; + + # Bindegn needs these + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; + BINDGEN_EXTRA_CLANG_ARGS = "-I${libbarretenberg}/include/aztec -L${libbarretenberg}"; + RUSTFLAGS = "-L${libbarretenberg}/lib -lomp"; + + buildInputs = [ + pkgs.llvmPackages.openmp + libbarretenberg + ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ + pkgs.libiconv + ]; + } // commonArgs); + + in rec { + checks = { inherit nargo; }; + + packages.default = nargo; + + # apps.default = flake-utils.lib.mkApp { + # drv = pkgs.writeShellScriptBin "barretenberg_wrapper" '' + # ${my-crate}/bin/barretenberg_wrapper + # ''; + # }; + + apps.default = flake-utils.lib.mkApp { drv = nargo; }; + + devShells.default = pkgs.mkShell { + inputsFrom = builtins.attrValues self.checks; + + buildInputs = packages.default.buildInputs ; + + BINDGEN_EXTRA_CLANG_ARGS = "-I${libbarretenberg}/include/aztec -L${libbarretenberg}"; + + nativeBuildInputs = with pkgs; [ + cargo + rustc ]; + }; + }); +} From 64ba1b15ea1b87ff0f821fb43ad347df24d1f17d Mon Sep 17 00:00:00 2001 From: Koby Date: Tue, 14 Mar 2023 14:49:18 +0100 Subject: [PATCH 2/7] feat(nix): updates nix to bb-sys --- Cargo.lock | 196 +++++++++++++++++----------------------- crates/nargo/Cargo.toml | 5 +- flake.lock | 50 +++++----- flake.nix | 32 +++++-- 4 files changed, 131 insertions(+), 152 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c318f2c29db..b8cf8d67b92 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,6 +14,18 @@ dependencies = [ "serde", ] +[[package]] +name = "acir" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d756bcab90b3a4a84dc53245890cf9bb8fcde31a1394931f5abca551b48eb20" +dependencies = [ + "acir_field 0.4.1", + "flate2", + "rmp-serde", + "serde", +] + [[package]] name = "acir" version = "0.6.0" @@ -43,6 +55,22 @@ dependencies = [ "serde", ] +[[package]] +name = "acir_field" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb7e1e30625a9125a0e700c6c6fd7442ffbcb1d235933100b791ba3786ef49e" +dependencies = [ + "ark-bn254 0.3.0", + "ark-ff 0.3.0", + "blake2", + "cfg-if 1.0.0", + "hex", + "num-bigint", + "num-traits", + "serde", +] + [[package]] name = "acir_field" version = "0.6.0" @@ -76,6 +104,24 @@ dependencies = [ "thiserror", ] +[[package]] +name = "acvm" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c4fae94e7f3fe0d21bec4796de00bbf0cd8f781271b5203dea54897aa5387b9" +dependencies = [ + "acir 0.4.1", + "acvm_stdlib 0.4.1", + "blake2", + "hex", + "indexmap", + "k256", + "num-bigint", + "num-traits", + "sha2 0.9.9", + "thiserror", +] + [[package]] name = "acvm" version = "0.6.0" @@ -103,6 +149,15 @@ dependencies = [ "acir_field 0.3.1", ] +[[package]] +name = "acvm_stdlib" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf6617b72c2cd4e965d425bc768bb77a803e485a7e37cbc09cccc5967becd7a" +dependencies = [ + "acir 0.4.1", +] + [[package]] name = "acvm_stdlib" version = "0.6.0" @@ -475,17 +530,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -508,34 +552,27 @@ dependencies = [ ] [[package]] -name = "barretenberg_static_lib" +name = "barretenberg-sys" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=b7f68bddcf05de22f77726c94450791141accc9a#b7f68bddcf05de22f77726c94450791141accc9a" +source = "git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys#14944aba2e4c1d14ef09beb2e1b0211d2b61f07e" dependencies = [ - "barretenberg_wrapper", - "common", + "bindgen", + "pkg-config", ] [[package]] name = "barretenberg_wasm" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=b7f68bddcf05de22f77726c94450791141accc9a#b7f68bddcf05de22f77726c94450791141accc9a" +source = "git+https://github.com/noir-lang/aztec_backend?rev=d0e1257c22618f98f53781faba3c372ef91a0172#d0e1257c22618f98f53781faba3c372ef91a0172" dependencies = [ + "blake2", "common", + "sha2 0.9.9", + "sled", + "tempfile", "wasmer", ] -[[package]] -name = "barretenberg_wrapper" -version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec-connect?branch=kw/noir-dsl#b3abf261314b5ae5bc38e75eb8b40628b4d49fe8" -dependencies = [ - "bindgen", - "cmake", - "hex", - "num_cpus 0.2.13", -] - [[package]] name = "base64" version = "0.21.0" @@ -544,15 +581,13 @@ checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "bindgen" -version = "0.60.1" +version = "0.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6" +checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" dependencies = [ "bitflags", "cexpr", "clang-sys", - "clap 3.2.23", - "env_logger", "lazy_static", "lazycell", "log", @@ -562,6 +597,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", + "syn", "which", ] @@ -723,21 +759,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "clap" -version = "3.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" -dependencies = [ - "atty", - "bitflags", - "clap_lex 0.2.4", - "indexmap", - "strsim", - "termcolor", - "textwrap", -] - [[package]] name = "clap" version = "4.1.4" @@ -746,7 +767,7 @@ checksum = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76" dependencies = [ "bitflags", "clap_derive", - "clap_lex 0.3.1", + "clap_lex", "is-terminal", "once_cell", "strsim", @@ -766,15 +787,6 @@ dependencies = [ "syn", ] -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] - [[package]] name = "clap_lex" version = "0.3.1" @@ -784,15 +796,6 @@ dependencies = [ "os_str_bytes", ] -[[package]] -name = "cmake" -version = "0.1.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" -dependencies = [ - "cc", -] - [[package]] name = "codespan" version = "0.9.5" @@ -852,9 +855,9 @@ dependencies = [ [[package]] name = "common" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=b7f68bddcf05de22f77726c94450791141accc9a#b7f68bddcf05de22f77726c94450791141accc9a" +source = "git+https://github.com/noir-lang/aztec_backend?rev=d0e1257c22618f98f53781faba3c372ef91a0172#d0e1257c22618f98f53781faba3c372ef91a0172" dependencies = [ - "acvm 0.6.0", + "acvm 0.4.1", "blake2", "dirs 3.0.2", "downloader", @@ -1331,19 +1334,6 @@ dependencies = [ "syn", ] -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - [[package]] name = "errno" version = "0.2.8" @@ -1686,15 +1676,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.2.6" @@ -1760,12 +1741,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" version = "0.14.24" @@ -2133,11 +2108,11 @@ name = "nargo" version = "0.2.0" dependencies = [ "acvm 0.6.0", - "barretenberg_static_lib", + "barretenberg-sys", "barretenberg_wasm", "build-data", "cfg-if 1.0.0", - "clap 4.1.4", + "clap", "color-eyre", "const_format", "dirs 4.0.0", @@ -2190,7 +2165,7 @@ name = "noirc_driver" version = "0.2.0" dependencies = [ "acvm 0.6.0", - "clap 4.1.4", + "clap", "fm", "noirc_abi", "noirc_errors", @@ -2284,15 +2259,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee7e88156f3f9e19bdd598f8d6c9db7bf4078f99f8381f43a55b09648d1a6e3" -dependencies = [ - "libc", -] - [[package]] name = "num_cpus" version = "1.15.0" @@ -2428,6 +2394,12 @@ dependencies = [ "der", ] +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -2594,7 +2566,7 @@ dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus 1.15.0", + "num_cpus", ] [[package]] @@ -3294,12 +3266,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "textwrap" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" - [[package]] name = "thiserror" version = "1.0.38" @@ -3367,7 +3333,7 @@ dependencies = [ "libc", "memchr", "mio", - "num_cpus 1.15.0", + "num_cpus", "pin-project-lite", "socket2", "windows-sys 0.42.0", diff --git a/crates/nargo/Cargo.toml b/crates/nargo/Cargo.toml index 58a7bb5e6ef..ac6c42a85a0 100644 --- a/crates/nargo/Cargo.toml +++ b/crates/nargo/Cargo.toml @@ -35,8 +35,9 @@ color-eyre = "0.6.2" # Backends -aztec_backend = { optional = true, package = "barretenberg_static_lib", git = "https://github.com/noir-lang/aztec_backend", rev = "b7f68bddcf05de22f77726c94450791141accc9a" } -aztec_wasm_backend = { optional = true, package = "barretenberg_wasm", git = "https://github.com/noir-lang/aztec_backend", rev = "b7f68bddcf05de22f77726c94450791141accc9a" } +# aztec_backend = { optional = true, package = "barretenberg_static_lib", [git = "https://github.com/noir-lang/aztec_backend", rev = "d0e1257c22618f98f53781faba3c372ef91a0172"] } +aztec_backend = { optional = true, package = "barretenberg-sys", git = "https://github.com/noir-lang/aztec_backend", branch = "phated/bb-sys" } +aztec_wasm_backend = { optional = true, package = "barretenberg_wasm", git = "https://github.com/noir-lang/aztec_backend", rev = "d0e1257c22618f98f53781faba3c372ef91a0172" } marlin_arkworks_backend = { optional = true, git = "https://github.com/noir-lang/marlin_arkworks_backend", rev = "144378edad821bfaa52bf2cacca8ecc87514a4fc" } [features] diff --git a/flake.lock b/flake.lock index 6548616a937..4f228f7ecd5 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1676515499, - "narHash": "sha256-Qk9kVSAT/Iz2AwrtnOfCih6KB2Odu4mN8fBvRjiMdZ0=", + "lastModified": 1678152261, + "narHash": "sha256-cPRDxwygVMleiSEGELrvAiq9vYAN4c3KK/K4UEO13vU=", "owner": "ipetkov", "repo": "crane", - "rev": "cfb6efcfc706e21c84682171581168e591b265d9", + "rev": "5291dd0aa7a52d607fc952763ef60714e4c881d4", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "flake-utils_3": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", "type": "github" }, "original": { @@ -92,27 +92,27 @@ ] }, "locked": { - "lastModified": 1676556021, - "narHash": "sha256-97Mmp0JlRLECyL8Uw3C5KaAZLE/2LISHbJJ1A6+F1TU=", - "owner": "kobyhallx", - "repo": "aztec-connect", - "rev": "2803779d36eabdace4afd4c8b8c39648431f472c", - "type": "github" + "lastModified": 1678726748, + "narHash": "sha256-/SLomvPwsyvZAqL3U7VcpwBU9kJeWJrwqYm5DRRQMT0=", + "ref": "phated/nix", + "rev": "a0b82bcd5de86f9fa27afd4490b4c5cd9251fea2", + "revCount": 931, + "type": "git", + "url": "https://github.com/AztecProtocol/barretenberg" }, "original": { - "owner": "kobyhallx", - "ref": "kh-ndsl-w-flake", - "repo": "aztec-connect", - "type": "github" + "ref": "phated/nix", + "type": "git", + "url": "https://github.com/AztecProtocol/barretenberg" } }, "nixpkgs": { "locked": { - "lastModified": 1676487294, - "narHash": "sha256-fbD0tVsowxAUXwfw2C9EdEAH8UEJNsCm0zJcfkJy3Pg=", + "lastModified": 1678724065, + "narHash": "sha256-MjeRjunqfGTBGU401nxIjs7PC9PZZ1FBCZp/bRB3C2M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "63b5955814db30d2e2ff7157aaa5665b502ed2f4", + "rev": "b8afc8489dc96f29f69bec50fdc51e27883f89c1", "type": "github" }, "original": { @@ -143,11 +143,11 @@ ] }, "locked": { - "lastModified": 1676437770, - "narHash": "sha256-mhJye91Bn0jJIE7NnEywGty/U5qdELfsT8S+FBjTdG4=", + "lastModified": 1677812689, + "narHash": "sha256-EakqhgRnjVeYJv5+BJx/NZ7/eFTMBxc4AhICUNquhUg=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "a619538647bd03e3ee1d7b947f7c11ff289b376e", + "rev": "e53e8853aa7b0688bc270e9e6a681d22e01cf299", "type": "github" }, "original": { @@ -166,11 +166,11 @@ ] }, "locked": { - "lastModified": 1676514619, - "narHash": "sha256-/zVNJdETe/7txiP8NVjAjrAPudLIvjKJWgztuTi75Qw=", + "lastModified": 1678760344, + "narHash": "sha256-N8u9/O0NWt3PUQc9xmCeod1SFilOFicALjtYtslib2g=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "3bab7ae4a80de02377005d611dc4b0a13082aa7c", + "rev": "d907affef544f64bd6886fe6bcc5fa2495a82373", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index f4e0fc6cc32..83748bb908c 100644 --- a/flake.nix +++ b/flake.nix @@ -20,7 +20,7 @@ }; libbarretenberg_flake = { - url = "github:kobyhallx/aztec-connect/kh-ndsl-w-flake"; + url = "git+https://github.com/AztecProtocol/barretenberg?ref=phated/nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; @@ -31,16 +31,24 @@ let pkgs = import nixpkgs { inherit system; - overlays = [ (import rust-overlay) ]; + overlays = [ + rust-overlay.overlays.default + libbarretenberg_flake.overlays.default + ]; }; + rustToolchain = pkgs.rust-bin.stable."1.66.0".default; - craneLib = (crane.mkLib pkgs).overrideScope' (final: prev: { - stdenv = pkgs.llvmPackages.stdenv; + craneLibScope = (crane.mkLib pkgs).overrideScope' (final: prev: { + # As per https://discourse.nixos.org/t/gcc11stdenv-and-clang/17734/7 + stdenv = with pkgs; + if (stdenv.targetPlatform.isGnu && stdenv.targetPlatform.isAarch64) then + overrideCC llvmPackages.stdenv (llvmPackages.clang.override { gccForLibs = gcc11.cc; }) + else + llvmPackages.stdenv; }); - # TODO: line below looks terrible we can do better naming here in referenced flake - libbarretenberg = libbarretenberg_flake.packages.${system}.default; + craneLib = craneLibScope.overrideToolchain rustToolchain; commonArgs = { src = craneLib.cleanCargoSource ./.; @@ -66,12 +74,16 @@ # Bindegn needs these LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; - BINDGEN_EXTRA_CLANG_ARGS = "-I${libbarretenberg}/include/aztec -L${libbarretenberg}"; - RUSTFLAGS = "-L${libbarretenberg}/lib -lomp"; + BINDGEN_EXTRA_CLANG_ARGS = "-I${libbarretenberg_flake}/include/barretenberg -L${libbarretenberg_flake}"; + # RUSTFLAGS = "-L${libbarretenberg}/lib -lomp"; + + nativeBuildInputs = [ + pkgs.pkg-config + ]; buildInputs = [ pkgs.llvmPackages.openmp - libbarretenberg + pkgs.barretenberg ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.libiconv ]; @@ -95,7 +107,7 @@ buildInputs = packages.default.buildInputs ; - BINDGEN_EXTRA_CLANG_ARGS = "-I${libbarretenberg}/include/aztec -L${libbarretenberg}"; + BINDGEN_EXTRA_CLANG_ARGS = "-I${libbarretenberg_flake}/include/barretenberg -L${libbarretenberg_flake}"; nativeBuildInputs = with pkgs; [ cargo From 448b2fb5e488270c97d02af3d136c4e58c7776ba Mon Sep 17 00:00:00 2001 From: Koby Date: Thu, 16 Mar 2023 13:07:27 +0100 Subject: [PATCH 3/7] chore: update to work with upstream bb --- Cargo.lock | 129 ++++++++++------------------------------ crates/nargo/Cargo.toml | 3 +- crates/nargo/build.rs | 3 +- flake.lock | 67 ++++++++++----------- flake.nix | 45 ++++++++------ 5 files changed, 93 insertions(+), 154 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f116297bdb0..d6740a95f58 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,18 +14,6 @@ dependencies = [ "serde", ] -[[package]] -name = "acir" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d756bcab90b3a4a84dc53245890cf9bb8fcde31a1394931f5abca551b48eb20" -dependencies = [ - "acir_field 0.4.1", - "flate2", - "rmp-serde", - "serde", -] - [[package]] name = "acir" version = "0.6.0" @@ -55,22 +43,6 @@ dependencies = [ "serde", ] -[[package]] -name = "acir_field" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb7e1e30625a9125a0e700c6c6fd7442ffbcb1d235933100b791ba3786ef49e" -dependencies = [ - "ark-bn254 0.3.0", - "ark-ff 0.3.0", - "blake2", - "cfg-if 1.0.0", - "hex", - "num-bigint", - "num-traits", - "serde", -] - [[package]] name = "acir_field" version = "0.6.0" @@ -104,24 +76,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "acvm" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c4fae94e7f3fe0d21bec4796de00bbf0cd8f781271b5203dea54897aa5387b9" -dependencies = [ - "acir 0.4.1", - "acvm_stdlib 0.4.1", - "blake2", - "hex", - "indexmap", - "k256", - "num-bigint", - "num-traits", - "sha2 0.9.9", - "thiserror", -] - [[package]] name = "acvm" version = "0.6.0" @@ -149,15 +103,6 @@ dependencies = [ "acir_field 0.3.1", ] -[[package]] -name = "acvm_stdlib" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf6617b72c2cd4e965d425bc768bb77a803e485a7e37cbc09cccc5967becd7a" -dependencies = [ - "acir 0.4.1", -] - [[package]] name = "acvm_stdlib" version = "0.6.0" @@ -554,34 +499,30 @@ dependencies = [ [[package]] name = "barretenberg-sys" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=2cb523d2ab95249157b22e198d9dcd6841c3eed8#2cb523d2ab95249157b22e198d9dcd6841c3eed8" +source = "git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys#8a8bcc959d23d9cce3a166129c89df5deed32dc0" dependencies = [ "bindgen", + "color-eyre", "pkg-config", + "thiserror", ] [[package]] -name = "barretenberg_wasm" +name = "barretenberg_static_lib" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=2cb523d2ab95249157b22e198d9dcd6841c3eed8#2cb523d2ab95249157b22e198d9dcd6841c3eed8" +source = "git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys#8a8bcc959d23d9cce3a166129c89df5deed32dc0" dependencies = [ - "blake2", - "common", - "sha2 0.9.9", - "sled", - "tempfile", - "wasmer", + "barretenberg-sys", + "common 0.1.0 (git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys)", ] [[package]] -name = "barretenberg_wrapper" +name = "barretenberg_wasm" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec-connect?branch=kw/noir-dsl#dbd544318819cf710dede8ffb7b7eafa112f5aed" +source = "git+https://github.com/noir-lang/aztec_backend?rev=2cb523d2ab95249157b22e198d9dcd6841c3eed8#2cb523d2ab95249157b22e198d9dcd6841c3eed8" dependencies = [ - "bindgen", - "cmake", - "hex", - "num_cpus 0.2.13", + "common 0.1.0 (git+https://github.com/noir-lang/aztec_backend?rev=2cb523d2ab95249157b22e198d9dcd6841c3eed8)", + "wasmer", ] [[package]] @@ -771,21 +712,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "clap" -version = "3.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" -dependencies = [ - "atty", - "bitflags", - "clap_lex 0.2.4", - "indexmap", - "strsim", - "termcolor", - "textwrap", -] - [[package]] name = "clap" version = "4.1.8" @@ -794,7 +720,7 @@ checksum = "c3d7ae14b20b94cb02149ed21a86c423859cbe18dc7ed69845cace50e52b40a5" dependencies = [ "bitflags", "clap_derive", - "clap_lex 0.3.2", + "clap_lex", "is-terminal", "once_cell", "strsim", @@ -814,15 +740,6 @@ dependencies = [ "syn", ] -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] - [[package]] name = "clap_lex" version = "0.3.2" @@ -888,12 +805,26 @@ dependencies = [ "tracing-error", ] +[[package]] +name = "common" +version = "0.1.0" +source = "git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys#8a8bcc959d23d9cce3a166129c89df5deed32dc0" +dependencies = [ + "acvm 0.6.0", + "blake2", + "dirs 3.0.2", + "downloader", + "indicatif", + "regex", + "sled", +] + [[package]] name = "common" version = "0.1.0" source = "git+https://github.com/noir-lang/aztec_backend?rev=2cb523d2ab95249157b22e198d9dcd6841c3eed8#2cb523d2ab95249157b22e198d9dcd6841c3eed8" dependencies = [ - "acvm 0.4.1", + "acvm 0.6.0", "blake2", "dirs 3.0.2", "downloader", @@ -2144,11 +2075,11 @@ name = "nargo" version = "0.3.0" dependencies = [ "acvm 0.6.0", - "barretenberg-sys", + "barretenberg_static_lib", "barretenberg_wasm", "build-data", "cfg-if 1.0.0", - "clap 4.1.8", + "clap", "color-eyre", "const_format", "dirs 4.0.0", @@ -2201,7 +2132,7 @@ name = "noirc_driver" version = "0.3.0" dependencies = [ "acvm 0.6.0", - "clap 4.1.8", + "clap", "fm", "noirc_abi", "noirc_errors", diff --git a/crates/nargo/Cargo.toml b/crates/nargo/Cargo.toml index 94332fff187..0d06baa53ca 100644 --- a/crates/nargo/Cargo.toml +++ b/crates/nargo/Cargo.toml @@ -36,7 +36,8 @@ color-eyre = "0.6.2" # Backends # aztec_backend = { optional = true, package = "barretenberg_static_lib", [git = "https://github.com/noir-lang/aztec_backend", rev = "2cb523d2ab95249157b22e198d9dcd6841c3eed8"] } -aztec_backend = { optional = true, package = "barretenberg-sys", git = "https://github.com/noir-lang/aztec_backend", branch = "phated/bb-sys" } +# aztec_backend = { optional = true, package = "barretenberg_static_lib", path = "../../../aztec_backend/barretenberg_static_lib" } +aztec_backend = { optional = true, package = "barretenberg_static_lib", git = "https://github.com/noir-lang/aztec_backend", branch = "phated/bb-sys" } aztec_wasm_backend = { optional = true, package = "barretenberg_wasm", git = "https://github.com/noir-lang/aztec_backend", rev = "2cb523d2ab95249157b22e198d9dcd6841c3eed8" } marlin_arkworks_backend = { optional = true, git = "https://github.com/noir-lang/marlin_arkworks_backend", rev = "144378edad821bfaa52bf2cacca8ecc87514a4fc" } diff --git a/crates/nargo/build.rs b/crates/nargo/build.rs index 406c6ef7209..c85cef8c0e3 100644 --- a/crates/nargo/build.rs +++ b/crates/nargo/build.rs @@ -1,6 +1,5 @@ use rustc_version::{version, Version}; use std::path::Path; - /// Expects that the given directory is an existing path fn rerun_if_stdlib_changes(directory: &Path) { for entry in std::fs::read_dir(directory).unwrap() { @@ -22,6 +21,8 @@ fn check_rustc_version() { ); } +const GIT_COMMIT: &&str = &"GIT_COMMIT"; + fn main() { check_rustc_version(); diff --git a/flake.lock b/flake.lock index 4f228f7ecd5..124c843061b 100644 --- a/flake.lock +++ b/flake.lock @@ -1,9 +1,30 @@ { "nodes": { + "barretenberg": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1678819958, + "narHash": "sha256-ResINN3e6J91RlGlu9BVucxIbIRRbWMKL6HcyCNt9ZY=", + "ref": "refs/heads/master", + "rev": "f2f8d1f7a24ca73e30c981fd245c86f7f964abb7", + "revCount": 931, + "type": "git", + "url": "https://github.com/AztecProtocol/barretenberg" + }, + "original": { + "type": "git", + "url": "https://github.com/AztecProtocol/barretenberg" + } + }, "crane": { "inputs": { "flake-compat": "flake-compat", - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ], @@ -71,11 +92,11 @@ }, "flake-utils_3": { "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "lastModified": 1678901627, + "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", "owner": "numtide", "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", "type": "github" }, "original": { @@ -84,35 +105,13 @@ "type": "github" } }, - "libbarretenberg_flake": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1678726748, - "narHash": "sha256-/SLomvPwsyvZAqL3U7VcpwBU9kJeWJrwqYm5DRRQMT0=", - "ref": "phated/nix", - "rev": "a0b82bcd5de86f9fa27afd4490b4c5cd9251fea2", - "revCount": 931, - "type": "git", - "url": "https://github.com/AztecProtocol/barretenberg" - }, - "original": { - "ref": "phated/nix", - "type": "git", - "url": "https://github.com/AztecProtocol/barretenberg" - } - }, "nixpkgs": { "locked": { - "lastModified": 1678724065, - "narHash": "sha256-MjeRjunqfGTBGU401nxIjs7PC9PZZ1FBCZp/bRB3C2M=", + "lastModified": 1678875422, + "narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b8afc8489dc96f29f69bec50fdc51e27883f89c1", + "rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459", "type": "github" }, "original": { @@ -124,9 +123,9 @@ }, "root": { "inputs": { + "barretenberg": "barretenberg", "crane": "crane", - "flake-utils": "flake-utils_2", - "libbarretenberg_flake": "libbarretenberg_flake", + "flake-utils": "flake-utils_3", "nixpkgs": "nixpkgs", "rust-overlay": "rust-overlay_2" } @@ -166,11 +165,11 @@ ] }, "locked": { - "lastModified": 1678760344, - "narHash": "sha256-N8u9/O0NWt3PUQc9xmCeod1SFilOFicALjtYtslib2g=", + "lastModified": 1678933473, + "narHash": "sha256-UY19R278O9bwneLWC7ady8VMoQ+UlAWy8SkUsfDZvQs=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "d907affef544f64bd6886fe6bcc5fa2495a82373", + "rev": "5c1af9b9d618e02a87cdd30a3022aec0b78cd9aa", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 83748bb908c..761df9df9a6 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Build Nargo"; + description = "Nargo"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; @@ -19,21 +19,21 @@ }; }; - libbarretenberg_flake = { - url = "git+https://github.com/AztecProtocol/barretenberg?ref=phated/nix"; + barretenberg = { + url = "git+https://github.com/AztecProtocol/barretenberg"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = - { self, nixpkgs, crane, flake-utils, rust-overlay, libbarretenberg_flake, ... }: + { self, nixpkgs, crane, flake-utils, rust-overlay, barretenberg, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ rust-overlay.overlays.default - libbarretenberg_flake.overlays.default + barretenberg.overlays.default ]; }; @@ -51,7 +51,7 @@ craneLib = craneLibScope.overrideToolchain rustToolchain; commonArgs = { - src = craneLib.cleanCargoSource ./.; + src = ./.; doCheck = false; @@ -60,12 +60,14 @@ }; - GIT_COMMIT = pkgs.lib.optionalString (self ? rev) self.rev; + src = pkgs.copyPathToStore ./.; + + # This is a problem for now + GIT_COMMIT = if (self ? rev) then self.rev else "unknown"; GIT_DIRTY = "false"; nargo = craneLib.buildPackage ({ pname = "nargo"; - src = craneLib.cleanCargoSource ./.; doCheck = false; @@ -74,11 +76,10 @@ # Bindegn needs these LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; - BINDGEN_EXTRA_CLANG_ARGS = "-I${libbarretenberg_flake}/include/barretenberg -L${libbarretenberg_flake}"; - # RUSTFLAGS = "-L${libbarretenberg}/lib -lomp"; nativeBuildInputs = [ pkgs.pkg-config + pkgs.llvmPackages.bintools ]; buildInputs = [ @@ -94,24 +95,30 @@ packages.default = nargo; - # apps.default = flake-utils.lib.mkApp { - # drv = pkgs.writeShellScriptBin "barretenberg_wrapper" '' - # ${my-crate}/bin/barretenberg_wrapper - # ''; - # }; - apps.default = flake-utils.lib.mkApp { drv = nargo; }; - devShells.default = pkgs.mkShell { + devShells.default = pkgs.mkShell.override { stdenv = pkgs.llvmPackages.stdenv; } { inputsFrom = builtins.attrValues self.checks; buildInputs = packages.default.buildInputs ; - BINDGEN_EXTRA_CLANG_ARGS = "-I${libbarretenberg_flake}/include/barretenberg -L${libbarretenberg_flake}"; + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; + # Uncertain if below line is needed. dev Shell is not yet fully working + # BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.barretenberg}/include -isystem ${pkgs.llvmPackages.libcxx.dev}/include"; nativeBuildInputs = with pkgs; [ + which + starship + git cargo - rustc ]; + rustc + pkg-config + ]; + + shellHook = '' + eval "$(starship init bash)" + ''; + }; }); } From 272ecfa2bcfed0878ccb5e7b3dce654b80568385 Mon Sep 17 00:00:00 2001 From: Koby Date: Fri, 17 Mar 2023 14:27:37 +0100 Subject: [PATCH 4/7] feat(nix): Rev read from file or taken from package meta --- flake.nix | 89 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 68 insertions(+), 21 deletions(-) diff --git a/flake.nix b/flake.nix index 761df9df9a6..089f721f00d 100644 --- a/flake.nix +++ b/flake.nix @@ -50,35 +50,37 @@ craneLib = craneLibScope.overrideToolchain rustToolchain; - commonArgs = { - src = ./.; - - doCheck = false; + environment = { + # rust-bindgen needs to know the location of libclang + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; - cargoCheckCommand = "true"; - cargoBuildCommand = "cargo build --release"; + # We set the environment variable because requiring 2 versions of bb collide when pkg-config searches for it + BARRETENBERG_BIN_DIR = "${pkgs.pkgsCross.wasi32.barretenberg}/bin"; + # We fetch the transcript as a dependency and provide it to the build. + # This is necessary because the Nix sandbox is read-only and downloading during tests would fail + BARRETENBERG_TRANSCRIPT = pkgs.fetchurl { + url = "http://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/sealed/transcript00.dat"; + sha256 = "sha256-ryR/d+vpOCxa3gM0lze2UVUKNUinj0nN3ScCfysN84k="; + }; }; - src = pkgs.copyPathToStore ./.; - + COMMIT_HASH = if builtins.pathExists ./revision.checksum + then builtins.readFile ./revision.checksum + else "unknown"; + # COMMIT_HASH = builtins.tryEval (builtins.readFile "revision.checksum" {}) ? ""; # This is a problem for now - GIT_COMMIT = if (self ? rev) then self.rev else "unknown"; + GIT_COMMIT = if (self ? rev) then self.rev else COMMIT_HASH; GIT_DIRTY = "false"; - nargo = craneLib.buildPackage ({ + commonArgs = { pname = "nargo"; - - doCheck = false; - - inherit GIT_COMMIT; - inherit GIT_DIRTY; - - # Bindegn needs these - LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; + src = ./.; nativeBuildInputs = [ + # This provides the pkg-config tool to find barretenberg & other native libraries pkgs.pkg-config + # This provides the `lld` linker to cargo pkgs.llvmPackages.bintools ]; @@ -86,12 +88,54 @@ pkgs.llvmPackages.openmp pkgs.barretenberg ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ + # Need libiconv and apple Security on Darwin. See https://github.com/ipetkov/crane/issues/156 pkgs.libiconv + pkgs.darwin.apple_sdk.frameworks.Security ]; + + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; + + inherit GIT_COMMIT; + inherit GIT_DIRTY; + + } // environment; + + src = pkgs.copyPathToStore ./.; + + + nargo = craneLib.buildPackage ({ + + doCheck = true; + + cargoBuildCommand = "cargo build --release"; + } // commonArgs); + cargoArtifacts = craneLib.buildDepsOnly commonArgs; in rec { - checks = { inherit nargo; }; + checks = { + cargo-check = craneLib.buildPackage (commonArgs // { + inherit cargoArtifacts; + + doCheck = true; + }); + + cargo-clippy = craneLib.cargoClippy (commonArgs // { + inherit cargoArtifacts; + + cargoClippyExtraArgs = "--all-targets --workspace -- -D warnings"; + + doCheck = true; + }); + + cargo-test = craneLib.cargoTest (commonArgs // { + inherit cargoArtifacts; + + cargoTestArgs = "--workspace -- --test-threads=1"; + + doCheck = true; + }); + }; packages.default = nargo; @@ -102,17 +146,20 @@ buildInputs = packages.default.buildInputs ; + inherit COMMIT_HASH; + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; # Uncertain if below line is needed. dev Shell is not yet fully working # BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.barretenberg}/include -isystem ${pkgs.llvmPackages.libcxx.dev}/include"; - nativeBuildInputs = with pkgs; [ + TERM = "xterm-256color"; + + nativeBuildInputs = with pkgs; packages.default.buildInputs ++ [ which starship git cargo rustc - pkg-config ]; shellHook = '' From 1c8d355b1328f8b0242de3a8bd70f65b3433f82c Mon Sep 17 00:00:00 2001 From: Koby Date: Fri, 17 Mar 2023 14:29:22 +0100 Subject: [PATCH 5/7] feat(nix): Rev read from file or taken from package meta --- flake.nix | 92 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 71 insertions(+), 21 deletions(-) diff --git a/flake.nix b/flake.nix index 761df9df9a6..378994ab756 100644 --- a/flake.nix +++ b/flake.nix @@ -50,35 +50,40 @@ craneLib = craneLibScope.overrideToolchain rustToolchain; - commonArgs = { - src = ./.; - - doCheck = false; + environment = { + # rust-bindgen needs to know the location of libclang + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; - cargoCheckCommand = "true"; - cargoBuildCommand = "cargo build --release"; + # We set the environment variable because requiring 2 versions of bb collide when pkg-config searches for it + BARRETENBERG_BIN_DIR = "${pkgs.pkgsCross.wasi32.barretenberg}/bin"; + # We fetch the transcript as a dependency and provide it to the build. + # This is necessary because the Nix sandbox is read-only and downloading during tests would fail + BARRETENBERG_TRANSCRIPT = pkgs.fetchurl { + url = "http://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/sealed/transcript00.dat"; + sha256 = "sha256-ryR/d+vpOCxa3gM0lze2UVUKNUinj0nN3ScCfysN84k="; + }; }; - src = pkgs.copyPathToStore ./.; + # if file exists in git tree, commit hash wil bea read from it + # or unknown value will be assigned + COMMIT_HASH = if builtins.pathExists ./.commit + then builtins.readFile ./.commit + else "unknown"; - # This is a problem for now - GIT_COMMIT = if (self ? rev) then self.rev else "unknown"; + # rev attribute meta is only available when nix build https://github.com/noir-lang/noir + # is issued therefore reading this info from file is a hack for CI + GIT_COMMIT = if (self ? rev) then self.rev else COMMIT_HASH; GIT_DIRTY = "false"; - nargo = craneLib.buildPackage ({ + commonArgs = { pname = "nargo"; - - doCheck = false; - - inherit GIT_COMMIT; - inherit GIT_DIRTY; - - # Bindegn needs these - LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; + src = ./.; nativeBuildInputs = [ + # This provides the pkg-config tool to find barretenberg & other native libraries pkgs.pkg-config + # This provides the `lld` linker to cargo pkgs.llvmPackages.bintools ]; @@ -86,12 +91,54 @@ pkgs.llvmPackages.openmp pkgs.barretenberg ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ + # Need libiconv and apple Security on Darwin. See https://github.com/ipetkov/crane/issues/156 pkgs.libiconv + pkgs.darwin.apple_sdk.frameworks.Security ]; + + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; + + inherit GIT_COMMIT; + inherit GIT_DIRTY; + + } // environment; + + src = pkgs.copyPathToStore ./.; + + + nargo = craneLib.buildPackage ({ + + doCheck = true; + + cargoBuildCommand = "cargo build --release"; + } // commonArgs); + cargoArtifacts = craneLib.buildDepsOnly commonArgs; in rec { - checks = { inherit nargo; }; + checks = { + cargo-check = craneLib.buildPackage (commonArgs // { + inherit cargoArtifacts; + + doCheck = true; + }); + + cargo-clippy = craneLib.cargoClippy (commonArgs // { + inherit cargoArtifacts; + + cargoClippyExtraArgs = "--all-targets --workspace -- -D warnings"; + + doCheck = true; + }); + + cargo-test = craneLib.cargoTest (commonArgs // { + inherit cargoArtifacts; + + cargoTestArgs = "--workspace -- --test-threads=1"; + + doCheck = true; + }); + }; packages.default = nargo; @@ -102,17 +149,20 @@ buildInputs = packages.default.buildInputs ; + inherit COMMIT_HASH; + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; # Uncertain if below line is needed. dev Shell is not yet fully working # BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.barretenberg}/include -isystem ${pkgs.llvmPackages.libcxx.dev}/include"; - nativeBuildInputs = with pkgs; [ + TERM = "xterm-256color"; + + nativeBuildInputs = with pkgs; packages.default.buildInputs ++ [ which starship git cargo rustc - pkg-config ]; shellHook = '' From d212c7c5c85636f38415d292531106074ed8efe8 Mon Sep 17 00:00:00 2001 From: Koby Date: Thu, 23 Mar 2023 13:03:15 +0100 Subject: [PATCH 6/7] Switch backend to master bb-sys --- Cargo.lock | 10 ++++++---- crates/nargo/Cargo.toml | 2 +- flake.lock | 26 +++++++++++++------------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1bb310dce1..3e9435f8f8a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -499,10 +499,12 @@ dependencies = [ [[package]] name = "barretenberg-sys" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys#8a8bcc959d23d9cce3a166129c89df5deed32dc0" +source = "git+https://github.com/noir-lang/barretenberg-sys.git#4c2e04219b308cb1b21a4c36ad0119fa45cfb05c" dependencies = [ "bindgen", + "cc", "color-eyre", + "link-cplusplus", "pkg-config", "thiserror", ] @@ -510,10 +512,10 @@ dependencies = [ [[package]] name = "barretenberg_static_lib" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys#8a8bcc959d23d9cce3a166129c89df5deed32dc0" +source = "git+https://github.com/noir-lang/aztec_backend?branch=kh-bb-sys#3934ab9d4755c6941c5af1b9562d9aead9257fc7" dependencies = [ "barretenberg-sys", - "common 0.1.0 (git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys)", + "common 0.1.0 (git+https://github.com/noir-lang/aztec_backend?branch=kh-bb-sys)", ] [[package]] @@ -808,7 +810,7 @@ dependencies = [ [[package]] name = "common" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?branch=phated/bb-sys#8a8bcc959d23d9cce3a166129c89df5deed32dc0" +source = "git+https://github.com/noir-lang/aztec_backend?branch=kh-bb-sys#3934ab9d4755c6941c5af1b9562d9aead9257fc7" dependencies = [ "acvm 0.6.0", "blake2", diff --git a/crates/nargo/Cargo.toml b/crates/nargo/Cargo.toml index 8ec7a30d3b8..390d6f16dab 100644 --- a/crates/nargo/Cargo.toml +++ b/crates/nargo/Cargo.toml @@ -36,7 +36,7 @@ color-eyre = "0.6.2" # Backends # aztec_backend = { optional = true, package = "barretenberg_static_lib", [git = "https://github.com/noir-lang/aztec_backend", rev = "2cb523d2ab95249157b22e198d9dcd6841c3eed8"] } # aztec_backend = { optional = true, package = "barretenberg_static_lib", path = "../../../aztec_backend/barretenberg_static_lib" } -aztec_backend = { optional = true, package = "barretenberg_static_lib", git = "https://github.com/noir-lang/aztec_backend", branch = "phated/bb-sys" } +aztec_backend = { optional = true, package = "barretenberg_static_lib", git = "https://github.com/noir-lang/aztec_backend", branch = "kh-bb-sys" } aztec_wasm_backend = { optional = true, package = "barretenberg_wasm", git = "https://github.com/noir-lang/aztec_backend", rev = "2cb523d2ab95249157b22e198d9dcd6841c3eed8" } marlin_arkworks_backend = { optional = true, git = "https://github.com/noir-lang/marlin_arkworks_backend", rev = "144378edad821bfaa52bf2cacca8ecc87514a4fc" } diff --git a/flake.lock b/flake.lock index 124c843061b..bf5917d528d 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1678819958, - "narHash": "sha256-ResINN3e6J91RlGlu9BVucxIbIRRbWMKL6HcyCNt9ZY=", + "lastModified": 1679496300, + "narHash": "sha256-ZWPisIYv1sp3BlefUhCoJ8cX5HSrXOp+ia3eeVHLPJU=", "ref": "refs/heads/master", - "rev": "f2f8d1f7a24ca73e30c981fd245c86f7f964abb7", - "revCount": 931, + "rev": "b12196362497c8dfb3a64284d28de2d8ee7d730c", + "revCount": 933, "type": "git", "url": "https://github.com/AztecProtocol/barretenberg" }, @@ -31,11 +31,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1678152261, - "narHash": "sha256-cPRDxwygVMleiSEGELrvAiq9vYAN4c3KK/K4UEO13vU=", + "lastModified": 1679461034, + "narHash": "sha256-pX4jF5hfEfBGlKw2yDJj9FjvVxmMdGgqKe1I+Vbail8=", "owner": "ipetkov", "repo": "crane", - "rev": "5291dd0aa7a52d607fc952763ef60714e4c881d4", + "rev": "ec69da697357cfe7d9e8653b0cfbe73eaecca34b", "type": "github" }, "original": { @@ -107,11 +107,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1678875422, - "narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=", + "lastModified": 1679410443, + "narHash": "sha256-xDHO/jixWD+y5pmW5+2q4Z4O/I/nA4MAa30svnZKK+M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459", + "rev": "c9ece0059f42e0ab53ac870104ca4049df41b133", "type": "github" }, "original": { @@ -165,11 +165,11 @@ ] }, "locked": { - "lastModified": 1678933473, - "narHash": "sha256-UY19R278O9bwneLWC7ady8VMoQ+UlAWy8SkUsfDZvQs=", + "lastModified": 1679451618, + "narHash": "sha256-gWFYRgmeT+8xDYHK4HSuCY9Pi7mSxC+2illHrmDkG7A=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "5c1af9b9d618e02a87cdd30a3022aec0b78cd9aa", + "rev": "a89d328ca7d106c3fdbbd072b6c7088ab5b798a3", "type": "github" }, "original": { From 9d8e6f096a639e73644b6d5559423dbd6c92cdc4 Mon Sep 17 00:00:00 2001 From: Koby Date: Wed, 12 Apr 2023 15:14:09 +0200 Subject: [PATCH 7/7] Updated crs url --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 9349c0c7beb..8568beee898 100644 --- a/flake.nix +++ b/flake.nix @@ -60,7 +60,7 @@ # We fetch the transcript as a dependency and provide it to the build. # This is necessary because the Nix sandbox is read-only and downloading during tests would fail BARRETENBERG_TRANSCRIPT = pkgs.fetchurl { - url = "http://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/sealed/transcript00.dat"; + url = "http://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/monomial/transcript00.dat"; sha256 = "sha256-ryR/d+vpOCxa3gM0lze2UVUKNUinj0nN3ScCfysN84k="; }; };