fix(tvix/utils): Optionally add support for Cargo in filterRustCrateSrc

Previously we would unconditionally add Cargo.toml to the fileset. We
mostly use buildRustCrate in tvix so it does not make sense to add it by
default, instead I made it so you enable cargoSupport if you want
Cargo.{toml,lock} to be added to the fileset.

Change-Id: I5a6016534fc5599e85ab581fe3d9b81e7a24f940
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11950
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Autosubmit: Ilan Joselevich <personal@ilanjoselevich.com>
This commit is contained in:
Ilan Joselevich 2024-07-04 21:43:12 +03:00 committed by clbot
parent fc63594631
commit 63654fbeb1
2 changed files with 7 additions and 5 deletions

View file

@ -22,21 +22,23 @@
(powerset features)); (powerset features));
# Filters the given source, only keeping files related to the build, preventing unnecessary rebuilds. # Filters the given source, only keeping files related to the build, preventing unnecessary rebuilds.
# Includes src in the root, all other .rs files, as well as Cargo.toml. # Includes src in the root, all other .rs files and optionally Cargo specific files.
# Additional files to be included can be specified in extraFileset. # Additional files to be included can be specified in extraFileset.
filterRustCrateSrc = filterRustCrateSrc =
{ root # The original src { root # The original src
, extraFileset ? null # Additional filesets to include (e.g. fileFilter for proto files) , extraFileset ? null # Additional filesets to include (e.g. fileFilter for proto files)
, cargoSupport ? false
}: }:
lib.fileset.toSource { lib.fileset.toSource {
inherit root; inherit root;
fileset = (lib.fileset.intersection fileset = lib.fileset.intersection
(lib.fileset.fromSource root) # We build our final fileset from the original src (lib.fileset.fromSource root) # We build our final fileset from the original src
(lib.fileset.unions ([ (lib.fileset.unions ([
(root + "/src") (root + "/src")
(lib.fileset.fileFilter (f: f.hasExt "rs") root) (lib.fileset.fileFilter (f: f.hasExt "rs") root)
# We assume that every Rust crate will at a minimum have .rs files and a Cargo.toml ] ++ lib.optionals cargoSupport [
(lib.fileset.fileFilter (f: f.name == "Cargo.toml") root) (lib.fileset.fileFilter (f: f.name == "Cargo.toml") root)
] ++ lib.optional (extraFileset != null) extraFileset))); (lib.fileset.maybeMissing (root + "/Cargo.lock"))
] ++ lib.optional (extraFileset != null) extraFileset));
}; };
} }

View file

@ -46,7 +46,7 @@ let
[dependencies.tvix-eval] [dependencies.tvix-eval]
-path = "../../tvix/eval" -path = "../../tvix/eval"
+path = "${depot.tvix.crates.workspaceMembers.tvix-eval.build.src}" +path = "${../../tvix/eval}"
default-features = false default-features = false
[dependencies.serde] [dependencies.serde]