3470 Commits

Author SHA1 Message Date
Eric Knibbe
626b6aca2d
RubyDoc output fixes 2025-08-05 17:13:42 -04:00
Douglas Eichelberger
40c58a883d
Enable strict typing in Tap 2025-08-04 13:11:15 -07:00
Eric Knibbe
6255263b51
output: express environment variables consistently 2025-08-04 09:50:06 -04:00
Eric Knibbe
fe13aac730
Manpage: source wording & formatting fixes 2025-08-01 23:43:46 -04:00
Carlo Cabrera
fb35add3b6
Replace ensure_formula_installed! with Formula#ensure_installed!
`ensure_formula_installed!` requires the `Formula` class to be loaded
before being called to work properly.

Let's guarantee that instead by implementing it as an instance method of
the `Formula` class.

See discussion at #20358.
2025-08-02 03:43:37 +08:00
Carlo Cabrera
cc5df09845
Ensure we require "formula" before doing ensure_formula_installed!
This is needed to avoid Sorbet runtime errors. See #20352.
2025-08-02 02:46:38 +08:00
Carlo Cabrera
cf6c5acce0
extend/kernel: tighten type sig for ensure_formula_installed!
This does the same as #20356 for `ensure_formula_installed!`. See
discussion at #20352.

Unfortunately, one must still `require "formula"` before using this
method because of the `returns(Formula)`, but tightening the type
signature is generally a good idea anyway.

Closes #20352.
2025-08-02 02:23:47 +08:00
Carlo Cabrera
a9e88acab4
dev-cmd/cat: add require "formula"
Fixes

    ❯ HOMEBREW_BAT=1 brew cat xz
    Error: uninitialized constant Kernel::Formula
    Warning: Removed Sorbet lines from backtrace!
    Rerun with `--verbose` to see the original backtrace
    /opt/homebrew/Library/Homebrew/extend/kernel.rb:445:in 'block in <module:Kernel>'
    /opt/homebrew/Library/Homebrew/dev-cmd/cat.rb:33:in 'block in Homebrew::DevCmd::Cat#run'
    /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.4.5/lib/ruby/3.4.0/fileutils.rb:241:in 'Dir.chdir'
    /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.4.5/lib/ruby/3.4.0/fileutils.rb:241:in 'FileUtils#cd'
    /opt/homebrew/Library/Homebrew/dev-cmd/cat.rb:29:in 'Homebrew::DevCmd::Cat#run'
    /opt/homebrew/Library/Homebrew/brew.rb:113:in '<main>'
    Please report this issue:
      https://docs.brew.sh/Troubleshooting
2025-08-02 01:30:01 +08:00
Mike McQuaid
e3c3f5a356
Deprecate/disable/remove code for Homebrew 4.6
The next minor release will be Homebrew 4.6.0 so let's do the usual
deprecation/disable/remove code cycle.
2025-07-31 12:13:01 +01:00
Carlo Cabrera
99807510f0
dispatch-build-bottle: use main branch
This is really only used in Homebrew/core, so it should be safe to just
change `ref` here to `main`. Without this, `dispatch-build-bottle`
creates PRs that mistakenly target the `master` branch instead of the
`main` branch.
2025-07-21 10:24:23 +08: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
Paulchen
b7b369270e
Replace github.token by secrets.GITHUB_TOKEN 2025-07-10 17:01:29 +09:00
Mike McQuaid
5ec756e0ca
Merge pull request #20193 from Homebrew/skinny-rubocop-rbi
Keep only the parts of `rubocop.rbi` that we actually use
2025-07-07 16:59:45 +00:00
Daeho Ro
f89ead08c3
feat: add update-perl-resources dev-cmd 2025-07-06 16:23:31 +09:00
Issy Long
836d85277f
Keep only the parts of rubocop.rbi that we actually use
- This file was _massive_ - over 60k lines and we had to bump the file
  size limit for pushes to the repo!
- This was because by default Tapioca, when it encounters a
  `require "rubocop"` during RBI generation, loads all of the cops ever
  because they're all classes inside `RuboCop::Cop`.
- There wasn't an easy way to control this at Tapioca generation time
  (we tried), so now we parse the generated RBI file and delete classes
  and method definitions that we don't use.
- I regenerated the RBIs (`brew tc --update rubocop`) and added new
  things to the allowlist until Sorbet came back green.
- Now the file is ~7k lines and 240K - much better!
2025-07-04 00:27:12 +01:00
Eric Knibbe
f5c5d26173
cmd/dev-cmd: fetch HOMEBREW_EVAL_ALL for --eval-all 2025-07-03 12:59:12 -04:00
Issy Long
019a799fae
Merge pull request #20128 from Homebrew/some-bundle-files-werent-typed-at-all
Make the remaining `bundle` files `typed: true`
2025-06-29 23:10:59 +00:00
Douglas Eichelberger
004c0a2a6c
Refactor exec.rb type fixes 2025-06-29 09:02:24 -07:00
Štefan Baebler
5627a90652
dev-cmd/bump-formula-pr: release notes as proper html link
The release notes link is not rendered as a proper hyperlink, this fixes it.

Few examples of PRs with unclickable links:
* https://github.com/Homebrew/homebrew-core/pull/228256
* https://github.com/Homebrew/homebrew-core/pull/228263
* https://github.com/Homebrew/homebrew-core/pull/228267
2025-06-27 18:52:43 +02:00
Patrick Linnane
f32f391fc4
Merge pull request #20165 from Homebrew/more_tab_types
tab, cask/tab: add more Sorbet types and signatures.
2025-06-24 20:27:11 +00:00
Mike McQuaid
05c7b65f54
tab, cask/tab: add more Sorbet types and signatures.
I bailed before going all the way to `typed: strict` but this should at
least improve things and fix:

`Library/Homebrew/tab.rb:111: warning: The class Tab reached 8 shape variations, instance variables accesses will be slower and memory usage increased.`
2025-06-24 12:06:55 +01:00
Mike McQuaid
d661cffc1f
Switch to using main as the default branch
Homebrew/brew has moved to a `main` default branch so we can more move
references from `master` to `main`.
2025-06-24 11:14:57 +01:00
Mike McQuaid
55f65ec375
audit: ensure that official formula and cask names don't conflict.
Co-authored-by: Eric Knibbe <enk3@outlook.com>
2025-06-23 16:08:13 +01:00
Mike McQuaid
77321d6f8b
Merge pull request #20132 from Homebrew/dev-cmd
dev-cmd: set `typed: strict`
2025-06-17 18:37:03 +00:00
Mike McQuaid
ca1e08c7a8
dev-cmd: set typed: strict 2025-06-17 16:34:19 +01:00
Mike McQuaid
3c30845240
Merge pull request #20116 from abitrolly/create-tests
Refactor `FormulaCreator` args and call `parse_url` automatically
2025-06-17 14:18:52 +00:00
Mike McQuaid
1f29f51654
dev-cmd/create: avoid duplicate presence check.
Co-authored-by: Anatoli Babenia <anatoli@rainforce.org>
2025-06-17 14:44:59 +01:00
Eric Knibbe
09eaf1495a
Merge pull request #20119 from Homebrew/audit-bundle-version
cask/audit: also check binary for minimum OS
2025-06-17 11:36:08 +00:00
Mike McQuaid
c5d091af21
Refactor/typecheck create and formula_creator 2025-06-17 11:44:15 +01:00
Anatoli Babenia
85d48da364
Refactor FormulaCreator args and call parse_url automatically
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-06-17 11:19:52 +01:00
Mike McQuaid
7345607ca0
a*.rb: move to strict Sorbet sigil.
Co-authored-by: Rylan Polster <rslpolster@gmail.com>
2025-06-17 08:18:33 +01:00
Eric Knibbe
ab4acd655a
cask/audit: also check binary for minimum OS 2025-06-16 23:39:38 -04:00
Anatoli Babenia
b5d4bc56fc Remove vale FIXME
https://github.com/errata-ai/vale/issues/818 is fixed a year ago
2025-06-16 21:39:39 +03:00
Mike McQuaid
9ac306e464
Remove alias generic_* definitions in favour of using super
This is the pattern we've been adopting for a while and it's a bit
cleaner. Let's remove all of the existing usage of the existing pattern
to avoid confusion when adopting the new one.
2025-06-16 08:10:08 +00:00
Sam Ford
764d2b2dcc
Add HOMEBREW_MACOS_NEWEST_SUPPORTED env var
We have a `HOMEBREW_MACOS_NEWEST_UNSUPPORTED` environment variable
and this is used in `MacOSVersion` to determine prerelease versions
but we don't have a way of easily determining the newest supported
macOS version.

`bump-cask-pr` contains logic that assumes the first key/value in
`MacOSVersion::SYMBOLS` is the newest macOS version but it recently
became clear that this is a prerelease version between WWDC and the
subsequent macOS release. Similarly, `dev-cmd/generate-cask-api.rb`
tries to compute the newest stable macOS version as
`HOMEBREW_MACOS_NEWEST_UNSUPPORTED.to_i - 1` and this will fail
if/when we update that variable to `"26"`, as the macOS version
before 26 is 15, not 25.

This adds a `HOMEBREW_MACOS_NEWEST_SUPPORTED` environment variable,
so we have a straightforward way of quickly identifying the newest
supported macOS version without having to make potentially unreliable
assumptions or do computations to identify the latest non-prerelease
`MacOSVersion` value. This also updates the two aforementioned areas
to use this environment variable to produce the newest stable macOS
version symbol in a more reliable way.
2025-06-14 18:45:25 -04:00
Mike McQuaid
3cb4ba8c26
Merge pull request #20101 from Homebrew/homebrew_actions_main
Use Homebrew/actions/*@main in Actions workflows
2025-06-13 13:33:52 +00:00
Mike McQuaid
be6cee3006
Use Homebrew/actions/*@main in Actions workflows
We've migrated Homebrew/actions to use the `main` branch now so let's
update these references.
2025-06-13 14:22:09 +01:00
Sam Ford
4a4f7a541a
Cask: Initialize yet more instance variables
I previously added some instance variables in `Cask::DSL` to its
`initialize` method but I missed some last time, so we still see
warnings like `The class Cask::DSL reached 8 shape variations,
instance variables accesses will be slower and memory usage increased.
It is recommended to define instance variables in a consistent order,
for instance by eagerly defining them all in the #initialize method.`

This initializes more instance variables in `Cask` classes to resolve
other situations where this warning may occur. I've been testing this
for a while and haven't see any warnings with these changes but
there's always a chance that there's still more work to be done.
2025-06-13 08:32:56 -04:00
Mike McQuaid
ec539147a7
Merge pull request #20089 from Homebrew/revert-20079-fix-tests-only-files
Revert "Filter `brew tests` spec files appropriately for each OS"
2025-06-12 16:40:34 +00:00
Mike McQuaid
f234423913
dev-cmd/tests: fix require ordering.
This needs to happen after `setup_environment!` so that
`HOMEBREW_TEST_GENERIC_OS` is set and `OS.linux?` and `OS.mac?` both
`return false`.
2025-06-12 16:43:50 +01:00
Bo Anderson
bf6f813492
dev-cmd/bump-formula-pr: handle null body 2025-06-12 04:48:15 +01:00
Rylan Polster
ce72e34b19
Filter brew tests spec files appropriately for each OS 2025-06-11 15:59:21 -04:00
Mike McQuaid
8d4395118c
dev-cmd/contributions: improve CSV output.
Output messages to stderr when CSV output is enabled.

This allows doing `brew contributions --csv > contributions.csv` to
save the output to a file.
2025-06-10 17:28:21 +01:00
Mike McQuaid
e9f55a8f71
tests: default to API mode enabled.
While we're here, also add `brew tests --no-parallel` which I relied
on during testing.

Pretty much anywhere we rely on a stubbed formula on disk to work: we
need to disable the API.
2025-06-10 15:53:27 +01:00
Mike McQuaid
dc71b7c8f6
Cleanup extend/ directory usage.
- move some things out of `extend` that don't really fit there e.g.
  `Module`s that are included but not doing any
  overriding/monkeypatching
- move some code into `extend/os` to fix all remaining
  `rubocop:todo Homebrew/MoveToExtendOS`s
- remove some unneeded `bundle` skipper code that doesn't really make
  sense given our current bottling strategy
- extract some `Pathname` extensions to `extend/pathname` for separate
  files
- move a `ENV` `Kernel` extension into `kernel.rb`
- `odeprecate` a seemingly unused backwards compatibility method
- move `readline_nonblock` from a monkeypatch to a
  `ReadlineNonblock.read` method as its only used in one place
- fix up a link in documentation
2025-06-09 19:06:16 +01:00
Mike McQuaid
cc03340af3
Reduce Homebrew/brew CI warnings
- Remove a bunch of non-actionable/unnecessary noise in GitHub Actions
  CI.
- Limit number of threads used to generate analytics API data to avoid
  reproducible failures producing errors and requiring retries.
- Move to Debian Old Stable for testing non-system `glibc`.
- Remove unneeded core taps/updates.
- Improve naming of CI jobs to clarify purpose i.e. we're testing
  things work on Linux, not Ubuntu specifically.
- Remove dedicated non-online/non-generic Linux `brew tests` jobs from
  3 to 1.

Co-authored-by: Rylan Polster <rslpolster@gmail.com>
2025-06-09 12:47:22 +01:00
Rylan Polster
73b64390b3
Use existing Utils::Bottles::Collector#specification_for method 2025-06-05 12:38:15 -04:00
Rylan Polster
e83dc1cb3c
Fallback to older bottle hashes when viable 2025-06-05 11:32:47 -04:00
Rylan Polster
e47bc2fb86
Use hashes of arrays instead 2025-06-05 03:15:44 -04:00