From 3aca3d3bba54eaedefc7c472af8bca16ce1f163d Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Wed, 7 Dec 2022 14:05:02 +0300 Subject: refactor(tvix): build Rust projects using crate2nix Introduces granular dependency builds using crate2nix, bootstrapped off the generated configuration from the newly introduced workspace (see cl/7533). This commit checks in the generated Cargo.nix file which can be regenerated with a parameterless invocation of `crate2nix generate` in `//tvix`. I tried generating this in IFD, but it turned out to be harder than what seemed worthwhile for now. In this setup, the various build targets for Rust projects end up being attributes of the imported `Cargo.nix` file at the `tvix.crates` attribute. These still lack configuration, however, which has been fixed in the various `default.nix` files of individual projects. Note that we (temporarily) lose the ability to build tvix-eval's benchmarks in CI. I haven't figured out what magic incantation summons them from the void again ... The `eval-okay-readDir` tests from both test suites have been disabled because they fail for unknown reasons when run in this new derivation. Somebody will have to debug it! Change-Id: I2014614ccb9c8951aedbd71df7966ca191a13695 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7538 Autosubmit: tazjin Reviewed-by: flokli Tested-by: BuildkiteCI --- tvix/eval/default.nix | 39 ++++------------------ .../eval/src/tests/nix_tests/eval-okay-readDir.exp | 1 - .../eval/src/tests/nix_tests/eval-okay-readDir.nix | 1 - .../nix_tests/notyetpassing/eval-okay-readDir.exp | 1 + .../nix_tests/notyetpassing/eval-okay-readDir.nix | 1 + .../src/tests/nix_tests/notyetpassing/readDir/bar | 0 .../readDir/foo/git-hates-directories | 0 tvix/eval/src/tests/nix_tests/readDir/bar | 0 .../nix_tests/readDir/foo/git-hates-directories | 0 .../src/tests/tvix_tests/eval-okay-readDir.nix | 1 - .../tvix_tests/eval-okay-readDir.nix.disabled | 1 + 11 files changed, 10 insertions(+), 35 deletions(-) delete mode 100644 tvix/eval/src/tests/nix_tests/eval-okay-readDir.exp delete mode 100644 tvix/eval/src/tests/nix_tests/eval-okay-readDir.nix create mode 100644 tvix/eval/src/tests/nix_tests/notyetpassing/eval-okay-readDir.exp create mode 100644 tvix/eval/src/tests/nix_tests/notyetpassing/eval-okay-readDir.nix create mode 100644 tvix/eval/src/tests/nix_tests/notyetpassing/readDir/bar create mode 100644 tvix/eval/src/tests/nix_tests/notyetpassing/readDir/foo/git-hates-directories delete mode 100644 tvix/eval/src/tests/nix_tests/readDir/bar delete mode 100644 tvix/eval/src/tests/nix_tests/readDir/foo/git-hates-directories delete mode 100644 tvix/eval/src/tests/tvix_tests/eval-okay-readDir.nix create mode 100644 tvix/eval/src/tests/tvix_tests/eval-okay-readDir.nix.disabled (limited to 'tvix/eval') diff --git a/tvix/eval/default.nix b/tvix/eval/default.nix index f7480e826828..91661291f7b6 100644 --- a/tvix/eval/default.nix +++ b/tvix/eval/default.nix @@ -1,34 +1,9 @@ -{ depot, pkgs, lib, ... }: +# TODO: find a way to build the benchmarks via crate2nix +{ depot, pkgs, ... }: -lib.fix (self: depot.third_party.naersk.buildPackage (lib.fix (naerskArgs: { - src = depot.third_party.gitignoreSource ./.; - # see https://github.com/nix-community/naersk/issues/169 - root = depot.tvix.naerskRootFor ./Cargo.toml; +depot.tvix.crates.workspaceMembers.tvix-eval.build.override { + runTests = true; - doCheck = true; - - # Tell the test suite where to find upstream nix, to compare eval results - # against - NIX_INSTANTIATE_BINARY_PATH = "${pkgs.nix}/bin/nix-instantiate"; - - meta.ci.targets = builtins.attrNames self.passthru; - - copySources = [ - "builtin-macros" - ]; - - passthru.benchmarks = depot.third_party.naersk.buildPackage (naerskArgs // { - name = "tvix-eval-benchmarks"; - - doCheck = false; - - cargoBuildOptions = opts: opts ++ [ "--benches" ]; - - copyBinsFilter = '' - select(.reason == "compiler-artifact" and any(.target.kind[] == "bench"; .)) - ''; - - passthru = { }; - }); -})) -) + # Make C++ Nix available, to compare eval results against. + testInputs = [ pkgs.nix ]; +} diff --git a/tvix/eval/src/tests/nix_tests/eval-okay-readDir.exp b/tvix/eval/src/tests/nix_tests/eval-okay-readDir.exp deleted file mode 100644 index bf8d2c14ea4f..000000000000 --- a/tvix/eval/src/tests/nix_tests/eval-okay-readDir.exp +++ /dev/null @@ -1 +0,0 @@ -{ bar = "regular"; foo = "directory"; } diff --git a/tvix/eval/src/tests/nix_tests/eval-okay-readDir.nix b/tvix/eval/src/tests/nix_tests/eval-okay-readDir.nix deleted file mode 100644 index a7ec9292aae2..000000000000 --- a/tvix/eval/src/tests/nix_tests/eval-okay-readDir.nix +++ /dev/null @@ -1 +0,0 @@ -builtins.readDir ./readDir diff --git a/tvix/eval/src/tests/nix_tests/notyetpassing/eval-okay-readDir.exp b/tvix/eval/src/tests/nix_tests/notyetpassing/eval-okay-readDir.exp new file mode 100644 index 000000000000..bf8d2c14ea4f --- /dev/null +++ b/tvix/eval/src/tests/nix_tests/notyetpassing/eval-okay-readDir.exp @@ -0,0 +1 @@ +{ bar = "regular"; foo = "directory"; } diff --git a/tvix/eval/src/tests/nix_tests/notyetpassing/eval-okay-readDir.nix b/tvix/eval/src/tests/nix_tests/notyetpassing/eval-okay-readDir.nix new file mode 100644 index 000000000000..a7ec9292aae2 --- /dev/null +++ b/tvix/eval/src/tests/nix_tests/notyetpassing/eval-okay-readDir.nix @@ -0,0 +1 @@ +builtins.readDir ./readDir diff --git a/tvix/eval/src/tests/nix_tests/notyetpassing/readDir/bar b/tvix/eval/src/tests/nix_tests/notyetpassing/readDir/bar new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tvix/eval/src/tests/nix_tests/notyetpassing/readDir/foo/git-hates-directories b/tvix/eval/src/tests/nix_tests/notyetpassing/readDir/foo/git-hates-directories new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tvix/eval/src/tests/nix_tests/readDir/bar b/tvix/eval/src/tests/nix_tests/readDir/bar deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tvix/eval/src/tests/nix_tests/readDir/foo/git-hates-directories b/tvix/eval/src/tests/nix_tests/readDir/foo/git-hates-directories deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tvix/eval/src/tests/tvix_tests/eval-okay-readDir.nix b/tvix/eval/src/tests/tvix_tests/eval-okay-readDir.nix deleted file mode 100644 index a7ec9292aae2..000000000000 --- a/tvix/eval/src/tests/tvix_tests/eval-okay-readDir.nix +++ /dev/null @@ -1 +0,0 @@ -builtins.readDir ./readDir diff --git a/tvix/eval/src/tests/tvix_tests/eval-okay-readDir.nix.disabled b/tvix/eval/src/tests/tvix_tests/eval-okay-readDir.nix.disabled new file mode 100644 index 000000000000..a7ec9292aae2 --- /dev/null +++ b/tvix/eval/src/tests/tvix_tests/eval-okay-readDir.nix.disabled @@ -0,0 +1 @@ +builtins.readDir ./readDir -- cgit 1.4.1