Commit Graph
51637 Commits
Author SHA1 Message Date
Mike McQuaidandGitHub c04a10fa8a Merge pull request #23428 from Homebrew/symlink-target-check
Skip cask link when symlink already correct
2026-08-04 15:16:44 +00:00
Sean MolenaarandGitHub c98dece05a Merge pull request #23432 from Homebrew/SMillerDev-patch-1
Fix random time in tap-new
2026-08-04 14:35:20 +00:00
Sean MolenaarandGitHub eaa89b7014 Fix random time in tap-new 2026-08-04 16:00:06 +02:00
Mike McQuaidandGitHub a760fa0b1d Merge pull request #23425 from Homebrew/landlock-default
Remove Bubblewrap, use Landlock for Linux sandbox
2026-08-04 13:49:30 +00:00
Mike McQuaidandGitHub 76fc2ffe4f Merge pull request #23430 from hyuraku/tab-kwargs
Convert Tab attributes to keyword arguments
2026-08-04 13:45:51 +00:00
hyuraku 76dd511f0f Fix type annotation for _unknown parameter in AbstractTab initialization 2026-08-04 22:20:32 +09:00
hyuraku d43ab0083d Refactor Tab initialization to use keyword arguments for better clarity and flexibility 2026-08-04 21:22:22 +09:00
hyuraku 9fd3d8e001 Refactor Tab initialization and update key formatting to symbols 2026-08-04 21:22:08 +09:00
Mike McQuaid 0376eda65e Skip cask link when symlink already correct
- A plain `brew upgrade` raised "It seems there is already a
  Binary at ..." even when the existing symlink resolved to the
  exact source about to be linked, because the realpath check sat
  behind `force`/`adopt`. The revert left the symlink in place so
  every retry failed identically until manual intervention.
- Treat an already-correct symlink as a no-op: log and skip the
  link. Genuine conflicts, such as a real file at the target or a
  symlink elsewhere, still require `--force` or `--adopt`.
- Rescue errors resolving the target, like `conflicting_formula`
  does, so unreadable symlinks fall back to the existing conflict
  and error handling instead of raising `Errno` exceptions.
- Fixes Homebrew/brew#23426.
2026-08-04 13:04:55 +01:00
Mike McQuaid 377e4f740b Remove Bubblewrap, use Landlock for Linux sandbox
- Landlock needs no separate executable, installation or `sysctl`
  configuration, so use it as the only Linux sandbox implementation
  rather than an opt-in behind `$HOMEBREW_SANDBOX_LINUX_LANDLOCK`.
- Delete `Sandbox::Bubblewrap`, the `brew setup-sandbox` command and
  the implicit `bubblewrap` dependency, none of which Landlock needs.
- Remove the Bubblewrap-era `Sandbox` API (`ensure_sandbox_installed!`,
  `configure!`, `configuration_commands`, `sandbox_install_command`)
  and its call sites now that no backend needs installing or
  configuring.
- Simplify `brew doctor`'s `check_linux_sandbox` to report the
  Landlock failure reason with the `$HOMEBREW_NO_SANDBOX_LINUX`
  workaround.
2026-08-04 11:55:32 +01:00
Sean MolenaarandGitHub e5ed1633b7 Merge pull request #23349 from Homebrew/feat/tap-new/autobump
Add autobump option to tap-new
2026-08-04 10:48:37 +00:00
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
Sean MolenaarandGitHub 05037a3c42 Update setup-homebrew 2026-08-04 10:10:23 +02:00
02ca4a8a17 Apply suggestions from code review
Co-authored-by: Nanda H Krishna <me@nandahkrishna.com>
2026-08-04 10:08:01 +02: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
d689c31122 Update cron template to be more fake
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2026-08-03 11:15:35 +02:00
Sean Molenaar 6e27cdab9b Align tap-new workflow templates 2026-08-03 11:00:22 +02:00
Sean Molenaar e4cd3b4a18 Add autobump option to tap-new 2026-08-03 11:00:22 +02:00
Sean Molenaar 1a98ec882d Use --initial-branch in tap-new with the 2.30 minimum git 2026-08-03 11:00:22 +02: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