36404 Commits

Author SHA1 Message Date
Issy Long
d0e9a2d7d6
Always suggest a HEAD branch name if we can find one
- If a HEAD branch name isn't specified at all, then the user probably
  wants to shortcut adding one by being told what the default branch for
  the repo is. Otherwise they have to click the URL, look at the GitHub
  UI, then type the branch name into `branch: "foo"` syntax.
2025-08-11 13:46:49 +01:00
Mike McQuaid
38415d8600
Merge pull request #20413 from Homebrew/cask-audit-signing-skiplist
cask/audit: add skiplist for signing audit
2025-08-11 12:28:33 +00:00
Mike McQuaid
97c0bc7d0b
Merge pull request #20408 from Homebrew/fd-leak-fix
os/linux/elf: fix file descriptor leak
2025-08-11 12:10:16 +00:00
Bevan Kay
c83f77b091
cask/audit: add skiplist for signing audit 2025-08-11 22:08:05 +10:00
Xuehai Pan
b2d621ce6f os/linux/ld: do not crash the program if the ld.so.conf entry is not readable 2025-08-11 19:40:41 +08:00
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
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
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
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
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
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
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
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
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
Mike McQuaid
5e1fd26da0
Merge pull request #20383 from Homebrew/rubydoc-fixes
RubyDoc output improvements
2025-08-06 12:41:08 +00:00
Eric Knibbe
626b6aca2d
RubyDoc output fixes 2025-08-05 17:13:42 -04:00
Colin Dean
f08122937f
Reorders git options for uncommitted modifications nudge
-C path must come before the subcommand.

Co-authored-by: Carlo Cabrera <github@carlo.cab>
2025-08-05 14:58:44 -04:00
Colin Dean
60ce25bea0
Use git's -C option to set git's working directory for uncommitted modifications nudge 2025-08-05 14:49:11 -04:00
Colin Dean
7d285c0956
diagnostic: Use pushd/popd in uncommited modifications nudge
While filing https://github.com/Homebrew/brew/issues/20379, I lost where I was because I followed the given instruction. Instead, let's use pushd/popd so the user is returned to their pwd if the git operations succeed.
2025-08-05 11:48:39 -04:00
Mike McQuaid
a729c533fd
Merge pull request #20377 from Homebrew/fix-linkage-checker-file-descriptors
Fix file descriptor leak in Linux LD library path parsing
2025-08-05 15:02:04 +00:00
Mike McQuaid
23971854b0
Fix file descriptor leak in Linux LD library path parsing
The library_paths method was using readlines which could leave file
descriptors open due to Ruby's garbage collection behavior. When
processing many packages during 'brew upgrade' or 'brew linkage',
this caused "Too many open files" errors on Linux systems.

Changes:
- Replace readlines with explicit file.open block to ensure proper closure
- Add caching to avoid repeatedly reading /etc/ld.so.conf during a session
- Cache included files as well to optimize recursive include processing

Fixes: #19866, #20302, #19177, #20223

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-05 15:19:07 +01:00