RuboCop requires using Utils.safe_popen_read and Utils.safe_popen_write
instead of Utils.popen_read and Utils.popen_write respectively.
Using the "safe" version means that an error will be shown if the
command fails. Previously, when using `popen_read`, a failed command can
go unnoticed and have negative consequences that go undetected (as
happened for pipend in
https://github.com/Homebrew/homebrew-core/pull/55682)
RuboCop does not require Utils.safe_popen_read in a test do block
because there can be some legitimate uses for Utils.popen_read in these
cases.
- This builds on @jonchang's work that started in #6265.
- We now use `uses_from_macos` to declare dependencies that are implicit
on macOS because they ship with macOS, but they're needed on Linux. We
have to be sure that the dependencies people specify as
`uses_from_macos` are actually shipped with macOS. So, we maintain a
safelist of those dependencies and check against it.
- Also add more legitimate `uses_from_macos` dependencies to the list.
- This is runnable with `brew audit --only-cops=FormulaAudit/UsesFromMacos`.
- It produces different number of failures on macOS vs. Linux, because
apparently we've not synced Homebrew/linuxbrew-core upstream thoroughly
enough yet.
- Originally this was designed as a `--strict` audit, but we flipped it
to be a normal audit because - to quote Mike - this is "sufficiently
robust" now.
- We recently deleted a load of old Homebrew/formula-patches patches for
non-existent core formulae
(https://github.com/Homebrew/formula-patches/pull/283). This is a good
action to take. Users should always be able to retrieve the patch once
it's been deleted from the repo, if the formula they continue to use
specifies a git revision to pull from, not just `master`.
- The code to detect `master` formulae was already here, so this adds
another GitHub host to the detection: `raw.githubusercontent.com` as
that's what the current patches that use `master`
(https://github.com/Homebrew/homebrew-core/pull/51329) link to.
- Fixes https://github.com/Homebrew/homebrew-core/issues/51313.