jdx/mise · error
artifact bundle executable does not exist
Error message
artifact bundle executable does not exist: {} What it means
artifactbundle_binaries walks the selected artifact bundle variant and, for each declared binary, checks that the file exists on disk inside the extracted bundle. A declared executable missing from the archive means a corrupt/malformed bundle, so mise bails before wiring up shims.
Solutions
- Re-download / reinstall the tool to rule out a truncated archive
- Inspect the extracted bundle to see which binaries are actually present
- Report a broken artifact bundle upstream
- Fall back to a source build (unset artifactbundle_only) or pin another version
Example fix
// verify manually after failure // unzip <tool>.artifactbundle.zip && ls <bundle>/<triple>/bin/ // if empty, report upstream or pin a working version
Defensive patterns
Strategy: retry
Validate before calling
// after extraction, verify binaries exist before use unzip -q <bundle>.zip -d /tmp/b && find /tmp/b -type f -path '*/bin/*' | wc -l
Prevention
- Retry install once to rule out truncated downloads
- Report bundles with mismatched Info.plist binary lists upstream
- Pin a known-good version if the latest bundle is broken
When it happens
Trigger: try_install_artifactbundle calls artifactbundle_binaries after matching a variant by supported_triples; bundle.join(&variant.path) is not a file (Info.plist lists an executable path that is absent from the downloaded/extracted archive).
Common situations: Upstream published a bundle whose Info.plist names binaries that weren't included; truncated/corrupt download; manually crafted bundle with wrong paths.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- multiple SwiftPM artifact bundles found
- No matching SwiftPM artifact bundle found for
- No matching SwiftPM artifact bundle found for
- artifactbundle_asset must end with .artifactbundle.zip, got
- artifactbundle = false conflicts with…
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/72135518e2d8510f.
Report an issue: GitHub.
Appendix: source
Thrown at src/backend/spm.rs:1017
) -> eyre::Result<Vec<ArtifactBundleBinary>> {
let mut binaries = vec![];
for bundle in artifactbundle_dirs(extract_dir)? {
let info = file::read_to_string(bundle.join("info.json"))?;
let manifest = serde_json::from_str::<ArtifactBundleInfo>(&info)
.wrap_err("Failed to parse artifact bundle info.json")?;
for (name, artifact) in manifest.artifacts {
if artifact.r#type != "executable" {
continue;
}
for variant in artifact.variants {
if variant
.supported_triples
.iter()
.any(|triple| target_triples.contains(triple))
{
let path = bundle.join(&variant.path);
if !path.is_file() {
bail!(
"artifact bundle executable does not exist: {}",
path.display()
);
}
binaries.push(ArtifactBundleBinary {
name: name.clone(),
path,
});
break;
}
}
}
}
Ok(binaries)
}
fn artifactbundle_dirs(extract_dir: &Path) -> eyre::Result<Vec<PathBuf>> {
let mut bundles = vec![];View on GitHub (pinned to 533346cc37)