Re: macOS versioned sysroot

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: macOS versioned sysroot
Дата
Msg-id 1862592.1673882389@sss.pgh.pa.us
обсуждение исходный текст
Ответ на macOS versioned sysroot  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
Список pgsql-hackers
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes:
> src/tools/darwin_sysroot (previously in src/template/darwin) contains this:
> # [...] Using a version-specific sysroot seems
> # desirable, so if the path is a non-version-specific symlink, expand
> # it.

> This code has been whacked around quite a bit, so it's hard to find the
> origin of this.  But I'm going to submit a vote for "seems *not* desirable".

The reasoning for this is in the commit log for 4823621db:

    Also, "xcrun --show-sdk-path" may give a path that is valid but lacks
    any OS version identifier.  We don't really want that, since most
    of the motivation for wiring -isysroot into the build flags at all
    is to ensure that all parts of a PG installation are built against
    the same SDK, even when considering extensions built later and/or on
    a different machine.  Insist on finding "N.N" in the directory name
    before accepting the result.  (Adding "--sdk macosx" to the xcrun
    call seems to produce the same answer as xcodebuild, but usually
    more quickly because it's cached, so we also try that as a fallback.)

    The core reason why we don't want to use Xcode's default SDK in cases
    like this is that Apple's technology for introducing new syscalls
    does not play nice with Autoconf: for example, configure will think
    that preadv/pwritev exist when using a Big Sur SDK, even when building
    on an older macOS version where they don't exist.  It'd be nice to
    have a better solution to that problem, but this patch doesn't attempt
    to fix that.

    Discussion: https://postgr.es/m/ed3b8e5d-0da8-6ebd-fd1c-e0ac80a4b204@postgrespro.ru

Re-reading the linked discussion makes me quite loath to remove
the version dependency logic; we'd certainly just be reinventing
that wheel next time Apple adds a new syscall that we care about.

Perhaps it would be adequate if we could select MacOSX13.sdk instead
of MacOSX13.1.sdk given the available choices:

$ ll /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
total 0
drwxr-xr-x  7 root  wheel  224 Nov 12 16:18 MacOSX.sdk/
lrwxr-xr-x  1 root  wheel   10 Dec 14 10:51 MacOSX13.1.sdk@ -> MacOSX.sdk
lrwxr-xr-x  1 root  wheel   10 Dec 14 10:51 MacOSX13.sdk@ -> MacOSX.sdk

It does not seem that xcrun/xcodebuild will offer that, but we
could contemplate putting in some ad-hoc pathname munging to
strip any dot-digits part.

            regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: gkokolatos@pm.me
Дата:
Сообщение: Re: Add LZ4 compression in pg_dump
Следующее
От: Robert Haas
Дата:
Сообщение: Re: pgsql: Add new GUC createrole_self_grant.