fix(tvix/glue): produce context for builtins.(path|filterSource)

Fixes b/392.

Output paths were created, depending on a plain store path but no
context string was attached to track that plain dependency.

Context string propagation tests are strengthened to prevent any
regression on this.

Change-Id: Ifd6671aeba6949324b0bb9f0f766b87db728d484
Signed-off-by: Ryan Lahfa <tvl@lahfa.xyz>
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11351
Reviewed-by: Alyssa Ross <hi@alyssa.is>
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
Ryan Lahfa 2024-04-03 15:08:54 +02:00 committed by raitobezarius
parent 3821fd4224
commit e9a23bb478
3 changed files with 24 additions and 5 deletions

View file

@ -1 +1 @@
[ true true true true true true true true true true true true true true true true true true true true true true true true true true ]
[ true true true true true true true true true true true true true true true true true true true true true true true true true true true true ]

View file

@ -12,6 +12,11 @@ let
system = "x86_64-linux";
outputs = [ "out" "bar" ];
};
a-path-drv = builtins.path {
name = "a-path-drv";
path = ./eval-okay-context-introspection.nix;
};
another-path-drv = builtins.filterSource (_: true) ./eval-okay-context-introspection.nix;
# `substr` propagates context, we truncate to an empty string and concatenate to the target
# to infect it with the context of `copied`.
@ -37,6 +42,9 @@ in
(builtins.hasContext "${(builtins.toFile "myself" "${./eval-okay-context-introspection.nix}")}")
# `derivation` should produce context.
(builtins.hasContext "${drv}")
# `builtins.path` / `builtins.filterSource` should produce context.
(builtins.hasContext "${a-path-drv}")
(builtins.hasContext "${another-path-drv}")
# Low-level test to ensure that interpolation is working as expected.
(builtins.length (builtins.attrNames (builtins.getContext "${drv}${other-drv}")) == 2)
(builtins.getContext "${drv}${other-drv}" == mergeContext drv other-drv)