46445 Commits

Author SHA1 Message Date
Ruoyu Zhong
42b332055a
os/linux/elf: fix rpath precedence 2025-08-11 18:28:58 +08:00
Ruoyu Zhong
66737b5e82
os/linux/elf: fix file descriptor leak
On Linux, we occasionally see `EMFILE` ("too many open files") errors
especially when installing a large formula like `llvm`. Currently, this
can be reliably reproduced in a Homebrew/brew GitHub codespace (where
`ulimit -n` seems to be 1024 by default) with `brew install geeqie`,
with the following error message:

    Error: Too many open files @ rb_sysopen - /home/linuxbrew/.linuxbrew/Cellar/llvm/20.1.8/bin/tblgen-lsp-server

The reason is that each instance of `PatchELF::Patcher` keeps the ELF
file open. We prepend the `ELFShim` module to the `Pathname` class and
cache the patcher as an instance variable, which means that the ELF file
remains open so long as the `Pathname` instance is still alive even if
we don't need to access the ELF metadata anymore. When performing
certain checks (e.g., linkage), we also store these `Pathname`
instances, so the number of open file descriptors simply keeps
increasing.

We can fix that by not caching the patcher and only use it when
necessary. We create a patcher instance whenever we need to read or
write ELF metadata, and reading of metadata is consolidated into the
existing `ELFShim::Metadata` class so that we don't repeatedly create
patcher instances.

A fix for a file descriptor leak issue in patchelf.rb has been submitted
at https://github.com/david942j/patchelf.rb/pull/48. Together with that,
this fixes #19177, #19866, #20223, #20302.
2025-08-11 18:01:32 +08:00
Mike McQuaid
2992b7f519
Merge pull request #20404 from Homebrew/rubocops_patches_corrector_tests
patches audit: add tests for patches corrector
2025-08-11 07:48:00 +00:00
Mike McQuaid
cf21efc318
Merge pull request #20405 from Homebrew/cask-audit-separate-artifacts
cask/audit: iterate over artifacts in rosetta/signing audit
2025-08-11 07:30:52 +00:00
Mike McQuaid
352cc39523
Merge pull request #20407 from Homebrew/build-log-ext
formula: append `.log` to formula build log filenames
2025-08-11 07:30:10 +00:00
Mike McQuaid
68940af4a5
Merge pull request #20403 from Homebrew/skip-proto-relocation
Skip rpath relocation of ELF files with `protodesc_cold` sections
2025-08-11 07:29:36 +00:00
Bevan Kay
12f6e871c7
cask/audit: apply suggestion from code review
Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-08-11 15:26:44 +10:00
Bevan Kay
5c06d6f184
cask/audit: apply suggestion from code review
Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-08-11 15:26:36 +10:00
Carlo Cabrera
718b82560a
formula: append .log to formula build log filenames
Having log files with extensions like `.cc` and `.cmake` is really
unfriendly to editor syntax highlighters and language servers. Let's try
to make sure these are opened as log files by adding a `.log` extension
to them.
2025-08-11 13:10:14 +08:00
Rylan Polster
480eeb4246
Enable download queue for single formula/cask API fetches 2025-08-11 00:43:34 -04:00
Rylan Polster
d3aac3fa5f
Include aliases, renames, and tap migrations in minimal APIs 2025-08-11 00:37:50 -04:00
Rylan Polster
97d299728d
Cleanup internal API handling 2025-08-11 00:37:50 -04:00
Bevan Kay
34f659cb64
cask/audit: iterate over artifacts in rosetta/signing audit 2025-08-11 14:12:34 +10:00
Issy Long
05b27aa847
Disallow head do blocks with only url and branch
- Since `head` must now specify a url and branch, the `head do` block
  with only these stanzas can be condensed to the single-line
  `head "url", branch: "branch"` format.
2025-08-10 20:52:58 +01:00
Thierry Moisan
9de0395c3b
patches audit: add tests for patches corrector 2025-08-10 15:33:35 -04:00
Issy Long
37eaed5bb7
Ensure that head Git URLs always specify a branch
- There's a TODO on the "someday" list [1] to ensure that `head` Git
  URLs always specify a branch.
- So I thought I'd automate this worry by adding an audit.
- Since `resource` block URLs tend to be pinned to SHAs, if indeed
  they are Git URLs, this audit only applies to `head` URLs.

[1]: https://github.com/orgs/Homebrew/projects/5?pane=issue&itemId=98789749
2025-08-10 20:28:50 +01: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
Douglas Eichelberger
899a6c5977
Try non-nil params 2025-08-10 09:37:57 -07:00
Carlo Cabrera
a7c124c2d0
brew.sh: enforce HOMEBREW_FORCE_BREW_WRAPPER more strictly
`HOMEBREW_FORCE_BREW_WRAPPER` can be used as a security/compliance
feature, but allowing it to be disabled by setting
`HOMEBREW_NO_FORCE_BREW_WRAPPER` leaves a pretty large hole in it that
allows it to be sidestepped.

Let's fix that by actually checking the path of the process that called
`brew`, and the verify that that path matches the configured value of
`HOMEBREW_NO_FORCE_BREW_WRAPPER`.
2025-08-09 03:15:53 +08:00
Ruoyu Zhong
dbe68ef80c
Merge pull request #20399 from Homebrew/spdx-revert
Revert "spdx: update license data."
2025-08-08 14:28:40 +00:00
Ruoyu Zhong
e8a892e2b0
utils/spdx: use refs/tags/ URL to fetch SPDX data 2025-08-08 16:01:51 +08:00
Ruoyu Zhong
d7a365c3f1
Revert "spdx: update license data."
This reverts commit de66adff6f632a6bb300fb08dab55733338322e7.
2025-08-08 16:01:13 +08:00
Mike McQuaid
d7c1336f51
Merge pull request #20398 from Homebrew/download_queue_missing_require
download_queue: add missing require.
2025-08-08 07:49:06 +00:00
Mike McQuaid
7df24d03f2
download_queue: add missing require.
We use `Resource` in a few places here so need to require it.
2025-08-08 08:33:26 +01:00
Ruoyu Zhong
2471997915
Merge pull request #20397 from Homebrew/spdx-update
spdx: update license data.
2025-08-08 02:01:34 +00:00
BrewTestBot
de66adff6f
spdx: update license data.
Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/spdx.yml).
2025-08-08 00:19:22 +00:00
Mike McQuaid
a10e4230b4
Merge pull request #20393 from AlternateRT/docs-improve-autobump
docs: improve Autobump documentation
2025-08-07 12:50:11 +00:00
AltCode
54cfbe15ae
autobump_constants: improve reason descriptions 2025-08-07 14:32:56 +02:00
AltCode
58884c1fac
docs: apply suggestions from code review
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
2025-08-07 14:25:20 +02:00
Mike McQuaid
0a9fec107e
Merge pull request #20396 from Homebrew/more_pathname_types
extend/pathname: fix another type error.
2025-08-07 08:47:07 +00:00
Mike McQuaid
0a881b9a0d
extend/pathname: fix another type error.
Let's make this consistent with the rest of this file.
2025-08-07 09:32:22 +01:00
Mike McQuaid
54c4cfaaaa
Merge pull request #20395 from Homebrew/pathname_types
extend/pathname: fix type error.
2025-08-07 08:21:08 +00:00
Mike McQuaid
ad48b5a5f5
Merge pull request #20392 from jrouly/jrouly/content-type-patch
handle false content_type
2025-08-07 08:12:12 +00:00
Mike McQuaid
9f52a57e58
Merge pull request #20390 from Homebrew/show-rejected-hash
download_queue: display hash of rejected download
2025-08-07 08:09:38 +00:00
Mike McQuaid
31e12d68e3
extend/pathname: fix type error.
`install_p` is sometimes called with a `Pathname` for `new_basename`.
2025-08-07 09:05:40 +01:00
Ruoyu Zhong
696910c533
Merge pull request #20394 from Homebrew/write_env_script-target
extend/pathname: accept `String` as `target` in `write_env_script`
2025-08-07 06:56:53 +00:00
Eric Knibbe
0675ddc876
download_queue: display hash of rejected download 2025-08-06 23:02:18 -04:00
Ruoyu Zhong
10e2c2b298
extend/pathname: accept String as target in write_env_script
There is too much existing usage outside of Homebrew for us to break
[1].

[1]: https://github.com/search?q=%22write_env_script%20%5C%22%22%20NOT%20org%3AHomebrew%20NOT%20is%3Afork&type=code

Closes https://github.com/Homebrew/homebrew-core/pull/232573.
2025-08-07 08:13:15 +08:00
Eric Knibbe
fdabcafb78
Merge pull request #20388 from Homebrew/docs-cask-signing
docs: mention signing in deprecation criteria
2025-08-06 19:36:16 +00:00
Michel Rouly
0270bd9d2a handle false content_type 2025-08-06 11:45:53 -07:00
Douglas Eichelberger
6c18f5c265
Simplify Service attr helper methods 2025-08-06 11:04:45 -07:00
AltCode
360ff196c4
docs: improve Autobump documentation 2025-08-06 19:15:24 +02:00
Mike McQuaid
726f83c4a8
Merge pull request #20389 from Homebrew/service_cron_null
service: ensure JSON cron output can be `null`.
2025-08-06 16:30:04 +00:00
Mike McQuaid
2bc10f6a52
Merge pull request #20380 from Homebrew/rustc_wrapper
Add rustc wrapper shim to fix RUSTFLAGS conflicts
2025-08-06 16:20:55 +00:00
Mike McQuaid
e6ba71c5b1
Add rustc wrapper shim to fix RUSTFLAGS conflicts
Fixes #18556 by using RUSTC_WRAPPER instead of setting RUSTFLAGS directly.
This allows Homebrew's optimization flags to coexist with .cargo/config.toml
settings, preventing build failures when projects have their own Rust
configuration.

- Add rustc_wrapper shim that clears RUSTFLAGS and prepends HOMEBREW_RUSTFLAGS
- Update both std and super environments to use RUSTC_WRAPPER
- Store Homebrew's rustflags in HOMEBREW_RUSTFLAGS instead of RUSTFLAGS

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-08-06 17:06:25 +01:00
Mike McQuaid
1d482244e5
service: ensure JSON cron output can be null.
This better matches other field and existing behaviour.
2025-08-06 16:09:39 +01:00
Eric Knibbe
0f06a17b34
docs: mention signing in deprecation criteria 2025-08-06 10:29:59 -04:00
Mike McQuaid
5e1fd26da0
Merge pull request #20383 from Homebrew/rubydoc-fixes
RubyDoc output improvements
2025-08-06 12:41:08 +00:00
Ruoyu Zhong
98384bb638
Merge pull request #20386 from Homebrew/sync-shared-config
Synchronize shared configuration
2025-08-06 08:35:40 +00:00
BrewTestBot
ba0aa7296b
actionlint.yml: update to match main configuration 2025-08-06 08:11:05 +00:00