jdx/mise · error · eyre::Report

No matching SwiftPM artifact bundle found for {}

Error message

No matching SwiftPM artifact bundle found for {}

What it means

The spm backend tried to install a SwiftPM artifact bundle from the release assets but found no match, and source build is not allowed: `artifactbundle = true` (Required mode) or an `artifactbundle_asset` is configured, which makes the bundle mandatory. Instead of silently falling back to a source build, mise aborts.

Source

Thrown at src/backend/spm.rs:280

            artifactbundle_mode,
            Settings::get().spm.artifactbundle_only,
            &tv.version,
        )? {
            let artifactbundle_required = opts.requires_artifactbundle(artifactbundle_mode);
            match self
                .try_install_artifactbundle(
                    ctx,
                    &mut tv,
                    &provider,
                    &repo,
                    revision.as_str(),
                    &opts,
                )
                .await
            {
                Ok(true) => return Ok(tv),
                Ok(false) if artifactbundle_required => {
                    bail!(
                        "No matching SwiftPM artifact bundle found for {}",
                        repo.shorthand
                    );
                }
                Ok(false) if Settings::get().spm.artifactbundle_only => {
                    bail!(
                        "No matching SwiftPM artifact bundle found for {}, but spm.artifactbundle_only is set",
                        repo.shorthand
                    );
                }
                Ok(false) => {}
                Err(err) if artifactbundle_required => return Err(err),
                Err(err) if Settings::get().spm.artifactbundle_only => return Err(err),
                Err(err) => {
                    debug!(
                        "SwiftPM artifact bundle install failed, falling back to source build: {err:?}"
                    );
                }

View on GitHub (pinned to 6f52dcdf99)

Solutions

  1. Drop `artifactbundle = true` (and any artifactbundle_asset) to let mise fall back to building from source
  2. Bump to a release that actually ships an .artifactbundle.zip for your platform (check the release's asset list)
  3. Fix the artifactbundle_asset name to exactly match an existing asset ending in .artifactbundle.zip
  4. If you must stay on this version without bundles, accept the source build by removing the required mode

Example fix

# before
[tools."spm:apple/swift-format"]
version = "0.50.0"
artifactbundle = true

# after
[tools."spm:apple/swift-format"]
version = "600.0.0"
artifactbundle = true
Defensive patterns

Strategy: fallback

Validate before calling

gh release view <tag> --repo owner/repo --json assets -q '.assets[].name' | grep -i artifactbundle.zip # confirm a bundle exists for your platform before pinning + artifactbundle = true

Try / catch

mise install "spm:owner/repo@1.2.3" || mise install "spm:owner/repo@1.3.0" # bump to a release with bundles, or drop artifactbundle=true for source fallback

Prevention

When it happens

Trigger: `[tools."spm:owner/repo"] version = "1.2.3", artifactbundle = true` where the 1.2.3 GitHub release has no *.artifactbundle.zip asset matching the platform; or `artifactbundle_asset = "Repo.artifactbundle.zip"` naming an asset that does not exist in the release.

Common situations: A project ships bundles only for macOS while you run Linux, older releases predate artifact bundles, asset naming changed, or a typo'd artifactbundle_asset.

Related errors


AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22). Data as JSON: /api/errors/4b69839985808dde. Report an issue: GitHub.