[M5+] realize candidate output before nix-cmake-scan

This commit is contained in:
2026-05-10 13:41:19 +00:00
parent 54da546ebc
commit 5e691ac37b
4 changed files with 89 additions and 7 deletions

View File

@@ -91,6 +91,19 @@ All notable changes to cargoxx will be documented in this file.
6 cases against fixtures derived from a real fmt 10.2.1 response;
`tests/devbox_resolve_live.cpp` (gated by `CARGOXX_NETWORK_TESTS=1`)
hits the live API.
- Fix: `nix_cmake_scan` would silently fail when the dev output had
not yet been realized on the local machine — `nixpkgs_probe`'s
`nix eval` only *computes* a store path, so packages first-time
encountered (`libclang`, anything not previously built) returned a
path that didn't exist on disk. Discovery now realizes the
candidate output via
`nix build --no-link --print-out-paths nixpkgs#<attr>.dev` (or
`.<empty>`) before scanning. New free function
`cargoxx::resolver::realize_path(flake_attr)` wraps the call.
Live verified: `cargoxx add libclang` now reaches the verify-link
step (the subsequent `find_dependency(LLVM)` failure inside Clang's
CMake config is the pre-existing cross-package transitive-dep
limit — workaround is to `cargoxx add libllvm` first).
- Fix: `nix_cmake_scan` walked only the package's default output. For
multi-output Nix packages — `boost`, `openssl`, `libllvm`,
`libclang`, glib, … — CMake configs live in the `dev` output