This provides a >3x speedup for `brew tap` with no arguments (i.e., when
listing taps). It also makes the completion significantly faster.
$ hyperfine --warmup=3 --setup 'git checkout {branch}' --parameter-list branch master,brew-tap-speedup 'brew tap'
Benchmark 1: brew tap (branch = master)
Time (mean ± σ): 1.405 s ± 0.080 s [User: 0.561 s, System: 0.238 s]
Range (min … max): 1.332 s … 1.549 s 10 runs
Benchmark 2: brew tap (branch = brew-tap-speedup)
Time (mean ± σ): 404.1 ms ± 124.8 ms [User: 107.9 ms, System: 200.7 ms]
Range (min … max): 308.8 ms … 693.7 ms 10 runs
Summary
brew tap (branch = brew-tap-speedup) ran
3.48 ± 1.09 times faster than brew tap (branch = master)
It's expensive to tap `homebrew/core` on GitHub-hosted Ubuntu runners,
and using the container requires tricks to make Codecov work. So, we
rely on macOS to provide coverage for the needs_homebrew_core RSpec
tests.
The containers have `homebrew/core` tapped so we don't need to wait
forever for the tap repo to be cloned.
Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
When we don't care about which specific Ubuntu version to use,
`homebrew/brew:master` is better than `homebrew/ubuntu22.04:master` as
it allows us to implicitly rely on the default Ubuntu version.
See discussion at #18395.
If you have `HOMEBREW_TEMP` set to a longer path (e.g. the user's
private temporary directory rather than `/private/tmp`), Sequoia will
error out on some tests when forking because the path is too long
(> 104 bytes).
To improve this situation let's:
- use a shorter path for `HOMEBREW_TEMP` by appending `/brew-tests` to
the existing `HOMEBREW_TEMP` used outside of tests rather than
creating nested temporary directories
- use the minimal amount of randomness to avoid collisions while
allowing parallel tests
- use `squeeze` to remove any double slashes in the temporary path
This uses the `Homebrew/actions/create-or-update-issue` action added in
Homebrew/actions#588 to create an issue when the publish fails for a
release. It also automatically updates the issue on repeated failures,
and closes the issue when the latest workflow run succeeds.
Currently, `brew link` installs `*.info` files to
`#{HOMEBREW_PREFIX}/share/info/dir` using the `install_info` method.
However, some formulae (e.g., `Emacs`) also ship `*.info.gz` files,
which are only `symlink`ed but not installed.
This commit allows `*.info.gz` files to be installed during linking in
addition to the `*.info` files.
Seen in:
https://github.com/Homebrew/homebrew-core/pull/191090#issuecomment-2363215204
There's a missing signature issue here due to the `generic_*` aliasing
we're doing. With prepend, though: this is no longer needed and we can
use `super` instead which is more idiomatic and nicer overall.
This pattern should probably be applied in other places but: let's try
this targetting fix for here first.