Thomas Munro <thomas.munro@gmail.com> writes: > I'll move it when committing. I'll let this patch sit for another day > to see if any other objections show up.
FWIW, I remain fairly strongly against this, precisely because of the point that it requires us to start using a randomly different feature-probing technology anytime Apple decides that they're going to implement some standard API that they didn't before. Even if it works everywhere for preadv/pwritev (which we won't know in advance of buildfarm testing, and maybe not then, since detection failures will probably be silent), it seems likely that we'll hit some case in the future where this interacts badly with some other platform's weirdness. We haven't claimed in the past to support MACOSX_DEPLOYMENT_TARGET, and I'm not sure we should start now. How many people actually care about that?
I missed this earlier - it's come to my attention through a thread on the -packagers list. Adding my response on that thread here for this audience:
The ability to target older releases with a newer SDK is essential for packages such as the EDB PostgreSQL installers and the pgAdmin community installers. It's very difficult (sometimes impossible) to get older OS versions on new machines now - Apple make it very hard to download old versions of macOS (some can be found, others not), and they won't always work on newer hardware anyway so it's really not feasible to have all the build machines running the oldest version that needs to be supported.
FYI, the pgAdmin and PG installer buildfarms have -mmacosx-version-min=10.12 in CFLAGS etc. to handle this, which is synonymous with MACOSX_DEPLOYMENT_TARGET. We've been successfully building packages that way for a decade or more.