jdx/mise · error · ShimUnsupportedError
formula uses `# `, which mise's source-build shim does not…
Error message
formula uses `#{feature}`, which mise's source-build shim does not support What it means
After confirming the remote task path stays inside the Git checkout, mise checks the file type: only regular files and directories are accepted. Anything else (symlink, socket, fifo, device) is rejected with this error.
Solutions
- Point the remote task URL at a regular file or directory in the repo.
- Remove dangling/special symlinks from the remote task repository and re-resolve.
- Clear mise's remote task cache and retry after fixing the repo.
Defensive patterns
Strategy: validation
Validate before calling
// Ensure the remote path is a regular file or directory in the repo p=$(git rev-parse --show-toplevel)/tasks/build.sh [ -f "$p" ] && [ ! -L "$p" ] || echo "path must be a regular file"
Prevention
- Keep remote task repositories free of special files and dangling symlinks.
- Clear mise's remote task cache after fixing the upstream repo.
- Verify the target path with `git ls-tree` before referencing it.
When it happens
Trigger: validate_remote_git_path (called by resolve_git_url_to_path / prepare_remote_path) encounters a path in the remote checkout whose symlink_metadata type is neither file nor directory — typically a dangling or special symlink, fifo, or device node.
Common situations: A remote task repository containing Unix special files or dangling symlinks; a URL path that resolves through a broken symlink; checking out on a filesystem that materializes special files oddly.
Related errors
- cask uses `# `, which mise's cask shim does not support
- existing symbolic link conflicts with adoption
- a branch name is required
- a parent directory is now a symlink; left untouched
- a repository url is required
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/126a3a6318e78c30.
Report an issue: GitHub.
Appendix: source
Thrown at src/system/packages/brew/shim.rb:63
def ohai(*args)
$stdout.puts "==> #{args.join(" ")}"
$stdout.flush
end
def opoo(message)
$stderr.puts "Warning: #{message}"
end
def odie(message)
$stderr.puts "Error: #{message}"
exit 1
end
class ShimUnsupportedError < StandardError; end
def shim_unsupported!(feature)
raise ShimUnsupportedError,
"formula uses `#{feature}`, which mise's source-build shim does not support"
end
module MiseDownload
module_function
# download with redirects into the cache, verify, return the path
def fetch(url, sha256, context)
raise "#{context}: missing sha256" if sha256.to_s.strip.empty?
sha256 = sha256.to_s.strip.downcase
raise "#{context}: malformed sha256" unless sha256.match?(/\A[0-9a-f]{64}\z/)
MISE_BREW_CACHE.mkpath
dest = MISE_BREW_CACHE + "#{sha256}--#{File.basename(URI(url).path)}"
unless dest.file? && Digest::SHA256.file(dest).hexdigest == sha256
ohai "Downloading #{url}"
tmp = Pathname.new("#{dest}.incomplete")
URI.open(url, "rb", redirect: true) do |remote|View on GitHub (pinned to 533346cc37)