gh-37237: CI macOS: Fix failure with macos-13-homebrew, add tests on M1 runners, add timeouts
<!-- ^^^^^
Please provide a concise, informative and self-explanatory title.
Don't put issue numbers in there, do this in the PR body below.
For example, instead of "Fixes #1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->
- Fixing the failure with `macos-13-homebrew`, as seen in
https://github.com/sagemath/sage/actions/runs/7761817710/job/21171032513
and upstream uses of macos.yml
https://github.com/dimpase/primecountpy/pull/11#issuecomment-1925456695,
https://github.com/sagemath/cypari2/pull/152
- Generalizing the `ld_classic` workaround from #36599 for the case of
full XCode.
- This is to fix the failure seen on `homebrew-macos-13-usrlocal-
standard-xcode_15.0`, e.g. in https://github.com/scipopt/SCIP-
SDP/actions/runs/7793548242/job/21253452882?pr=9#step:10:2766
- Deactivating the `ld_classic` workaround when `LD` is set, as is in a
conda environment; as seen e.g. in https://groups.google.com/g/sage-
devel/c/1viBzw-ZaoQ/m/S_u9K20xAAAJ
- [Apple Silicon runners recently became
available](https://github.blog/changelog/2024-01-30-github-actions-
introducing-the-new-m1-macos-runner-available-to-open-source/); we add
some tests (example run:
https://github.com/mkoeppe/sage/actions/runs/7772086965/job/21194110510)
- On Apple Silicon, `tox -e local-conda-forge` now uses the correct
installer
- Intel runners were recently upgraded too, increase parallelism.
- Add self-destruct sequence to cancel workflows before the 6h limit
(catches linbox-related build hang)
- Actually handle the input `extra_sage_packages` (for
https://github.com/scipopt/PySCIPOpt/pull/630)
<!-- Why is this change required? What problem does it solve? -->
<!-- If this PR resolves an open issue, please link to it here. For
example "Fixes #12345". -->
<!-- If your change requires a documentation PR, please link it
appropriately. -->
Follow-ups, not addressed here:
- conda-forge-macos-latest-minimal tachyon build failure - needs #36969
- adding a config that tests arm64 conda-forge-minimal - would need
config.guess updates in numerous packages
- arm64 conda-forge-standard - matplotlib build failure (https://github.
com/mkoeppe/sage/actions/runs/7810111886/job/21313997438#step:10:2749)
- hangs or excessive build time that lead to timeouts, probably from
linbox
### :memo: Checklist
<!-- Put an `x` in all the boxes that apply. -->
<!-- If your change requires a documentation PR, please link it
appropriately -->
<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
<!-- Feel free to remove irrelevant items. -->
- [x] The title is concise, informative, and self-explanatory.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.
### :hourglass: Dependencies
<!-- List all open PRs that this PR logically depends on
- #12345: short description why this is a dependency
- #34567: ...
-->
<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
URL: https://github.com/sagemath/sage/pull/37237
Reported by: Matthias Köppe
Reviewer(s): Matthias Köppe, Tobias Diez