Description
current todo list
- make an announcement (add announcement for dropping MacOS<10.13 #1993)
- decide how we want to enforce the __osx constraint
going to use recipe_append.yaml generated byconda-forge-ci-setup
(add recipe_append.yaml for osx with__osx >=10.13
in run conda-forge-ci-setup-feedstock#260)- The append doesn't work for recipes with outputs, so we'll have to use a run export on the compilers for osx.
- Do META:
{{ stdlib("c") }}
migration #2102 - Decide if we will allow folks to set a min version less the global minimum.
If yes, do nothing.stdlib jinja mechanism will allow thisIf no, then we need a minimigrator to adjust / remove any custom minimum pins below 10.13
- clean up recipes with outdated pins in CBC (that don't explicitly want/need it)
- figure out if there are any finicky builds on osx that need adjusting? I recall some but maybe that is out of date by now.
- figure out remaining(?) places in the infrastructure that involve assumptions about the sysroot and fix them up
- patch old builds with 10.9 __osx constraint?
- bump
c_stdlib_version
to 10.13 forosx-64
in global pinnings
issue text from start
When azure deprecated the macOS-10.15 images, it turned out macOS-11 still supports targets all the way back to our baseline 10.9, and so it was decided to separate the discussion of the image upgrade from the default MACOSX_DEPLOYMENT_TARGET
.
However our baseline target 10.9 is now EOL since almost 6(!) years, so I guess that discussion should be had at some point. I don't think there's a really urgent need (what with shipping our own libcxx
, plus the _LIBCPP_DISABLE_AVAILABILITY
mechanism1), but this topic recently came up in a numpy discussion, so I though I'd open an issue.
Originally, I thought our hand would be forced once macOS-11 images are deprecated, but it turns out that even in the macOS-12 images, there's still an SDK with Xcode 13.1, which in turn still supports targets back to 10.9. Only once we're forced to use Xcode 14+ would we have to bump the minimum target to 10.13.
July 2023 update
Out of curiosity, I wanted to check when the last bump of the MACOSX_DEPLOYMENT_TARGET happened, and, as it turns out, it's been at 10.9 since the initial commit of https://github.com/conda-forge/conda-forge-pinning-feedstock 🤯
With a bit of digging (and luck), I found the bump from 10.7 to 10.9 though: conda-forge/toolchain-feedstock@7a470c5 - 7 years ago. At the time, 10.9 was just before its EOL. If we applied the same standard today we should jump directly to 11.0.
Given that most users these days are on much newer versions, and want to use newer features (relevant for our packaging, like support for metal or the new LAPACK implementation), I think it might make sense to stop dragging our feet so much on this. We're (slowly but steadily) moving with the time on linux and windows as well, why should osx need to fall so far behind?
To substantiate this a bit more, I wanted to look at the usage numbers for different MacOS versions. The broadest measure is "everyone who uses a browser", but there are apparently no good usage numbers, because Apple keeps misreporting its OS version in HTTP headers, for some complicated reasons. I did find however that 92% are on 10.15+, which is the version every version after that pretends to be. Notably, all (distinguishable) versions that're EOL have max 1-1.5% usage numbers (<7% cumulated) -- and again, this is all MacOS users, not just those of conda-forge.
Footnotes
-
though there are quite a few feedstocks that just bump the
MACOSX_DEPLOYMENT_TARGET
because it happens to unbreak CI - not least because the compiler errors point in this direction ("X is unavailable: introduced in macOS Y.Z") - but often not adding__osx >={{ MACOSX_DEPLOYMENT_TARGET|default("10.9") }}
as a dependence; such packages might already be broken on old OSX anyway... ↩