don't know how to build these paths: /nix/store/4nb4z2d6qp87m07q8dzsv5b7dp0z682l-iets-fmt-0.2.0.drv warning: ignoring the client-specified setting 'store', because it is a restricted setting and you are not a trusted user building '/nix/store/4nb4z2d6qp87m07q8dzsv5b7dp0z682l-iets-fmt-0.2.0.drv' on farm.numtide.com:50051 iets-fmt-0.2.0> bld1: building 4nb4z2d6qp87m07q8dzsv5b7dp0z682l-iets-fmt-0.2.0.drv iets-fmt-0.2.0> cargoVendorDir not set, will not automatically configure vendored sources iets-fmt-0.2.0> cargoArtifacts not set, will not reuse any cargo artifacts iets-fmt-0.2.0> Running phase: unpackPhase iets-fmt-0.2.0> unpacking source archive /nix/store/b8g5x6in896lgl1w14c3iy7rigcmksh1-source iets-fmt-0.2.0> source root is source iets-fmt-0.2.0> Running phase: patchPhase iets-fmt-0.2.0> Executing configureCargoCommonVars iets-fmt-0.2.0> Running phase: updateAutotoolsGnuConfigScriptsPhase iets-fmt-0.2.0> Running phase: configurePhase iets-fmt-0.2.0> default configurePhase, nothing to do iets-fmt-0.2.0> Running phase: buildPhase iets-fmt-0.2.0> +++ command cargo --version iets-fmt-0.2.0> cargo 1.99.0 (5f94df478 2026-08-27) iets-fmt-0.2.0> +++ command cargo fmt -- --check iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:223: iets-fmt-0.2.0> let mut ask: HashMap<&'a StorePath, BTreeSet> = HashMap::new(); iets-fmt-0.2.0> let mut stack: Vec<&'a StorePath> = Vec::new(); iets-fmt-0.2.0> let grow = |ask: &mut HashMap<&'a StorePath, BTreeSet>, iets-fmt-0.2.0> - stack: &mut Vec<&'a StorePath>, iets-fmt-0.2.0> - p: &'a StorePath, iets-fmt-0.2.0> - names: &BTreeSet| { iets-fmt-0.2.0> + stack: &mut Vec<&'a StorePath>, iets-fmt-0.2.0> + p: &'a StorePath, iets-fmt-0.2.0> + names: &BTreeSet| { iets-fmt-0.2.0> let entry = ask.entry(p).or_default(); iets-fmt-0.2.0> let before = entry.len(); iets-fmt-0.2.0> entry.extend(names.iter().cloned()); iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:302: iets-fmt-0.2.0> // The static path of every needed output, or an error when a needed iets-fmt-0.2.0> // output has none. Outputs nobody needs never error here. iets-fmt-0.2.0> let mut paths: Vec = Vec::new(); iets-fmt-0.2.0> - let mut resolve = |names: &BTreeSet, drv: &Derivation, p: &StorePath| -> Result<()> { iets-fmt-0.2.0> - for name in names { iets-fmt-0.2.0> - let out = drv iets-fmt-0.2.0> - .outputs iets-fmt-0.2.0> - .get(name) iets-fmt-0.2.0> - .and_then(|o| o.path(&drv.name, name).ok()) iets-fmt-0.2.0> - .flatten(); iets-fmt-0.2.0> - let Some(out) = out else { iets-fmt-0.2.0> - return Err(Error::Plan(format!( iets-fmt-0.2.0> - "'{p}': output '{name}' has no statically known path; the build \ iets-fmt-0.2.0> + let mut resolve = iets-fmt-0.2.0> + |names: &BTreeSet, drv: &Derivation, p: &StorePath| -> Result<()> { iets-fmt-0.2.0> + for name in names { iets-fmt-0.2.0> + let out = drv iets-fmt-0.2.0> + .outputs iets-fmt-0.2.0> + .get(name) iets-fmt-0.2.0> + .and_then(|o| o.path(&drv.name, name).ok()) iets-fmt-0.2.0> + .flatten(); iets-fmt-0.2.0> + let Some(out) = out else { iets-fmt-0.2.0> + return Err(Error::Plan(format!( iets-fmt-0.2.0> + "'{p}': output '{name}' has no statically known path; the build \ iets-fmt-0.2.0> farm needs statically known input and output paths" iets-fmt-0.2.0> - ))); iets-fmt-0.2.0> - }; iets-fmt-0.2.0> - if asked.insert(out.clone()) { iets-fmt-0.2.0> - paths.push(out); iets-fmt-0.2.0> + ))); iets-fmt-0.2.0> + }; iets-fmt-0.2.0> + if asked.insert(out.clone()) { iets-fmt-0.2.0> + paths.push(out); iets-fmt-0.2.0> + } iets-fmt-0.2.0> } iets-fmt-0.2.0> - } iets-fmt-0.2.0> - Ok(()) iets-fmt-0.2.0> - }; iets-fmt-0.2.0> + Ok(()) iets-fmt-0.2.0> + }; iets-fmt-0.2.0> for (p, names) in &needs { iets-fmt-0.2.0> resolve(names, &drvs[*p], p)?; iets-fmt-0.2.0> } iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:342: iets-fmt-0.2.0> } iets-fmt-0.2.0> } iets-fmt-0.2.0> if !paths.is_empty() { iets-fmt-0.2.0> - let names: Vec = iets-fmt-0.2.0> - paths.iter().map(|p| p.base_name().to_string()).collect(); iets-fmt-0.2.0> + let names: Vec = paths.iter().map(|p| p.base_name().to_string()).collect(); iets-fmt-0.2.0> valid.extend(query(&names)?); iets-fmt-0.2.0> } iets-fmt-0.2.0> let mut missing: HashSet<&'a StorePath> = HashSet::new(); iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:350: iets-fmt-0.2.0> for p in needs.keys() { iets-fmt-0.2.0> let drv = &drvs[*p]; iets-fmt-0.2.0> let held = needs[*p].iter().all(|name| { iets-fmt-0.2.0> - drv.outputs.get(name).and_then(|o| o.path(&drv.name, name).ok()).flatten().is_some_and( iets-fmt-0.2.0> - |out| valid.contains(out.base_name()), iets-fmt-0.2.0> - ) iets-fmt-0.2.0> + drv.outputs iets-fmt-0.2.0> + .get(name) iets-fmt-0.2.0> + .and_then(|o| o.path(&drv.name, name).ok()) iets-fmt-0.2.0> + .flatten() iets-fmt-0.2.0> + .is_some_and(|out| valid.contains(out.base_name())) iets-fmt-0.2.0> }); iets-fmt-0.2.0> if !held { iets-fmt-0.2.0> missing.insert(*p); iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:632: iets-fmt-0.2.0> assert_eq!(needs, vec!["a", "b", "c", "d", "root"]); iets-fmt-0.2.0> assert_eq!( iets-fmt-0.2.0> calls, iets-fmt-0.2.0> - vec![vec!["root-out"], vec!["a-out"], vec!["b-out", "c-out", "d-out"]] iets-fmt-0.2.0> + vec![ iets-fmt-0.2.0> + vec!["root-out"], iets-fmt-0.2.0> + vec!["a-out"], iets-fmt-0.2.0> + vec!["b-out", "c-out", "d-out"] iets-fmt-0.2.0> + ] iets-fmt-0.2.0> ); iets-fmt-0.2.0> } iets-fmt-0.2.0> iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:642: iets-fmt-0.2.0> assert_eq!(needs, vec!["a", "b", "root"]); iets-fmt-0.2.0> assert_eq!( iets-fmt-0.2.0> calls, iets-fmt-0.2.0> - vec![vec!["root-out"], vec!["a-out"], vec!["b-out", "c-out", "d-out"]] iets-fmt-0.2.0> + vec![ iets-fmt-0.2.0> + vec!["root-out"], iets-fmt-0.2.0> + vec!["a-out"], iets-fmt-0.2.0> + vec!["b-out", "c-out", "d-out"] iets-fmt-0.2.0> + ] iets-fmt-0.2.0> ); iets-fmt-0.2.0> } iets-fmt-0.2.0> iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:651: iets-fmt-0.2.0> /// Needs travel down through missing derivations only. iets-fmt-0.2.0> fn held_mid() -> BTreeMap { iets-fmt-0.2.0> let mut drvs = BTreeMap::new(); iets-fmt-0.2.0> - let out = iets-fmt-0.2.0> - |n: &str, p: &str| (n.to_string(), DerivationOutput::InputAddressed(sp(p))); iets-fmt-0.2.0> + let out = |n: &str, p: &str| (n.to_string(), DerivationOutput::InputAddressed(sp(p))); iets-fmt-0.2.0> let dep = Derivation { iets-fmt-0.2.0> name: "dep".into(), iets-fmt-0.2.0> outputs: [out("out", "dep-out"), out("dev", "dep-dev")].into(), iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:698: iets-fmt-0.2.0> /// in what only `dev` needs. iets-fmt-0.2.0> fn two_outputs(used: &[&str]) -> BTreeMap { iets-fmt-0.2.0> let mut drvs = BTreeMap::new(); iets-fmt-0.2.0> - let out = iets-fmt-0.2.0> - |n: &str| (n.to_string(), DerivationOutput::InputAddressed(sp(&format!("dep-{n}")))); iets-fmt-0.2.0> + let out = |n: &str| { iets-fmt-0.2.0> + ( iets-fmt-0.2.0> + n.to_string(), iets-fmt-0.2.0> + DerivationOutput::InputAddressed(sp(&format!("dep-{n}"))), iets-fmt-0.2.0> + ) iets-fmt-0.2.0> + }; iets-fmt-0.2.0> let dep = Derivation { iets-fmt-0.2.0> name: "dep".into(), iets-fmt-0.2.0> outputs: [out("out"), out("dev")].into(), iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:707: iets-fmt-0.2.0> }; iets-fmt-0.2.0> let root = Derivation { iets-fmt-0.2.0> name: "root".into(), iets-fmt-0.2.0> - outputs: [("out".to_string(), DerivationOutput::InputAddressed(sp("root-out")))].into(), iets-fmt-0.2.0> + outputs: [( iets-fmt-0.2.0> + "out".to_string(), iets-fmt-0.2.0> + DerivationOutput::InputAddressed(sp("root-out")), iets-fmt-0.2.0> + )] iets-fmt-0.2.0> + .into(), iets-fmt-0.2.0> input_drvs: [( iets-fmt-0.2.0> sp("dep.drv"), iets-fmt-0.2.0> InputNode::of(used.iter().map(|s| s.to_string()).collect()), iets-fmt-0.2.0> Diff in /build/source/src/remote/grpc/backend.rs:746: iets-fmt-0.2.0> fn a_used_missing_output_below_a_missing_root_is_built() { iets-fmt-0.2.0> // `dep-out` is used and missing: `dep` joins `root` in the build set, iets-fmt-0.2.0> // while the unused `dep-dev` is never even asked about iets-fmt-0.2.0> - let (needs, calls) = run_raw( iets-fmt-0.2.0> - &two_outputs(&["out"]), iets-fmt-0.2.0> - &["root"], iets-fmt-0.2.0> - &["dep-dev".into()], iets-fmt-0.2.0> - ); iets-fmt-0.2.0> + let (needs, calls) = run_raw(&two_outputs(&["out"]), &["root"], &["dep-dev".into()]); iets-fmt-0.2.0> assert_eq!(needs, vec!["dep", "root"]); iets-fmt-0.2.0> assert_eq!(calls, vec![vec!["root-out"], vec!["dep-out"]]); iets-fmt-0.2.0> } error: Cannot build '/nix/store/4nb4z2d6qp87m07q8dzsv5b7dp0z682l-iets-fmt-0.2.0.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/5av9qb2a80xsw02d1kisnwq8p1ihzxfs-iets-fmt-0.2.0 Last 25 log lines: > }; > let root = Derivation { > name: "root".into(), > - outputs: [("out".to_string(), DerivationOutput::InputAddressed(sp("root-out")))].into(), > + outputs: [( > + "out".to_string(), > + DerivationOutput::InputAddressed(sp("root-out")), > + )] > + .into(), > input_drvs: [( > sp("dep.drv"), > InputNode::of(used.iter().map(|s| s.to_string()).collect()), > Diff in /build/source/src/remote/grpc/backend.rs:746: > fn a_used_missing_output_below_a_missing_root_is_built() { > // `dep-out` is used and missing: `dep` joins `root` in the build set, > // while the unused `dep-dev` is never even asked about > - let (needs, calls) = run_raw( > - &two_outputs(&["out"]), > - &["root"], > - &["dep-dev".into()], > - ); > + let (needs, calls) = run_raw(&two_outputs(&["out"]), &["root"], &["dep-dev".into()]); > assert_eq!(needs, vec!["dep", "root"]); > assert_eq!(calls, vec![vec!["root-out"], vec!["dep-out"]]); > } For full logs, run: nix log /nix/store/4nb4z2d6qp87m07q8dzsv5b7dp0z682l-iets-fmt-0.2.0.drv