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 | CADvTj4pucOvo6aWinatLgARs3mjPFSiAXZr2ErSG4ASJsKNxBw@mail.gmail.com Whole thread Raw |
In response to | Re: [PATCH 1/1] Fix detection of pwritev support for OSX. (James Hilliard <james.hilliard1@gmail.com>) |
Responses |
Re: [PATCH 1/1] Fix detection of pwritev support for OSX.
|
List | pgsql-hackers |
On Tue, Jan 19, 2021 at 3:47 PM James Hilliard <james.hilliard1@gmail.com> wrote: > > 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. Actually, this looks path looks wrong in general, the value for "xcrun --sdk macosx --show-sdk-path" should take precedence over "xcrun --show-sdk-path" as the latter may be used for IOS potentially. On my system "xcodebuild -version -sdk macosx Path" and "xcrun --sdk macosx --show-sdk-path" both point to the correct latest MacOSX11.1.sdk SDK while "xcrun --show-sdk-path" points to the older one. > > > > regards, tom lane > >
pgsql-hackers by date: