libxpkg 0.0.53: install_dir says why it has no answer (openxlings/xlings#487) - #37
Merged
Merged
Conversation
"cannot get install dir for xim:libcuda-host-link@0.0.1" names an internal state, and it covers two causes that point in opposite directions: - the package is not a dependency of this package on this platform; - it is, but its payload never landed. The first sends the reader to the recipe's platform sections. The second sends them to the dependency install. The old message sent them to neither -- openxlings/xlings#487 read it as a path problem and hypothesised that dependency resolution was not filtering by platform. It is filtered (xlings resolver.cppm: `runtime_deps.find(platform)`), and the recipe was correct too -- ollama declares the CUDA sentinel only under `xpm.linux`. The actual cause was ollama's install hook branching on `is_host("windows")` when the real distinction was linux, so macOS took the linux path and asked for a package macOS never resolves. Fixed separately in the index. `deps_list` is what the resolver produced FOR THIS PLATFORM, so a name missing from it is not "unresolvable" -- it is "not a dependency here". The message now says which of the two it is, names the package asked for, the platform, and what the deps actually are. Two tests, one per branch. The declared-but-absent case asserts the platform wording is ABSENT: describing an incomplete install as a platform mismatch would send the reader to the same wrong place, one door down. The Lua log goes to the process's stdout rather than HookResult::output, so they capture it.
This was referenced Aug 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the diagnostic half of openxlings/xlings#487.
The message named an internal state
cannot get install dir for xim:libcuda-host-link@0.0.1covers two causesthat point in opposite directions:
The old message pointed at neither, and the issue reasonably read it as a
path problem — hypothesising that dependency resolution was not filtering by
platform.
It was neither of those
Resolution is platform-filtered (
resolver.cppm:pkg->xpm.runtime_deps.find(platform)), and the recipe was right too —ollama declares the CUDA sentinel only under
xpm.linux. The real cause wasollama's install hook branching on
is_host("windows")when the realdistinction was linux, so macOS took the linux path and asked for a
package macOS never resolves. That half is fixed in the index
(openxlings/xim-pkgindex#532).
What changed
deps_listis what the resolver produced for this platform, so a namemissing from it is not "unresolvable" — it is "not a dependency here". The
message now says which of the two cases it is, and names the package asked
for, the platform, and what the deps here actually are:
Two tests, one per branch. The declared-but-absent test asserts the platform
wording is absent — describing an incomplete install as a platform
mismatch would send the reader to the same wrong place, one door down. The
Lua log goes to the process's stdout rather than
HookResult::output, sothey capture it.
117 tests pass.