- 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.
There appear to be random, seemingly impossible to debug issues with
running integration tests on portable Ruby. Instead of confusing
contributors when these will be run on CI anyway: let's just skip them
by default (like we do with `--online` for online tests anyway).
There are formulae that use resource blocks for stuff that is needed in
test blocks. If a resource is a `.zip` archive, one needs `unzip`
utility in `PATH` to extract it, but its only available at build-time,
so one observes an error like that for example:
```
==> brew test psftools --verbose
Testing psftools
==> Downloading https://www.zone38.net/font/pc8x8.zip
Already downloaded: /github/home/.cache/Homebrew/downloads/ea5f6a485687368ff5bc99e4cc43a49b06e081baa51a97ee6ddcd8d1b82d7963--pc8x8.zip
==> Verifying ea5f6a485687368ff5bc99e4cc43a49b06e081baa51a97ee6ddcd8d1b82d7963--pc8x8.zip checksum
unzip -o /github/home/.cache/Homebrew/downloads/ea5f6a485687368ff5bc99e4cc43a49b06e081baa51a97ee6ddcd8d1b82d7963--pc8x8.zip -d /tmp/d20200304-21389-ui0wr0
Error: psftools: failed
undefined method `shelljoin' for nil:NilClass
```
Of course this issue affects Linux the most, because of higher
probability that the system lacks `unzip` for example.
With this commit, all resource guessed dependencies should be available
at build and test time.
When version is nil, (version <==> other.version) also returns nil
and then the nill object doesn't have a nonzero? method.
I'm not sure what package put me into this state, but, this fix repaired
my environment.
Also, there is probably a more ruby-esque way to do this, but, I'm not a
ruby expert ;-)
- In Homebrew/linuxbrew-core, [we have a Linux-only formula for
`texlive`](https://github.com/Homebrew/linuxbrew-core/tree/master/Formula/texlive.rb).
- When running `brew audit --strict texlive` on Linux, we got the
following messaging:
```
$ brew audit --strict texlive
texlive:
* 'texlive' is blacklisted from homebrew/core.
Error: 1 problem in 1 formula detected
```
- Looking at where this comes from leads to the missing formula
messaging to install `mactex` via Homebrew Cask. The 'blacklisted in
homebrew/core' messaging only applies to macOS where Casks are an option
for users, so let's not surface the audit for `texlive` on Linux.
- We recently removed Azure as a supported CI provider
(Homebrew/homebrew-test-bot PR 325), so `brew test-bot` won't run on
Azure any more.
- Homebrew CI is moving towards GitHub Actions as the standard.