413 Commits

Author SHA1 Message Date
Michael Cho
14d7942c95
ENV/super: set JEMALLOC_SYS_WITH_LG_PAGE
AArch64 Linux supports up to 64KB page size

Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-09-08 15:58:48 -04:00
Douglas Eichelberger
fb6c51da07
Enable strict typing in SystemCommand 2025-09-02 10:26:40 -07:00
Mike McQuaid
a1f112f3fe
Move o* output methods to Utils::Output
This reduces the surface area of our `Kernel` monkeypatch and removes
the need to `include Kernel` in a bunch of modules.

While we're here, also move `Kernel#require?` to `Homebrew` and fully
scope the calls to it.
2025-08-20 19:20:19 +01:00
Mike McQuaid
6db1f6a052
**/diagnostic.rb: add Sorbet strict sigil.
Making more files `typed: strict` slowly but surely.
2025-08-19 09:10:24 +01:00
Mike McQuaid
59f0197450
os/linux/diagnostic: make check_for_symlinked_home doctor-only.
This avoids printing it every time a `brew install` is run.
2025-08-19 08:30:06 +01:00
Mike McQuaid
22fdb11e00
**/keg_relocate.rb: add set Sorbet typed: strict
Other files have been changed where required.
2025-08-18 15:02:15 +01:00
Mike McQuaid
d135e744b1
Add more Sorbet types
`typed: strict` a few more places and fix other files necessarily to
make that happen.
2025-08-15 19:21:28 +01:00
copilot-swe-agent[bot]
4ee43fbde1
Improve quarantine support error messages with specific CLT guidance
Co-authored-by: MikeMcQuaid <125011+MikeMcQuaid@users.noreply.github.com>
2025-08-13 14:30:05 +01:00
Carlo Cabrera
e0a69316b7
Merge pull request #20434 from Homebrew/new-protodesc_cold-fix
os/linux/keg_relocate: skip ELF files with `protodesc_cold` only when bottling
2025-08-13 04:07:32 +00:00
Carlo Cabrera
c9060c3242
Improve test for bottling 2025-08-13 09:51:27 +08:00
Carlo Cabrera
6457770a59
os/linux/keg_relocate: skip ELF files with protodesc_cold only when bottling
We removed this exclusion in #20423 because it broke pouring of existing
bottles, which still need relocation.

Let's skip relocation only when bottling, to avoid breaking existing
bottles that need to be relocated when pouring.
2025-08-13 00:25:53 +08:00
copilot-swe-agent[bot]
d785e2024b
Add symlinked home detection to brew doctor on Linux
Co-authored-by: MikeMcQuaid <125011+MikeMcQuaid@users.noreply.github.com>
2025-08-12 11:00:14 +01:00
Carlo Cabrera
ef89522446
os/linux/keg_relocate: remove protodesc_cold exclusion
This needs to be handled more carefully. It probably works fine for
bottles built *after* this change was added, but it breaks bottles built
before this exclusion was added.

Let's remove it for now to limit the extent of the breakage.
2025-08-12 00:27:39 +08:00
Carlo Cabrera
a41de81890
Skip rpath relocation of ELF files with protodesc_cold sections
We have multiple formulae (e.g. `ola`, `openvino`, `opencv`, `or-tools`,
`pytorch`) that seem to be broken by `patchelf.rb` on x86_64 Linux.[^1] The
common thread seems to be the presence of a `protodesc_cold` section in
the ELF header.

Let's avoid breaking these bottles by skipping relocation when a binary
file has a `protodesc_cold` section. It will probably hurt
relocatability of these bottles, but that's better shipping broken
binaries.

[^1]: https://github.com/Homebrew/homebrew-core/pull/210860#issue-2918569212
2025-08-11 03:10:07 +08:00
Eric Knibbe
6255263b51
output: express environment variables consistently 2025-08-04 09:50:06 -04:00
Mike McQuaid
e75d54cbff
linux/development_tools: add undocumented environment variables.
This makes it easier to test the automatic installation of the libc and
compiler formulae without having to change the code.

This is particularly useful now we don't have any official Docker images
for this.
2025-07-25 15:56:33 +00:00
Mike McQuaid
e10d4c43c2
Optionally use DownloadQueue for reinstall, upgrade.
Follow up on `DownloadQueue` for download concurrency on `brew fetch`
and `brew install` to also add support for `brew reinstall` and
`brew upgrade`.

This required a fair bit of refactoring to make this work so I've also
made `install.rb`, `reinstall.rb` and `upgrade.rb` `typed: strict` to
add some extra guardrails from Sorbet here.

Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-07-24 15:41:03 +01: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
Rylan Polster
f238d3b494
Merge pull request #20151 from Homebrew/fix-doctor-linux
Fix `brew doctor` cask handling on Linux
2025-06-22 10:10:28 +00:00
Rylan Polster
431d8f1ff7
Consistently use ClassMethods sub-module for prepending class methods 2025-06-21 21:40:57 -04:00
Rylan Polster
267afac198
Remove more monkey-patching in extend/os 2025-06-21 21:34:20 -04:00
Rylan Polster
2a7fbd00a9
Fix Cask::Quarantine class methods on Linux 2025-06-21 21:07:08 -04:00
Rylan Polster
031160936f
Split out os-specific cask software version checks 2025-06-21 13:59:57 -04: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
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
Rylan Polster
ce72e34b19
Filter brew tests spec files appropriately for each OS 2025-06-11 15:59:21 -04: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
Patrick Linnane
c6a2fa335d
brew style --fix 2025-05-05 14:35:08 -07:00
Issy Long
6c11916cbc
Bump some files to Sorbet typed: strict 2025-04-27 22:45:44 +01:00
Patrick Linnane
997ea136b6
os/linux/development_tools: update cop namespace
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2025-04-03 19:43:31 -07:00
Mike McQuaid
e3137f192f
Merge pull request #19642 from Homebrew/linux_ci_gcc
Update Linux GCC code.
2025-04-03 15:25:43 +00:00
Mike McQuaid
2b4324af9b
Update Linux GCC code.
Update both the variables that dictate this and the documents that
explain our GCC/glibc policies.

These should ease a future migration to a newer GCC version.
2025-04-03 12:47:21 +01:00
Mike McQuaid
d899f00c4b
Link to Support Tiers in diagnostic/error messages
Now that we have this nice URL let's reference it to allow our other
messages to be a bit shorter/kinder.
2025-04-01 11:35:27 +01:00
Mike McQuaid
11875cde2f linux/bundle/skipper: fix skipper logic.
This should be reversed to work as expected on Linux.
2025-03-27 11:49:10 +00:00
Carlo Cabrera
d130b53394
extend/os/linux/cask/installer: make check_stanza_os_requirements non-private
The method it overrides is not `private`, so it doesn't seem like this
should be private. This causes errors when using `brew bundle` on Linux
with a `Brewfile` that contains `cask` entries.
2025-03-26 17:26:20 +08:00
Mike McQuaid
3b49babbfe
linux/bundle/skipper: add missing requires. 2025-03-25 19:11:19 +00:00
Mike McQuaid
08a9b44b72
linux/bundle/skipper: add support for Linux casks.
Don't unconditionally skip Linux casks but instead check if they are
supported on Linux.
2025-03-25 11:08:21 +00:00
Mike McQuaid
14fe53b9fd
Merge pull request #19521 from Homebrew/pac-bti
Use PAC+BTI where possible on arm64 Linux
2025-03-19 12:45:34 +00:00
Mike McQuaid
d240eda154
os/linux/extend/ENV/super: add comment. 2025-03-19 12:30:59 +00:00
Mike McQuaid
bdeca530ff
Migrate Homebrew/bundle to Homebrew/brew
Co-authored-by: Bo Anderson <mail@boanderson.me>
2025-03-19 06:47:01 +00:00
Carlo Cabrera
49dac599da
Merge branch 'master' into pac-bti 2025-03-19 01:32:54 +08:00
Mike McQuaid
3f6d30f885
Merge pull request #19517 from botantony/brew-doctor
fix: ignore broken kegs during gcc linkage test
2025-03-18 11:50:21 +00:00
Adrian Ho
c180d636ef linux/hardware/cpu: fix amd_k12 reference
AMD K12 was an planned ARM microarchitecture that never existed.

Ref: https://en.wikipedia.org/wiki/List_of_AMD_CPU_microarchitectures#Nomenclature
2025-03-18 18:45:46 +08:00
botantony
4b62b9d2c5
fix: ignore broken kegs during gcc linkage test
Signed-off-by: botantony <antonsm21@gmail.com>
Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-03-18 11:00:14 +01:00
Bo Anderson
6fed6c10e2
Use PAC+BTI where possible on arm64 Linux 2025-03-18 06:14:16 +00:00
Carlo Cabrera
343eac915b
os/linux/diagnostic: skip error on arm64 when HOMEBREW_ARM64_TESTING is set
This[^1] will enable us to start testing arm64 bottle builds in
Homebrew/core when this environment variable is set.

[^1]: Along with some tweaks to the `dispatch-build-bottle` workflow.
2025-03-17 20:52:12 +08:00
Mike McQuaid
22f72cb7d2
linux/cask/installer: use artifact denylist
Otherwise, we end up preventing the use of e.g. `preflight`,
`uninstall` that may all work fine on Linux.
2025-03-11 15:33:01 +00:00
Sean Molenaar
55b07d7fed feat: add cask shell completion 2025-03-05 20:12:18 +01:00
Douglas Eichelberger
a81239ec2d
Enable strict typing in Formula 2025-02-24 10:23:42 -08:00
Douglas Eichelberger
8763fb6d29 Resolve rubocop violations 2025-02-17 18:56:31 -08:00