Skip to content

registry: add imagemagick (aqua:ImageMagick/ImageMagick)#10118

Merged
jdx merged 10 commits into
jdx:mainfrom
thernstig:feat/imagemagick
Jun 11, 2026
Merged

registry: add imagemagick (aqua:ImageMagick/ImageMagick)#10118
jdx merged 10 commits into
jdx:mainfrom
thernstig:feat/imagemagick

Conversation

@thernstig

@thernstig thernstig commented May 28, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Chores

    • ImageMagick registry adds an additional installation backend supporting Linux and Windows alongside existing options.
    • CI and test containers now run with FUSE device access and elevated mount privileges; test images include FUSE support and a compatibility symlink for fusermount.
    • CI change-detection broadened to recognize additional registry-related paths.
  • Tests

    • Automated verification added that runs ImageMagick and checks its reported version.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the ImageMagick registry configuration by replacing the existing conda and asdf backends with aqua, and enabling the test command. The reviewer recommends retaining the original conda and asdf backends alongside the new aqua backend to prevent regressions for existing users.

Comment thread registry/imagemagick.toml Outdated
@thernstig thernstig changed the title registry: add tool-name (aqua:ImageMagick/ImageMagick) registry: add imagemagick (aqua:ImageMagick/ImageMagick) May 28, 2026
@greptile-apps

greptile-apps Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds aqua:ImageMagick/ImageMagick as an additional backend for the ImageMagick registry entry, scoped to Windows only, and enables the previously commented-out test with a version-normalization template.

  • The aqua backend is intentionally restricted to windows — on Linux the aqua package is an AppImage requiring FUSE, which mise does not yet support; that path will be added separately.
  • The test template {{ version | split(pat='_') | join(sep='-') }} correctly normalises both underscore-separated (7.1.1_28) and dash-separated (7.1.1-28) version strings that different backends may produce, matching the Version: ImageMagick 7.1.1-28 output format.

Confidence Score: 5/5

This is a small, targeted registry change with a single modified file; the Windows-only platform scoping is well-justified and the test template handles all relevant version formats.

The change adds one new backend with an explicit platform guard and a corrected test. The git history shows the Windows-only restriction is a deliberate choice (Linux AppImage/FUSE support deferred). No logic errors, no broken contracts, and no security surface introduced.

No files require special attention.

Important Files Changed

Filename Overview
registry/imagemagick.toml Adds aqua:ImageMagick/ImageMagick as a Windows-only backend and enables the previously commented-out test with version-normalization template; Windows-only restriction is intentional (Linux AppImage via FUSE deferred).

Reviews (13): Last reviewed commit: "fix: normalize ImageMagick test version ..." | Re-trigger Greptile

@thernstig

thernstig commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

I am not able to run mise run format locally, it errors out on things, so I would guess some things are setup manually that I am unaware about. I am running in a plain Ubuntu machine.

edit: wrote an issue here about this #10121

Regarding the other failure imagemagick has not been released yet: https://github.com/aquaproj/aqua-registry/releases

@thernstig

Copy link
Copy Markdown
Contributor Author

It was released here: https://github.com/aquaproj/aqua-registry/releases/tag/v4.518.0. Not sure why it says it is not in the registry.

@thernstig

Copy link
Copy Markdown
Contributor Author

@risu729 help me here.

@risu729

risu729 commented May 29, 2026

Copy link
Copy Markdown
Contributor

@thernstig

Copy link
Copy Markdown
Contributor Author

@risu729 updating it manually did not make this repo happy. I thought that was what you indicated I should do.

@risu729

risu729 commented May 29, 2026

Copy link
Copy Markdown
Contributor

@thernstig You need to wait until the next mise release.

@jdx

jdx commented May 29, 2026

Copy link
Copy Markdown
Owner

@thernstig

Copy link
Copy Markdown
Contributor Author

I am checking this, as I thought they meant to support everything but Windows on Arm.

Or will mise not even allow this in even in that case, if everything is supported but WIndows on Arm 64?

@risu729

risu729 commented May 29, 2026

Copy link
Copy Markdown
Contributor

That's the opposite. Check aqua docs

@thernstig

Copy link
Copy Markdown
Contributor Author

@risu729 I saw that, but I thought their intention was to support everything but windows/amd64, but it seems only windows/amd64 is supported.

I have asked here if the rest of the support will be added, so we can keep this on hold, see aquaproj/aqua-registry#50281. They now added support in https://github.com/aquaproj/aqua-registry/pull/54605/changes.

My question is: Is this support now enough to make it into mise? Or what is required for it to be allowed to be added here? Is the support now enough?

@risu729

risu729 commented May 30, 2026

Copy link
Copy Markdown
Contributor

mise registry supports os/arch pairs. I think you can use it

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds an aqua backend and activates the ImageMagick magick -version test; broadens CI change-detection, grants test containers /dev/fuse and SYS_ADMIN, updates the e2e runner to pass those flags, and installs/aliases fusermount in the packaging Dockerfile.

Changes

ImageMagick Registry Configuration

Layer / File(s) Summary
Backend platform support and test configuration
registry/imagemagick.toml
backends is expanded into a multi-entry array adding aqua:ImageMagick/ImageMagick with platforms = ["linux","windows"], retaining conda:imagemagick and asdf:mise-plugins/mise-imagemagick. A test = { cmd = "magick -version", expected = "ImageMagick {{version}}" } is activated.

Test runtime and packaging updates for FUSE

Layer / File(s) Summary
Workflow change-detection filters
.github/workflows/registry.yml
Expands the check-changes and workflow-check path regexes to include e2e/run_test and packaging/e2e/Dockerfile so those edits are treated as registry-related changes.
CI workflow: docker run arguments
.github/workflows/registry.yml
Adds --device /dev/fuse and --cap-add SYS_ADMIN to docker run invocations for the test-tool job and the retry step.
E2E runner docker args
e2e/run_test
Extends run_in_docker to pass --device /dev/fuse and --cap-add SYS_ADMIN when MISE_E2E_DOCKER=1.
Packaging Dockerfile: libfuse and fusermount symlink
packaging/e2e/Dockerfile
Installs libharfbuzz0b, libfuse2t64, and fuse3, and conditionally symlinks /usr/bin/fusermount to /usr/bin/fusermount3 when fusermount3 exists and fusermount does not.

🎯 4 (Complex) | ⏱️ ~40 minutes

🐰 I hopped through builds and runner logs,
added fuse for curious Docker frogs,
ImageMagick now wears a new aqua hat,
tests run magick -version — imagine that!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding ImageMagick to the mise registry with the aqua:ImageMagick/ImageMagick backend, which is the primary focus of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@thernstig

Copy link
Copy Markdown
Contributor Author

mise registry supports os/arch pairs. I think you can use it

I updated it to only allow for linux and windows. But I think maybe that schema/mise-registry-tool.json is wrong. I think maybe os supports os/arch pairs? Which would have been better. But if I try that now I get a schema error.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
registry/imagemagick.toml (1)

7-7: Test command looks correct for ImageMagick 7+.

The test configuration using magick -version with expected output pattern ImageMagick {{version}} follows the correct schema and will be properly validated by the test tool. The magick command is the unified interface introduced in ImageMagick 7, which is appropriate for modern installations.

To confirm the output format matches expectations, you can optionally verify with:

#!/bin/bash
# Description: Verify ImageMagick version command output format

# Try to find and run ImageMagick if available in the environment
if command -v magick &> /dev/null; then
  echo "=== Testing magick -version output ==="
  magick -version | head -5
elif command -v convert &> /dev/null; then
  echo "=== ImageMagick 6 detected (convert command) ==="
  convert -version | head -5
else
  echo "ImageMagick not found in current environment (expected in test environment)"
fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@registry/imagemagick.toml` at line 7, The test entry currently uses the
`test` table with cmd "magick -version" and expected "ImageMagick {{version}}";
keep this for ImageMagick 7+, but add a fallback check for ImageMagick 6 by
supporting `convert -version` or conditionally running `convert` when `magick`
is absent; update the test definition (the `test` key and its cmd/expected
values) to either include both commands as alternatives or implement a small
wrapper script that tries `magick -version` first and falls back to `convert
-version`, ensuring the expected pattern remains correct for each variant
("ImageMagick {{version}}" for `magick` and matching `convert` output for v6).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@registry/imagemagick.toml`:
- Line 7: The test entry currently uses the `test` table with cmd "magick
-version" and expected "ImageMagick {{version}}"; keep this for ImageMagick 7+,
but add a fallback check for ImageMagick 6 by supporting `convert -version` or
conditionally running `convert` when `magick` is absent; update the test
definition (the `test` key and its cmd/expected values) to either include both
commands as alternatives or implement a small wrapper script that tries `magick
-version` first and falls back to `convert -version`, ensuring the expected
pattern remains correct for each variant ("ImageMagick {{version}}" for `magick`
and matching `convert` output for v6).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 09de9916-601d-4cac-b840-dc90ce6fd1f3

📥 Commits

Reviewing files that changed from the base of the PR and between 7011751 and 5f115d3.

📒 Files selected for processing (1)
  • registry/imagemagick.toml

@thernstig

Copy link
Copy Markdown
Contributor Author

@jdx I am unsure what to do here, as AppImage requires fuse, see:

It should be possible to get around this to run the AppImage with --appimage-extract.

Is this possible here?

@jdx

jdx commented Jun 4, 2026

Copy link
Copy Markdown
Owner

I don't know either

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

This PR currently has failing checks. If this continues for 7 days, it will be closed automatically.

This is warning day 1 of 7.

Please update the PR when you have a chance. Feel free to reopen or create a new PR if it is closed and you'd like to continue working on it.

This comment was generated by an automated workflow.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/registry.yml:
- Around line 240-242: The registry workflow's change filters need to include
the new FUSE/AppImage runtime files so registry CI runs when those are modified:
update the path filters in the registry.yml check-changes/workflow-check section
to include e2e/run_test and packaging/e2e/Dockerfile (and any new FUSE-related
dirs referenced by the docker run change), and mirror the same additions at the
other filter block mentioned (lines around the second occurrence). Locate the
path-filter entries in registry.yml (the check-changes/workflow-check filter
blocks) and add those exact paths so edits to the FUSE/Dockerfile or e2e runner
no longer bypass registry CI.

In `@packaging/e2e/Dockerfile`:
- Line 47: The Dockerfile currently installs only libfuse2t64 but needs the
fuse3 package so /usr/bin/fusermount3 actually exists; update the apt install
line to include (or replace libfuse2t64 with) fuse3 and ensure the symlink block
that creates /usr/bin/fusermount from /usr/bin/fusermount3 is meaningful by
running it after fuse3 is installed. Specifically, change the package list
referencing libfuse2t64 to include fuse3 (or add fuse3), then keep the existing
symlink logic that references /usr/bin/fusermount3 -> /usr/bin/fusermount so the
helper binary is present when the symlink is created.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1c0145a0-08eb-4f75-9905-cbe7d8d14d7a

📥 Commits

Reviewing files that changed from the base of the PR and between f25d0e2 and 64e6155.

📒 Files selected for processing (3)
  • .github/workflows/registry.yml
  • e2e/run_test
  • packaging/e2e/Dockerfile

Comment thread .github/workflows/registry.yml Outdated
Comment thread packaging/e2e/Dockerfile Outdated
@thernstig

Copy link
Copy Markdown
Contributor Author

@jdx this cannot be solved without your help. We need to update the Docker image to include fuse, which I tried to do, as done here https://github.com/AppImage/AppImageKit/wiki/FUSE

But I cannot build and push the new image myself.

@jdx

jdx commented Jun 5, 2026

Copy link
Copy Markdown
Owner

If the tool would need FUSE as a prereq I don't think it's an improvement over conda to begin with

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown

This PR currently has failing checks. If this continues for 7 days, it will be closed automatically.

This is warning day 1 of 7.

Please update the PR when you have a chance. Feel free to reopen or create a new PR if it is closed and you'd like to continue working on it.

This comment was generated by an automated workflow.

@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown

This PR currently has failing checks. If this continues for 7 days, it will be closed automatically.

This is warning day 2 of 7.

Please update the PR when you have a chance. Feel free to reopen or create a new PR if it is closed and you'd like to continue working on it.

This comment was generated by an automated workflow.

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

This PR currently has failing checks. If this continues for 7 days, it will be closed automatically.

This is warning day 3 of 7.

Please update the PR when you have a chance. Feel free to reopen or create a new PR if it is closed and you'd like to continue working on it.

This comment was generated by an automated workflow.

@thernstig

Copy link
Copy Markdown
Contributor Author

@jdx I think I have a better solution for this, can you contemplate #10267.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

This PR currently has failing checks. If this continues for 7 days, it will be closed automatically.

This is warning day 4 of 7.

Please update the PR when you have a chance. Feel free to reopen or create a new PR if it is closed and you'd like to continue working on it.

This comment was generated by an automated workflow.

@jdx

jdx commented Jun 9, 2026

Copy link
Copy Markdown
Owner

why are we getting rid of conda here? I don't understand the value

@thernstig

thernstig commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

@jdx I am unsure what you mean with "getting rid of"? Is it not supported still via https://github.com/jdx/mise/pull/10118/changes#diff-f322a53bf146c72239948186ecada0e05f5189a503c589da27ba156c22e41856R1-R8?

If you wonder why we wanted to add aqua, I thought it was preferred? I read all docs and that is the general gist I got out of it, especially reading https://mise.jdx.dev/registry.html where e.g. conda is tier 2. It depends on if we can support AppImage in this case or not.

Seems you do not want this?

I can mention I personally had trouble with conda, even though I did not write a bug report. It worked eventually, but it took forever to install and timed out. Worked on retries.

My only goal is/was to help future people of imagemagick installs 😃

@iki

iki commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

If you wonder why we wanted to add aqua, I thought it was preferred?

I'll try to add the context here:

Imo the options are:

WDYT?

@jdx

jdx commented Jun 9, 2026

Copy link
Copy Markdown
Owner

I would just use it for windows. If there isn't a reason for moving away from Conda I don't understand why we would

@thernstig

Copy link
Copy Markdown
Contributor Author

@jdx it is much faster, and less error-prone. I know this for a fact since I installed imagemagick via conda 3-4 weeks ago and it was a) very slow compared to other aqua tools b) failing at first at timeouts, twice, but later workd. Did not investigate why.

Seems you do not wish to support AppImage type2?

@jdx

jdx commented Jun 9, 2026

Copy link
Copy Markdown
Owner

I think there is a lot of risk with adding AppImage support that I don't want to take on without a good reason

@github-actions

Copy link
Copy Markdown

This PR currently has failing checks. If this continues for 7 days, it will be closed automatically.

This is warning day 5 of 7.

Please update the PR when you have a chance. Feel free to reopen or create a new PR if it is closed and you'd like to continue working on it.

This comment was generated by an automated workflow.

@iki

iki commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

@thernstig maybe just add aqua:ImageMagick as Windows-only for now, and open issue on ImageMagick repo to build linux archive as 7z as well (in addition to AppImage), so we can add it to mise registry for faster install as well?

@thernstig

Copy link
Copy Markdown
Contributor Author

@thernstig maybe just add aqua:ImageMagick as Windows-only for now, and open issue on ImageMagick repo to build linux archive as 7z as well (in addition to AppImage), so we can add it to mise registry for faster install as well?

Will do this. Do you mind opening that issue since you wrote and fixed the original issue on Aqua?

@thernstig

Copy link
Copy Markdown
Contributor Author

Don't think the latest errors are caused by my change.

thernstig and others added 10 commits June 10, 2026 15:27
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Install libfuse2t64 in the e2e Docker image and enable /dev/fuse access
with SYS_ADMIN for test-tool container runs.
Revert the Linux/AppImage follow-up work that added FUSE
requirements to the e2e Docker path and registry workflow checks.

Keep the ImageMagick aqua mapping scoped to Windows while broader
platform support is validated separately.
@jdx jdx merged commit b708072 into jdx:main Jun 11, 2026
34 checks passed
@iki

iki commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

@suchipi reports long build times on Linux too: #8476 (comment)

I install imagemagick with mise on Linux as part of my build but it takes a long time to install because it has to compile from source

Let's hope ImageMagick will add the static Linux build archive: ImageMagick/ImageMagick#8792 (comment there if you need it)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants