Skip to content

Fix remote tab sometimes being used for local bottle installs#21743

Merged
Bo98 merged 1 commit intomainfrom
local-bottle-tab-fix
Mar 16, 2026
Merged

Fix remote tab sometimes being used for local bottle installs#21743
Bo98 merged 1 commit intomainfrom
local-bottle-tab-fix

Conversation

@Bo98
Copy link
Member

@Bo98 Bo98 commented Mar 16, 2026

When installing from a local bottle (brew install ./bottle.tar.gz), either the tab .json found alongside the bottle or the tab inside the bottle tarball is expected to be used. This logic was triggered under conditional on there not being a bottle block, which is normally true if you are loading the formula from the bottle tarball itself.

However, it is possible that if the formula inside the bottle tarball is unreadable it will fall back to the tap's formula which does have a bottle block. This would then fetch and use the remote tab attributes which is incorrect as that's possibly for a different version of the formula.

Instead, let's correctly add explicit formula.local_bottle_path checks that were previously implied under the normal scenario.

The set of circumstances described to force a fallback onto the tap formula is rare and did not happen with any first-party Homebrew/core formula. It would require using syntax that is currently not able to be bottled, such as require_relative.

https://github.com/orgs/Homebrew/discussions/6753

Copilot AI review requested due to automatic review settings March 16, 2026 15:02
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Fixes an edge case where installing from a local bottle path could incorrectly use remote bottle tab attributes (potentially from a different version), by explicitly gating remote-tab usage on formula.local_bottle_path not being set.

Changes:

  • Avoid using formula.bottle_tab_attributes when installing from a local bottle (prefer local JSON/tab sources instead).
  • Skip fetching the remote bottle manifest/tab during local bottle installs.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
Library/Homebrew/utils/bottles.rb Prevents remote bottle tab attributes from being used when a local bottle path is present.
Library/Homebrew/formula_installer.rb Skips remote bottle tab/manifest fetching when installing from a local bottle path.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Member

@MikeMcQuaid MikeMcQuaid left a comment

Choose a reason for hiding this comment

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

Makes sense, thanks!

@Bo98 Bo98 added this pull request to the merge queue Mar 16, 2026
Merged via the queue into main with commit 045501d Mar 16, 2026
59 of 62 checks passed
@Bo98 Bo98 deleted the local-bottle-tab-fix branch March 16, 2026 16:19
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.

3 participants