-
-
Notifications
You must be signed in to change notification settings - Fork 10.6k
feat: add appimage support for linux #20334
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
c91f2f7
to
caba75a
Compare
Need CI before this PR is merged. Where are the app images installed and is that an expected/sensible location? Maybe we should reuse |
I considered it, but deemed it too confusing. Especially with it not working on macOS.
In |
@SMillerDev sounds good 👍🏻 |
I'm also considering adding a desktop file for these so the various Linux systems can pick it up easily. Ref: https://specifications.freedesktop.org/desktop-entry-spec/latest/ |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
This is waiting for the following pieces:
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
Not stale, but it is waiting for Linux CI for casks, and that's not going as fast as I'd like. So help would be much appreciated. |
Okay, now that Linux CI for casks is merged I'm planning to:
|
caba75a
to
85b07ae
Compare
85b07ae
to
3f62e6a
Compare
3f62e6a
to
740bac5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds AppImage support as a Linux-only cask stanza, extending Homebrew's cross-platform capabilities. It implements a new artifact type app_image
that allows Linux users to install AppImage applications through Homebrew casks.
- Implements
AppImage
artifact class with symlink functionality - Updates OS-specific installer logic to validate platform compatibility
- Enhances CI matrix generation to support Linux cask testing
Reviewed Changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
File | Description |
---|---|
Library/Homebrew/cask/artifact/appimage.rb | New AppImage artifact class that extends symlinked artifacts |
Library/Homebrew/cask/artifact.rb | Registers AppImage in artifact system and defines Linux-only artifacts |
Library/Homebrew/cask/config.rb | Adds appimagedir configuration option with default path |
Library/Homebrew/cli/parser.rb | Adds --appimagedir CLI flag for configuring AppImage installation directory |
Library/Homebrew/cask/dsl.rb | Registers AppImage as an ordinary artifact class in DSL |
Library/Homebrew/cask/cask.rb | Updates platform support detection logic for macOS and Linux |
Library/Homebrew/extend/os/mac/cask/installer.rb | New macOS-specific installer validation |
Library/Homebrew/extend/os/linux/cask/installer.rb | Updates Linux installer validation logic |
Library/Homebrew/extend/os/cask/installer.rb | Includes macOS-specific installer extensions |
Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb | Enhances CI matrix generation for Linux cask support |
Comments suppressed due to low confidence (1)
Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb:1
- Empty comment should either be removed or expanded to explain why the exception is being silently ignored, unlike the macOS case which logs the error message.
# typed: strict
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
# repository = ENV.fetch("GITHUB_REPOSITORY", nil) | ||
repository = "homebrew/homebrew-cask" # For testing outside of GitHub Actions |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This hardcoded repository override for testing should not be committed to production code. Consider using a command-line flag or environment variable for testing instead of commenting out the original code.
# repository = ENV.fetch("GITHUB_REPOSITORY", nil) | |
repository = "homebrew/homebrew-cask" # For testing outside of GitHub Actions | |
repository = ENV["HOMEBREW_TEST_REPOSITORY"] || ENV["GITHUB_REPOSITORY"] |
Copilot uses AI. Check for mistakes.
refresh | ||
end | ||
|
||
return false if !any_loaded |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] Use return false unless any_loaded
instead of return false if !any_loaded
for better Ruby idiom consistency.
return false if !any_loaded | |
return false unless any_loaded |
Copilot uses AI. Check for mistakes.
refresh | ||
end | ||
|
||
return false if !any_loaded |
Copilot
AI
Oct 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] Use return false unless any_loaded
instead of return false if !any_loaded
for better Ruby idiom consistency.
return false if !any_loaded | |
return false unless any_loaded |
Copilot uses AI. Check for mistakes.
brew style
with your changes locally?brew typecheck
with your changes locally?brew tests
with your changes locally?This adds support for the first linux-only cask stanza:
app_image
.We should probably add CI for Linux casks, but haven't been able to get that working yet.