When GCC 12 ships (Homebrew/homebrew-core#106755) ships, most (all?)
Linux bottles that depend on GCC will break.
Let's fix that by using the same trick for handling divergent formula
revisions when migrating formulae from linuxbrew-core (#11982). We set
the recorded `version_scheme` to -1, which spoofs the formula being
outdated. When `brew upgrade` installs GCC 12, the broken formulae will
have their bottles reinstalled too.
This works because the reinstallation will also rewrite the existing
RPATHs to point to the new version of GCC instead (#13631). This should
handle most of the breakage.
Error: tried to create Proc object without a block
Do not report this issue until you've run `brew update` and tried again.
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/dev-cmd/pr-pull.rb:372:in `proc'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/dev-cmd/pr-pull.rb:372:in `pr_check_conflicts'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/dev-cmd/pr-pull.rb:439:in `block in pr_pull'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/dev-cmd/pr-pull.rb:429:in `each'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/dev-cmd/pr-pull.rb:429:in `pr_pull'
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'
Error: Process completed with exit code 1.
https://github.com/Homebrew/homebrew-core/runs/7634004090?check_suite_focus=true#step:10:15
This should help keep bottles that require GCC working when
Homebrew/homebrew-core#106755 is merged.
This only works on freshly-poured bottles. Previously installed bottles
will still break on systems with a host GCC older than GCC 11.
This change will prevent us having to run some long running builds
multiple times and to rely on luck to get things merged without conflicts.
The check takes less than 30 secondes on my local setup.
There's no point in saving old ones because the debug symbols will only
for the newest bulid anyway.
Currently blows away what was there before, which isn't ideal for a dev
workflow. Maybe that should be changed, given a tar file should be a tar
file, so shouldn't change. But there are many different types of files.
But only checks that the command works. Not that `dsymutil` is called
or that `-g` is added to the compile args.
(Not sure how to do either in an integration test.)