fix(tvix/glue): do not panic if PathInfoService returns Err
Nixpkgs tries to `import` the value returned by
`builtins.unsafeGetAttrPos`, which in our case is the file
`/deep/thought`. Since that doesn't exist, tvix-glue panics, but
there's no interpreter backtrace to follow.
Let's return an Err instead of panicking.
------------------------------------------------------------------------------
Before:
thread 'tokio-runtime-worker' panicked at /source/src/import.rs:164:27:
called `Result::unwrap()` on an `Err` value: Error { depth: 0, inner: Io { path: Some("/deep/thought:42"), err: Os { code: 2, kind: NotFound, message: "No such file or directory" } } }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at src/tvix_store_io.rs:276:58:
called `Result::unwrap()` on an `Err` value: JoinError::Panic(Id(41580), ...)
Command exited with non-zero status 101
------------------------------------------------------------------------------
After:
thread 'tokio-runtime-worker' panicked at /source/src/import.rs:164:27:
called `Result::unwrap()` on an `Err` value: Error { depth: 0, inner: Io { path: Some("/deep/thought:42"), err: Os { code: 2, kind: NotFound, message: "No such file or directory" } } }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
note: while evaluating this Nix code
--> [code]:1:1
|
1 | (import /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src {}).pkgsCross.aarch64-multiplatform.rocmPackages_5.hipblas.outPath
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (getAttr)
--> <src-builtins/derivation.nix>:26:19
|
26 | outPath = builtins.getAttr outputName strict;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (derivationStrict)
--> <src-builtins/derivation.nix>:14:12
|
14 | strict = derivationStrict drvAttrs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (getAttr)
--> <src-builtins/derivation.nix>:26:19
|
26 | outPath = builtins.getAttr outputName strict;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (derivationStrict)
--> <src-builtins/derivation.nix>:14:12
|
14 | strict = derivationStrict drvAttrs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (getAttr)
--> <src-builtins/derivation.nix>:26:19
|
26 | outPath = builtins.getAttr outputName strict;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (derivationStrict)
--> <src-builtins/derivation.nix>:14:12
|
14 | strict = derivationStrict drvAttrs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (getAttr)
--> <src-builtins/derivation.nix>:26:19
|
26 | outPath = builtins.getAttr outputName strict;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (derivationStrict)
--> <src-builtins/derivation.nix>:14:12
|
14 | strict = derivationStrict drvAttrs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (getAttr)
--> <src-builtins/derivation.nix>:26:19
|
26 | outPath = builtins.getAttr outputName strict;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (derivationStrict)
--> <src-builtins/derivation.nix>:14:12
|
14 | strict = derivationStrict drvAttrs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (getAttr)
--> <src-builtins/derivation.nix>:26:19
|
26 | outPath = builtins.getAttr outputName strict;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (derivationStrict)
--> <src-builtins/derivation.nix>:14:12
|
14 | strict = derivationStrict drvAttrs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (getAttr)
--> <src-builtins/derivation.nix>:26:19
|
26 | outPath = builtins.getAttr outputName strict;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (derivationStrict)
--> <src-builtins/derivation.nix>:14:12
|
14 | strict = derivationStrict drvAttrs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this Nix code
--> /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src/pkgs/development/rocm-modules/5/llvm/stage-2/bintools-unwrapped.nix:6:78
|
6 | runCommand "rocm-llvm-binutils-${llvm.version}" { preferLocalBuild = true; } ''
| ______________________________________________________________________________^
7 | | mkdir -p $out/bin
8 | |
9 | | for prog in ${lld}/bin/*; do
... |
27 | | ln -s ${lld}/bin/lld $out/bin/ld
28 | | ''
| |__^
note: while evaluating this as native code (coerce_to_string)
--> /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src/pkgs/development/rocm-modules/5/llvm/stage-2/bintools-unwrapped.nix:27:9
|
27 | ln -s ${lld}/bin/lld $out/bin/ld
| ^^^^^^
note: while evaluating this as native code (getAttr)
--> <src-builtins/derivation.nix>:26:19
|
26 | outPath = builtins.getAttr outputName strict;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (derivationStrict)
--> <src-builtins/derivation.nix>:14:12
|
14 | strict = derivationStrict drvAttrs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this Nix code
--> /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src/lib/customisation.nix:249:23
|
249 | outPath = assert condition; drv.${outputName}.outPath;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: while evaluating this as native code (force)
--> /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src/lib/customisation.nix:249:30
|
249 | outPath = assert condition; drv.${outputName}.outPath;
| ^^^^^^^^^
note: while evaluating this as native code (throw)
--> /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src/pkgs/stdenv/generic/check-meta.nix:262:8
|
262 | in handler msg;
| ^^^^^^^^^^^
note: while evaluating this Nix code
--> /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src/pkgs/stdenv/generic/check-meta.nix:254:14
|
254 | else ''
| ______________^
255 | | Package ‘${getName attrs}’ in ${pos_str meta} ${errormsg}, refusing to evaluate.
256 | |
257 | | '' + (builtins.getAttr reason remediation) attrs;
| |________________________________________________________^
note: while evaluating this as native code (force)
--> /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src/pkgs/stdenv/generic/check-meta.nix:254:14
|
254 | else ''
| ______________^
255 | | Package ‘${getName attrs}’ in ${pos_str meta} ${errormsg}, refusing to evaluate.
256 | |
257 | | '' + (builtins.getAttr reason remediation) attrs;
| |__________^
error[E029]: I/O error: /deep/thought:42: task panicked
--> /nix/store/7xii7xcl0iliqxfq8hp577wdq5j0mikr-kp8vf3gzk1pff9r40j5p0y8kiwhkkqw1-nixpkgs-src/pkgs/stdenv/generic/check-meta.nix:255:41
|
255 | Package ‘${getName attrs}’ in ${pos_str meta} ${errormsg}, refusing to evaluate.
| ^^^^^^^^^^^^^^^
Command exited with non-zero status 1
Benchmark: {"pkgsCross.aarch64-multiplatform.rocmPackages_5.hipblas.outPath":{"kbytes":"26613180","system":"22.35","user":"140.62"}}
Change-Id: I587b57e9e49d1f3ecdc0fc9cf996d179a3548f34
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10223
Autosubmit: Adam Joseph <adam@westernsemico.com>
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI