Commit Graph
51620 Commits
Author SHA1 Message Date
Mike McQuaidandGitHub f4a703c726 Merge pull request #23409 from Homebrew/bump-release-cooldown-output
bump: show upstream versions in release cooldown
2026-08-04 09:56:52 +00:00
Mike McQuaidandGitHub 5321c76cf8 Merge pull request #23423 from Homebrew/restore-services-plist
Restore use of package-provided service files
2026-08-04 09:48:23 +00:00
Mike McQuaid 3747dfb732 Restore use of package-provided service files
- Since #23312, `brew services start` always regenerated the service
  definition from the formula `service` block. Formulae that bundle
  their own service file only declare `name` there, so the generated
  plist had empty `ProgramArguments` and `launchctl bootstrap` failed
  with `Input/output error`.
- Read the installed service file instead unless the `service` block
  defines a command, the same gate `FormulaInstaller#install_service`
  uses when writing generated service files into the keg.
- Fixes https://github.com/Homebrew/brew/issues/23408.
2026-08-04 09:37:55 +01:00
Mike McQuaid c596d3d17a bump: show upstream versions in release cooldown
- `brew bump` reported formulae as up to date when a newer upstream
  release was suppressed by the release cooldown, confusing upstream
  authors waiting for autobump.
- Show the suppressed version with how recently it was released, add
  a `Bump-ready version:` line for what can be bumped now and change
  the headline from `is up to date!` to `has a new version in
  release cooldown`.
- Fixes #23396.
2026-08-04 09:36:59 +01:00
Mike McQuaidandGitHub ca8ff5df8f Merge pull request #23421 from Homebrew/env-spec-singleton-methods
test/ENV_spec: compare only singleton methods
2026-08-04 08:32:01 +00:00
Mike McQuaidandGitHub 09a44e5175 Merge pull request #23416 from Homebrew/inject-upgrade-download-queue
Pass the download queue to FormulaInstaller when upgrading
2026-08-04 08:31:37 +00:00
Mike McQuaidandGitHub 20cd7ecdf9 Merge pull request #23412 from Homebrew/bundle-cleanup-opt-in-trust-reset
bundle cleanup: document trust store reset
2026-08-04 08:31:32 +00:00
Mike McQuaidandGitHub b9c6b73ad6 Merge pull request #23411 from Homebrew/retry-conditional-api-downloads
Retry API downloads without --time-cond on curl receive errors
2026-08-04 08:30:59 +00:00
Mike McQuaidandGitHub ef13b2f19f Merge pull request #23365 from Homebrew/install-step-25-compact-json
Compact install step JSON (25/26)
2026-08-04 08:24:19 +00:00
Mike McQuaidandGitHub b91b315ed9 Merge pull request #23417 from Homebrew/cask-artifact-stanza-key-order
api/cask: ignore `target` when selecting artifact stanza
2026-08-04 08:21:16 +00:00
Bevan KayandGitHub 2e898fa972 Merge pull request #23422 from Homebrew/cask-audit-linux-only-macos
cask/audit: allow linux-only casks
2026-08-04 06:58:44 +00:00
Carlo CabreraandGitHub 1a4f30e9a3 Merge pull request #23406 from Homebrew/download-queue-heading-stderr
download_queue: print fetch heading to stderr when stdout is not a TTY
2026-08-04 05:06:44 +00:00
Bevan Kay 30869bfb0f cask/audit: allow linux-only casks 2026-08-04 14:42:30 +10:00
Patrick Linnane eb4c9109da test/ENV_spec: compare only singleton methods
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2026-08-03 21:19:24 -07:00
Justin KrehelandGitHub 3c9f3fd075 Merge pull request #23415 from Homebrew/cursor-docs-fix
docs/MCP-Server: update Cursor URL
2026-08-03 22:46:21 +00:00
Patrick Linnane 573ccc6603 api/cask: ignore target when selecting artifact stanza
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2026-08-03 15:08:55 -07:00
Patrick Linnane 5530aceddf Pass the download queue to FormulaInstaller when upgrading
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2026-08-03 14:37:46 -07:00
Patrick Linnane 518dd044c0 docs/MCP-Server: update Cursor URL
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2026-08-03 13:11:24 -07:00
Patrick Linnane eaff651a91 Replace the API download retry loop with a single retry
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2026-08-03 13:07:41 -07:00
Patrick Linnane 494a08f7ca bundle cleanup: document trust store reset
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2026-08-03 12:52:55 -07:00
Mike McQuaidandGitHub 3f471e5797 Merge pull request #23402 from Homebrew/replace-commit-status
Use workflow result for commit style
2026-08-03 19:03:46 +00:00
Mike McQuaid 87820ef2a2 Use workflow result for commit style
- Drop the status write that fork pull requests cannot receive.
- Pin the `2026.08.03.2` action release that fails validation jobs.
- Report the required check for synthetic merge queue commits.
2026-08-03 19:44:14 +01:00
Patrick Linnane 3a35c15d96 Retry API downloads without --time-cond on curl receive errors
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2026-08-03 09:44:25 -07:00
Mike McQuaidandGitHub 2bdc553b07 Merge pull request #23403 from Homebrew/tolerate-missing-bottle-manifests
Tolerate missing bottle manifests in prefetches
2026-08-03 13:47:29 +00:00
Carlo CabreraandCarlo Cabrera 323338077e Stub $stdout.tty? in tests
This addresses a Copilot review comment that is reachable when tests are
run as `brew tests --debug`.
2026-08-03 21:43:12 +08:00
Mike McQuaidandGitHub 998e779667 Merge pull request #23394 from SSakutaro/contributions-readme-fallback
contributions: clarify Maintainer team access
2026-08-03 13:38:13 +00:00
Mike McQuaid 4b375799df Tolerate missing bottle manifests in prefetches
- After #23381, homebrew-core CI fails installing dependencies on
  version-bump PRs: the bumped formula's stale bottle block derives
  its manifest URL from the new version, whose bottle has not been
  published yet, and `DownloadQueue#fetch` treats every bottle
  manifest failure as fatal.
- Before that change the default ask-mode plan fetched manifests
  synchronously via `Formula#fetch_bottle_tab`, which rescues
  download errors so dependency resolution falls back to a full
  install, and the installer's memoisation then kept the queue from
  retrying the download.
- Add `DownloadQueue#fetch(allow_failures:)`: failed downloads are
  still reported but neither raise nor mark the fetch or run as
  failed. Use it for the metadata-only drains (`fetch_formulae`'s
  bottle manifest waits, `brew install`'s ask-mode drain and
  `brew upgrade`'s tab prefetch), restoring the synchronous path's
  tolerance. Manifest failures in fetches that pour bottles remain
  fatal.
2026-08-03 14:25:47 +01:00
Carlo CabreraandCarlo Cabrera 237a3730cc download_queue: print fetch heading to stderr when stdout is not a TTY
`brew info --installed --json=v2` emits `==> Downloading Homebrew API
data` to stdout when the API data needs (re)downloading, corrupting
the JSON for anything parsing it (e.g. piping to `jq`).

The heading was added in 284cd0ed4c (#23381) as an unconditional
`oh1`, regressing the intent of 43137fe877 (#20980), which moved the
queue's non-TTY per-download report lines to stderr for exactly this
reason. Print the heading to stderr when stdout is not a TTY so it
stays off parsed stdout and on the same stream as those report lines.
TTY behaviour is unchanged.

Use `$stderr.puts oh1_title(...)` rather than `$stderr.oh1` as
RSpec's `to_stderr` matcher replaces `$stderr` with a plain
`StringIO` that lacks the `Utils::Output::Mixin` extension.
2026-08-03 21:03:49 +08:00
Mike McQuaid 272f861408 Compact install step JSON
- omit values already supplied by runner defaults
- retain explicit values when they change step behaviour
2026-08-03 13:21:39 +01:00
Mike McQuaidandGitHub d610afe44d Merge pull request #23381 from Homebrew/install-earlier-downloads
Start install downloads before local-only checks
2026-08-03 08:17:31 +00:00
SakutaroandGitHub 428c2a0d53 Merge branch 'main' into contributions-readme-fallback 2026-08-03 17:14:55 +09:00
Mike McQuaidandGitHub 0886f47031 Merge pull request #23400 from Homebrew/detect-app-case
cask/audit: detect incorrect app case
2026-08-03 08:11:14 +00:00
Mike McQuaid 284cd0ed4c Start install downloads before local-only checks
- `brew install` only started network transfers after preinstall
  checks and, in ask mode, fetched each bottle manifest serially
  while computing the dry-run plan.
- Enqueue bottle manifests on the shared download queue right after
  building formula installers in both ask and no-ask modes so
  transfers overlap preinstall checks and dependant scanning and
  manifests for multiple formulae download concurrently. Ask mode
  drains them under a `Downloading bottle manifests` heading before
  printing the plan; warm runs enqueue nothing and stay silent.
- Once downloads are confirmed (`--yes` installs, reinstall, upgrade
  and other `Install.fetch_formulae` callers), also enqueue the
  formula's own bottle in `FormulaInstaller#prelude_fetch`: the blob
  URL needs neither the manifest nor dependency resolution, so both
  transfer concurrently and staging joins the same queue cycle.
- Skip the `enqueue_fetch` requeue for bottles the prelude fetch
  already enqueued so a completed early download is not reported a
  second time.
- Give `DownloadQueue#fetch` `only:` and `heading:` so a heading is
  always printed before any queue output and never for empty fetches:
  dependency resolution inside `Install.fetch_formulae` waits on just
  the bottle manifests it needs (under `Downloading bottle manifests`)
  and the cask source pre-fetch on just its cask files, keeping other
  in-flight downloads queued and unreported so bottles only ever
  appear under the `Fetching downloads for:` heading, which now
  prints lazily from the fetch that reports them (`brew upgrade`
  enqueues before it knows that heading's contents). This replaces
  `Install.show_combined_fetch_downloads_heading`, `brew upgrade`'s
  manual manifest heading predicate and its dead
  `show_downloads_heading` plumbing.
- Instrument `Install.perform_preinstall_checks_once` as a
  `preinstall_checks` phase timing to keep the reordering visible.
- Archive-cold `brew install hello`: the first transfer starts at
  ~375ms instead of ~442ms, the bottle no longer waits for the
  manifest round trip (~672ms before, ~375ms now) and `--yes` wall
  time drops around 30%. Two-formula ask-mode installs drop one full
  manifest round trip (~1240ms to ~1030ms).
2026-08-03 08:54:24 +01:00
Issy LongandGitHub 7b0f22a4ab Merge pull request #23397 from Homebrew/srb-stop-lying
sorbet: Fix the `formula` test helper block typing
6.0.15
2026-08-02 22:39:11 +00:00
Justin Krehel e32de1d4b2 cask/audit: detect incorrect app case
Occasionally PR's or issues are opened in homebrew/cask due to
applications not matching the right case name on case-sensitive
filesystems.  These are relatively rare since most users run with the
standard case-insensitive, but it's still a negative user experience.

This audit is intended to catch these cases.
2026-08-02 18:10:16 -04:00
Michael ChoandGitHub 964f319407 Merge pull request #23398 from Homebrew/tap-new-no-intel-macos
workflows/tap-new-tests: remove intel macOS from tap-new
2026-08-02 19:48:28 +00:00
Mike McQuaidandGitHub 2a2dac58e6 Merge pull request #23393 from Homebrew/replace-callcc-fiber
ignorable: replace callcc with Fiber
2026-08-02 15:49:01 +00:00
Mike McQuaidandGitHub 68c924500d Merge pull request #23372 from Homebrew/install-step-explicit-var-compat
Make formula install-step var bases explicit
2026-08-02 15:48:20 +00:00
Mike McQuaidandGitHub 74dce14455 Merge pull request #23385 from Homebrew/skip-bad-bottles
install: isolate formula and cask fetch errors
2026-08-02 15:48:05 +00:00
Mike McQuaidandGitHub 4ec7a0827d Merge pull request #23380 from Homebrew/internal-api-payload-index
Parse only needed internal API payload entries
2026-08-02 15:47:19 +00:00
Michael Cho 714e8d22e5 workflows/tap-new-tests: remove intel macOS from tap-new
We will be degrading support to Tier 3 next month so avoid creating new
taps that use Intel macOS. Users that specifically want it should
manually update the generated workflow instead which makes sure they are
aware that support will likely end next year.
2026-08-02 11:33:59 -04:00
Issy Long da70a0d30c sorbet: Fix the formula test helper block typing
- This `formula` helper returning `Class.new(::Formula, &block)` is not
  of _instance_ type `Formula` (set in 540457b88b), but
  `T.class_of(Formula)`.

- But the accurate `T.proc.bind(T.class_of(::Formula))` can't be used
  instead because Sorbet errors with: "Malformed `bind`: Can only bind
  to simple class names". See
  https://github.com/Homebrew/brew/pull/23318#issuecomment-5087573557.

- Uses of this test helper that need to be typechecked still need
  `T.bind(self, T.class_of(Formula))` inline until Sorbet can bind to
  `T.class_of` of a class with a fixed `type_template` (maybe never).
2026-08-02 15:33:50 +01:00
Sakutaro Shiina 499a1486d7 contributions: clarify Maintainer team access 2026-08-02 23:10:08 +09:00
Mike McQuaid 0c2baca69e ignorable: replace callcc with Fiber
- Ruby 4.0's `continuation` warns `callcc is obsolete; use Fiber
  instead` whenever it is required, which happens on every `brew`
  command that loads a formula from source.
- Run `Ignorable.hook_raise` blocks in a `Fiber`: `raise` now pauses
  at the raise site and asks an `on_ignorable` callback whether to
  resume (`:ignore`) or raise there as usual, replacing the rescue
  plus continuation jump and `Ignorable::ExceptionMixin#ignore`.
- `Debrew` menus and `Formulary` `ignore_errors` decisions now happen
  before the stack unwinds, so `ensure` blocks only run when an
  exception is actually raised.
- Only require `ignorable` when `Formulary` uses `ignore_errors` and
  drop the obsolete `brew verify-undefined` `Warnings` guard.

Fixes https://github.com/Homebrew/brew/issues/23384
2026-08-01 14:28:57 +01:00
Mike McQuaidandGitHub 1f3abf43a3 Merge pull request #23391 from Homebrew/fix-download-size-unit
Keep download progress within terminal width
2026-08-01 12:30:52 +00:00
Mike McQuaid 1bbb1f5778 Keep download progress within terminal width 2026-08-01 13:10:12 +01:00
Ruoyu ZhongandGitHub 101bd0b7e0 Merge pull request #23392 from Homebrew/sponsors-maintainers-man-completions
Update manpage and completions.
2026-08-01 08:28:03 +00:00
BrewTestBot 9c005ba8dc Update manpage and completions.
Autogenerated by the [sponsors-maintainers-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sponsors-maintainers-man-completions.yml) workflow.
2026-08-01 07:12:36 +00:00
Mike McQuaidandGitHub fc44fe755d Merge pull request #23390 from HackAttack/false-tmux-caveat
Suppress brew services tmux caveat on Linux
2026-08-01 07:00:22 +00:00
Mike McQuaidandGitHub b921d44f02 Merge pull request #23312 from IngmarStein/service-env-overrides
Add per-service user environment variable overrides
2026-08-01 06:53:05 +00:00