tvl-depot/tvix/glue
Florian Klink b4b2ae1cc6 refactor(tvix/glue): merge builtins.{filterSource,path} codepaths
This moves the implementation from builtins.path into a helper function,
which we now call from both builtins.

Most of the Value plumbing stays inside this helper.

We also implemented handling of symlinks at the root, which was handled
in builtins.filterSource, but not builtins.path - by peeking at the
FileType using std::fs::metadata, instead of the EvalIO trait.

For now, this is fine, as our filtered_ingest also goes via the
filesystem directly. It ends up with the same semantics as before and in
Nix - symlinks at the root are followed, except if they point to an
invalid target.

In the future, we should revisit this, and then maybe get both stat and
lstat into EvalIO, though we will need to be very careful about the
semantics for following symlink inside store paths.

Change-Id: I6a941c0187db36165c2f7a338015e4e32d41b298
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12629
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: Ilan Joselevich <personal@ilanjoselevich.com>
2024-10-16 19:29:09 +00:00
..
benches refactor(tvix/glue): remove use of lazy_static 2024-10-13 14:45:17 +00:00
src refactor(tvix/glue): merge builtins.{filterSource,path} codepaths 2024-10-16 19:29:09 +00:00
build.rs fix(tvix): make rstest pick up new test case files 2024-06-05 17:52:17 +00:00
Cargo.toml refactor(tvix/glue): remove use of lazy_static 2024-10-13 14:45:17 +00:00
default.nix chore(tvix): Retain original passthru in Rust builds 2024-08-15 23:37:00 +00:00