diff options
author | Ilan Joselevich <personal@ilanjoselevich.com> | 2024-06-17T13·34+0300 |
---|---|---|
committer | Ilan Joselevich <personal@ilanjoselevich.com> | 2024-06-17T15·26+0000 |
commit | 92c5433304ebd0614fa49e7a6608521d23789764 (patch) | |
tree | 7275c98aa84c397263222baee8faa0cb3307baee /tvix/utils.nix | |
parent | ac51803ad85853aae64c1f4c12ad0688002cbaa2 (diff) |
chore(tvix): move filterRustCrateSrc to utils.nix r/8293
Change-Id: Ib6bae1ea0457d3309a6ec1e08b9e4b320523c161 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11857 Autosubmit: Ilan Joselevich <personal@ilanjoselevich.com> Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/utils.nix')
-rw-r--r-- | tvix/utils.nix | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tvix/utils.nix b/tvix/utils.nix index ed751566bd9c..5edc1dc2e856 100644 --- a/tvix/utils.nix +++ b/tvix/utils.nix @@ -20,4 +20,23 @@ ); }) (powerset features)); + + # 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. + # Additional files to be included can be specified in extraFileset. + filterRustCrateSrc = + { root # The original src + , extraFileset ? null # Additional filesets to include (e.g. fileFilter for proto files) + }: + lib.fileset.toSource { + inherit root; + fileset = (lib.fileset.intersection + (lib.fileset.fromSource root) # We build our final fileset from the original src + (lib.fileset.unions ([ + (root + "/src") + (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.fileset.fileFilter (f: f.name == "Cargo.toml") root) + ] ++ lib.optional (extraFileset != null) extraFileset))); + }; } |