fix(tvix/eval): use realpaths for import cache
I've noticed this behavior when writing the admittedly cursed test case included in this CL. Alternatively we could use some sort of machinery using `builtins.trace`, but I don't think we capture stderr anywhere. I've elected to put this into the eval cache itself while C++ Nix does it in builtins.import already, namely via `realisePath`. We don't have an equivalent for this yet, since we don't support any kind of IfD, but we could revise that later. In any case, it seems good to encapsulate `ImportCache` in this way, as it'll also allow using file hashes as identifiers, for example. C++ Nix also does our equivalent of canon_path in `builtins.import` which we still don't, but I suspect it hardly makes a difference. Change-Id: I05004737ca2458a4c67359d9e7d9a2f2154a0a0f Reviewed-on: https://cl.tvl.fyi/c/depot/+/8839 Autosubmit: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
This commit is contained in:
parent
399d23eaf6
commit
66047063e0
8 changed files with 51 additions and 3 deletions
|
|
@ -0,0 +1 @@
|
|||
[ true true false false true ]
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
[
|
||||
(import ./observable-eval-cache1.nix == import ./observable-eval-cache1.nix)
|
||||
(import ./observable-eval-cache1.nix == import ./observable-eval-cache2.nix)
|
||||
(import ./observable-eval-cache1.nix == import ./observable-eval-cache3.nix)
|
||||
(import ./observable-eval-cache2.nix == import ./observable-eval-cache3.nix)
|
||||
(import ./observable-eval-cache3.nix == import ./observable-eval-cache3.nix)
|
||||
]
|
||||
|
|
@ -0,0 +1 @@
|
|||
let id = x: x; in { inherit id; }
|
||||
1
tvix/eval/src/tests/tvix_tests/observable-eval-cache2.nix
Symbolic link
1
tvix/eval/src/tests/tvix_tests/observable-eval-cache2.nix
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
observable-eval-cache1.nix
|
||||
|
|
@ -0,0 +1 @@
|
|||
let id = x: x; in { inherit id; }
|
||||
Loading…
Add table
Add a link
Reference in a new issue