Re: [PATCH 1/1] Fix detection of pwritev support for OSX. - Mailing list pgsql-hackers
From | James Hilliard |
---|---|
Subject | Re: [PATCH 1/1] Fix detection of pwritev support for OSX. |
Date | |
Msg-id | CADvTj4qNyMM5vHo+uZ6Xfq5n5g++X_bUTX1-g3zmNXYDWAo8sQ@mail.gmail.com Whole thread Raw |
In response to | Re: [PATCH 1/1] Fix detection of pwritev support for OSX. (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: [PATCH 1/1] Fix detection of pwritev support for OSX.
(James Hilliard <james.hilliard1@gmail.com>)
|
List | pgsql-hackers |
On Tue, Jan 19, 2021 at 1:54 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > James Hilliard <james.hilliard1@gmail.com> writes: > > On Tue, Jan 19, 2021 at 10:17 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > >> Ah, got it. So "xcrun --show-sdk-path" tells us the right thing (that > >> is, it *does* give us a symlink to a 10.15 SDK) but by refusing to > >> believe we've got the right thing, we end up picking MacOSX11.1.sdk. > >> Drat. I suppose we could drop the heuristic about wanting a version > >> number in the SDK path, but I really don't want to do that. Now I'm > >> thinking about trying to dereference the symlink after the first step. > > > The MacOSX11.1.sdk can build for a 10.15 target just fine when passed > > an appropriate MACOSX_DEPLOYMENT_TARGET, so that SDK should be > > fine. > > But our out-of-the-box default should be to build for the current > platform; we don't want users to have to set MACOSX_DEPLOYMENT_TARGET > for that case. Besides, the problem we're having is exactly that Apple's > definition of "builds for a 10.15 target just fine" is different from > ours. They think you should use a run-time test not a compile-time test > to discover whether preadv is available, and we don't want to do that. The default for MACOSX_DEPLOYMENT_TARGET is always the current running OS version from my understanding. So if I build with MacOSX11.1.sdk on 10.15 with default settings the binaries will work fine because the MACOSX_DEPLOYMENT_TARGET gets set to 10.15 automatically even if the same SDK is capable of producing incompatible binaries if you set MACOSX_DEPLOYMENT_TARGET to 11.0. > > In almost all of the cases I've seen so far, Apple's compiler actually > does default to using an SDK matching the platform. The problem we > have is that we try to name the SDK explicitly, and the current > method is failing to pick the right one in your case. There are > several reasons for using an explicit -isysroot rather than just > letting the compiler default: No, it's only the MACOSX_DEPLOYMENT_TARGET that matches the platform, SDK can be arbitrary more or less, but it will work fine because the autoselected MACOSX_DEPLOYMENT_TARGET will force compatibility no matter what SDK version you use. This is always how it has worked from what I've seen. > > * We have seen cases in which the compiler acts as though it has > *no* default sysroot, and we have to help it out. > > * The explicit root reduces version-skew build hazards for extensions > that are not built at the same time as the core system. The deployment target is effectively entirely separate from SDK version, so it really shouldn't make a difference unless the SDK is significantly older or newer than the running version from what I can tell. > > * There are a few tests in configure itself that need to know the > sysroot path to check for files there. > > Anyway, the behavior you're seeing shows that 4823621db is still a > bit shy of a load. I'm thinking about the attached as a further > fix --- can you verify it helps for you? Best I can tell it provides no change for me(this patch is tested on top of it) because it does not provide any MACOSX_DEPLOYMENT_TARGET based feature detection for pwritev at all. > > regards, tom lane >
pgsql-hackers by date: