34826 Commits

Author SHA1 Message Date
Mike McQuaid
36c7f4950c
Optionally parallelise API file downloads
This assumes that all should be downloaded (at least once) on `brew`
commands being run.

Requires a certain amount of cleanup and refactoring around our API
handling and Tap migration methods (which were both weirdly placed and
in some cases broken).

Behaviour without `HOMEBREW_DOWNLOAD_CONCURRENCY` set should
be unchanged.
2025-07-18 15:01:34 +01:00
Mike McQuaid
5cc6722372
Optionally use DownloadQueue for brew install
Allowing using `HOMEBREW_DOWNLOAD_CONCURRENCY` to use the
`DownloadQueue` for `brew install` by downloading and extracting
bottles in parallel.

This requires some fixes in e.g. `Dependency` and `FormulaInstaller`
to be able to front-load all downloads and handle parallelisation of
bottle pouring.

Behaviour without `HOMEBREW_DOWNLOAD_CONCURRENCY` set should be
unchanged.

Attestations are not handled for now and the UI should be improved
before we roll this out to users.

Post-install upgrades are not yet parallelised.

Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-07-18 15:00:23 +01:00
Mike McQuaid
042c79e7ec
Merge pull request #20272 from Homebrew/refactor_download_queue
Refactor DownloadQueue handling
2025-07-18 13:38:29 +00:00
Adrian Ho
464e857344 bundle: --file and --global should conflict
Addresses https://github.com/orgs/Homebrew/discussions/6292.
2025-07-18 18:47:56 +08:00
dependabot[bot]
66d11f23f1
build(deps): bump certifi
Bumps the all group with 1 update in the /Library/Homebrew/formula-analytics directory: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2025.6.15 to 2025.7.9
- [Commits](https://github.com/certifi/python-certifi/compare/2025.06.15...2025.07.09)
build(deps): bump ruby/setup-ruby in the all group

Bumps the all group with 1 update: [ruby/setup-ruby](https://github.com/ruby/setup-ruby).


Updates `ruby/setup-ruby` from 1.246.0 to 1.247.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](a4f8389190...4727905401)
build(deps): bump the all group across 1 directory with 9 updates

Bumps the all group with 5 updates in the /Library/Homebrew directory:

| Package | From | To |
| --- | --- | --- |
| [rubocop](https://github.com/rubocop/rubocop) | `1.77.0` | `1.78.0` |
| [sorbet-static-and-runtime](https://github.com/sorbet/sorbet) | `0.5.12222` | `0.5.12230` |
| [tapioca](https://github.com/Shopify/tapioca) | `0.17.6` | `0.17.7` |
| [ruby-lsp](https://github.com/Shopify/ruby-lsp) | `0.24.2` | `0.25.0` |
| [simplecov-html](https://github.com/simplecov-ruby/simplecov-html) | `0.13.1` | `0.13.2` |



Updates `rubocop` from 1.77.0 to 1.78.0
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.77.0...v1.78.0)

Updates `sorbet-static-and-runtime` from 0.5.12222 to 0.5.12230
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

Updates `tapioca` from 0.17.6 to 0.17.7
- [Release notes](https://github.com/Shopify/tapioca/releases)
- [Commits](https://github.com/Shopify/tapioca/compare/v0.17.6...v0.17.7)

Updates `ruby-lsp` from 0.24.2 to 0.25.0
- [Release notes](https://github.com/Shopify/ruby-lsp/releases)
- [Commits](https://github.com/Shopify/ruby-lsp/compare/v0.24.2...v0.25.0)

Updates `sorbet-runtime` from 0.5.12222 to 0.5.12230
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

Updates `json` from 2.12.2 to 2.13.0
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.12.2...v2.13.0)

Updates `simplecov-html` from 0.13.1 to 0.13.2
- [Release notes](https://github.com/simplecov-ruby/simplecov-html/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simplecov-ruby/simplecov-html/compare/v0.13.1...v0.13.2)

Updates `sorbet` from 0.5.12222 to 0.5.12230
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

Updates `sorbet-static` from 0.5.12222 to 0.5.12230
- [Release notes](https://github.com/sorbet/sorbet/releases)
- [Commits](https://github.com/sorbet/sorbet/commits)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.7.9
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: ruby/setup-ruby
  dependency-version: 1.247.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: rubocop
  dependency-version: 1.78.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: sorbet-static-and-runtime
  dependency-version: 0.5.12230
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: tapioca
  dependency-version: 0.17.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: ruby-lsp
  dependency-version: 0.25.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: sorbet-runtime
  dependency-version: 0.5.12230
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: json
  dependency-version: 2.13.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: simplecov-html
  dependency-version: 0.13.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: sorbet
  dependency-version: 0.5.12230
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: sorbet-static
  dependency-version: 0.5.12230
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 08:53:29 +00:00
Carlo Cabrera
38d4b1e1d1
Merge pull request #20274 from tyuwags/ask-option-refactoring
ask option refactoring
2025-07-18 06:28:18 +00:00
thibhero
4e4617fd37 reject installed before to not print already up to date 2025-07-17 19:29:56 -04:00
Mike McQuaid
a3d6ee1d2a
Refactor DownloadQueue handling
- Use undocumented (for now) `HOMEBREW_DOWNLOAD_CONCURRENCY` instead
  of `--concurrency` flag and avoid passing around `concurrency`
- Create and use `Formula#enqueue_resources_and_patches` helper method
- Rename some method calls to be more obvious
- Use `Downloadable` type to simplify type checks
- General refactoring
2025-07-17 17:49:53 +01:00
botantony
5a50a0f232
formulary: make no_autobump! reason a symbol when needed
Signed-off-by: botantony <antonsm21@gmail.com>
2025-07-17 17:16:37 +02:00
botantony
5450e730ed
Audit no_autobump! reason for new packages
Signed-off-by: botantony <antonsm21@gmail.com>
2025-07-17 17:12:33 +02:00
Patrick Linnane
0dbefc9272
Merge pull request #20262 from Homebrew/mp4-test-fixture
test/fixtures: add minimal mp4
2025-07-16 17:34:40 +00:00
Patrick Linnane
e2746fd864
Merge pull request #20266 from Homebrew/github_runner_matrix_os_tags
github_runner_matrix: note about adding OS tags.
2025-07-16 16:37:04 +00:00
Patrick Linnane
f19dc4556e
Merge pull request #20265 from Homebrew/portable-ruby-3.4.5
Portable Ruby 3.4.5
2025-07-16 16:23:11 +00:00
Mike McQuaid
adc83d2d4b
github_runner_matrix: note about adding OS tags.
This helps people running old macOS versions to jump to specific commits
before their version was unsupported.
2025-07-16 17:22:33 +01:00
Patrick Linnane
af304da633
Portable Ruby 3.4.5
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-07-16 08:58:14 -07:00
William Woodruff
78f3fdeed9
Merge branch 'main' into py3-whl 2025-07-16 11:32:22 -04:00
Matt Coster
41fce10dde
Ignore IP allow list errors in too_many_open_prs
Fixes https://github.com/orgs/Homebrew/discussions/6263. Even when SAML
passes, an IP allow list can still restrict access to organization
repos.
2025-07-16 13:52:39 +01:00
Bevan Kay
758ccd3493
test/fixtures: add minimal mp4 2025-07-16 18:52:07 +10:00
BrewTestBot
36262ed591
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sorbet.yml) workflow.
2025-07-16 00:31:27 +00:00
Eric Knibbe
d31b7fe86e
Add docs for brew alias command 2025-07-15 13:34:49 -04:00
Mike McQuaid
dd3c6a60a5
cleanup: don't warn when loading a renamed cask.
Fixes #20248
2025-07-15 14:22:38 +01:00
Mike McQuaid
6dd684405b
Merge pull request #20253 from Homebrew/dependabot/all-1a71b61bf2
Bump the "all" group with 1 updates across multiple ecosystems
2025-07-15 09:01:58 +00:00
dependabot[bot]
be7c27d923
Gemfile.lock: tapioca 0.17.6 2025-07-15 09:30:33 +01:00
Mike McQuaid
be806e4350
Merge pull request #20218 from Homebrew/add-update-perl-resources
feat: add `update-perl-resources` dev-cmd
2025-07-15 08:28:04 +00:00
Patrick Linnane
4513a43d53
Fix RuboCop failures.
Co-authored-by: Patrick Linnane <patrick@linnane.io>
Co-authored-by: Carlo Cabrera <github@carlo.cab>
Co-authored-by: Thierry Moisan <thierry.moisan@gmail.com>
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-07-14 19:12:38 +01:00
Mike McQuaid
6a5a48de29
extend/kernel: fix failures with differing filenames. 2025-07-14 19:12:37 +01:00
BrewTestBot
3f6fb0da51
brew vendor-gems: commit updates.
Also gnore new `tapioca` `require-hooks` dependency.
2025-07-14 19:12:37 +01:00
BrewTestBot
f877463f6b
Update RBI files for dependabot.
Autogenerated by the [vendor-gems](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/vendor-gems.yml) workflow.
2025-07-14 19:12:36 +01:00
dependabot[bot]
6df0773228
build(deps): bump the dependabot group across 1 directory with 25 updates
---
updated-dependencies:
- dependency-name: rubocop-ast
  dependency-version: 1.45.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: ruby-prof
  dependency-version: 1.7.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: vernier
  dependency-version: 1.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: rubocop
  dependency-version: 1.77.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: rubocop-sorbet
  dependency-version: 0.10.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: parallel_tests
  dependency-version: 5.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: rspec
  dependency-version: 3.13.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: rspec-core
  dependency-version: 3.13.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: rspec-expectations
  dependency-version: 3.13.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: sorbet-static-and-runtime
  dependency-version: 0.5.12221
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: spoom
  dependency-version: 1.7.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: sorbet-static-and-runtime
  dependency-version: 0.5.12222
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: sorbet-runtime
  dependency-version: 0.5.12222
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: tapioca
  dependency-version: 0.17.5
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: ruby-lsp
  dependency-version: 0.24.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: csv
  dependency-version: 3.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: base64
  dependency-version: 0.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: sorbet-runtime
  dependency-version: 0.5.12222
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: benchmark
  dependency-version: 0.4.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: bigdecimal
  dependency-version: 3.2.2
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: json
  dependency-version: 2.12.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: rbi
  dependency-version: 0.3.6
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: rbs
  dependency-version: 4.0.0.dev.4
  dependency-type: indirect
  update-type: version-update:semver-major
  dependency-group: dependabot
- dependency-name: rspec-mocks
  dependency-version: 3.13.5
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: rspec-support
  dependency-version: 3.13.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: sorbet
  dependency-version: 0.5.12222
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dependabot
- dependency-name: sorbet-static
  dependency-version: 0.5.12222
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dependabot
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 19:12:36 +01:00
Mike McQuaid
8515710412
Merge pull request #20241 from Homebrew/download_queue_fetch_move
Move more logic from `cmd/fetch` to `download_queue`
2025-07-14 12:56:50 +00:00
Daeho Ro
04dcca8834
feat: update perl api and refactor name and regex 2025-07-14 21:20:00 +09:00
BrewTestBot
cc930ca089
sorbet: Update RBI files.
Autogenerated by the [sorbet](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/sorbet.yml) workflow.
2025-07-12 00:30:50 +00:00
Eric Knibbe
b631179579
Merge pull request #20246 from Homebrew/alias-symlink-names
aliases/aliases: fix naming of symlinks
2025-07-11 18:21:39 +00:00
Eric Knibbe
c1818fd099
aliases/aliases: fix naming of symlinks 2025-07-11 13:19:58 -04:00
dependabot[bot]
4aee877f04
build(deps): bump the dependabot group across 1 directory with 3 updates
Bumps the dependabot group with 3 updates in the /Library/Homebrew/formula-analytics directory: [certifi](https://github.com/certifi/python-certifi), [influxdb3-python](https://github.com/InfluxCommunity/influxdb3-python) and [typing-extensions](https://github.com/python/typing_extensions).


Updates `certifi` from 2025.4.26 to 2025.6.15
- [Commits](https://github.com/certifi/python-certifi/compare/2025.04.26...2025.06.15)

Updates `influxdb3-python` from 0.13.0 to 0.14.0
- [Release notes](https://github.com/InfluxCommunity/influxdb3-python/releases)
- [Changelog](https://github.com/InfluxCommunity/influxdb3-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/InfluxCommunity/influxdb3-python/compare/v0.13.0...v0.14.0)

Updates `typing-extensions` from 4.13.2 to 4.14.1
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.13.2...4.14.1)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.6.15
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: influxdb3-python
  dependency-version: 0.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependabot
- dependency-name: typing-extensions
  dependency-version: 4.14.1
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: dependabot
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-11 16:12:52 +00:00
Mike McQuaid
f4e629331f
Move more logic from cmd/fetch to download_queue
This is the first step towards using the download queue for all
download operations e.g. `brew install`, `brew upgrade`,
`brew reinstall` etc.

While we're here, do some API cleanup and Sorbet type improvements.
2025-07-11 16:57:41 +01:00
dependabot[bot]
837bb29607
build(deps): bump setuptools in /Library/Homebrew/formula-analytics
Bumps [setuptools](https://github.com/pypa/setuptools) from 80.8.0 to 80.9.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.8.0...v80.9.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.9.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-11 15:36:54 +00:00
Mike McQuaid
eec800149f
Merge pull request #20238 from Homebrew/fix_rubocop_fixture_style
`fixtures/rubocop@x.x.x.rbi`: fix style.
2025-07-11 13:17:54 +00:00
Mike McQuaid
370ce002e9
Merge pull request #20237 from Homebrew/actionlint_skip_homebrew_brew
style: fix skipping actionlint checks on Homebrew/brew.
2025-07-11 13:06:52 +00:00
Issy Long
7f333ab6ec
Merge pull request #20235 from Homebrew/slash-not-plus-in-paths
rubocops/text: Prefer `lib/"string"` over `lib+"string"`
2025-07-11 12:56:54 +00:00
Mike McQuaid
607ffafd9f
fixtures/rubocop@x.x.x.rbi: fix style.
At least for me locally: `brew style` complains about this and
`brew style --fix` autocorrects it.
2025-07-11 13:54:51 +01:00
Mike McQuaid
26bb16e26d
style: fix skipping actionlint checks on Homebrew/brew.
If we're running `brew style` on Homebrew/brew: let's ensure that we
don't run the `actionlint` checks as they are handled by the dedicated
`actionlint.yml` workflow.
2025-07-11 13:51:59 +01:00
Mike McQuaid
36a4cb42ed
Merge pull request #20233 from Homebrew/zero_zero_zero_zero
Add ZeroZeroZeroZero cop
2025-07-11 12:44:23 +00:00
Issy Long
d4d1b4a22a
rubocops/text: Prefer lib/"string" over lib+"string"
- I found a few occurrences of this pattern from
  https://github.com/orgs/Homebrew/projects/5?pane=issue&itemId=97021840,
  that is an automated style request for:
  `core: use / instead of + operator in e.g. (lib+"lv").install "lv.hlp"`.
- Upon adding tests I realised that there's also the `prefix + "bin"`
  case that's already handled differently, so let's combine the handling
  given it's the same `+` that's wrong.
2025-07-11 13:41:58 +01:00
Mike McQuaid
d57efd9ea2
Improve some Pathname instance variable handling
Will fix or at least partly address:
```
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/os/linux/elf.rb:225: warning: The class Pathname reached 8 shape variations, instance variables accesses will be slower and memory usage increased.
35
It is recommended to define instance variables in a consistent order, for instance by eagerly defining them all in the #initialize method.
```
2025-07-11 08:02:27 +00:00
Mike McQuaid
71bab462e1
Add ZeroZeroZeroZero cop
Add a new RuboCop to detect the use of 0.0.0.0 in formulae which
indicates binding to all network interfaces, internally or externally,
so is a bad default and potentially a security risk.

Co-authored-by: Issy Long <me@issylong.com>
2025-07-11 08:24:19 +01:00
Mike McQuaid
a2bf23ef70
Merge pull request #20224 from Homebrew/cask_dumper_old_tokens
Support Cask renames when installing/dumping
2025-07-10 13:54:26 +00:00
Carlo Cabrera
0b99d57621
Merge pull request #20226 from Homebrew/formula-loading-stdout
formulary: prevent formulae from printing to stdout while being loaded
2025-07-10 12:43:42 +00:00
Carlo Cabrera
69ce5edd14
formulary: improve style
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-07-10 20:27:52 +08:00
Mike McQuaid
b53f3b570c
Merge pull request #20228 from Paulchen5/use-github-secrets-in-workflow
Replace `github.token` by `secrets.GITHUB_TOKEN`
2025-07-10 08:32:40 +00:00