Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit401202b

Browse files
committed
Yet further rethinking of build changes for macOS Mojave.
The solution arrived at in commite74dd00 presumes that the compilerhas a suitable default -isysroot setting ... but further experienceshows that in many combinations of macOS version, XCode version, Xcodecommand line tools version, and phase of the moon, Apple's compilerwill *not* supply a default -isysroot value.We could potentially go back to the approach used in commit68fc227,but I don't have a lot of faith in the reliability or life expectancy ofthat either. Let's just revert to the approach already shipped in 11.0,namely specifying an -isysroot switch globally. As a partial response tothe concerns raised by Jakob Egger, adjust the contents of Makefile.globalto look likeCPPFLAGS = -isysroot $(PG_SYSROOT) ...PG_SYSROOT = /path/to/sysrootThis allows overriding the sysroot path at build time in a relativelypainless way.Add documentation to installation.sgml about how to use the PG_SYSROOToption. I also took the opportunity to document how to work aroundmacOS's "System Integrity Protection" feature.As before, back-patch to all supported versions.Discussion:https://postgr.es/m/20840.1537850987@sss.pgh.pa.us
1 parentf35187b commit401202b

File tree

5 files changed

+75
-3
lines changed

5 files changed

+75
-3
lines changed

‎configure

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ ac_includes_default="\
627627

628628
ac_subst_vars='LTLIBOBJS
629629
vpath_build
630+
PG_SYSROOT
630631
PG_VERSION_NUM
631632
PROVE
632633
OSX
@@ -16153,6 +16154,15 @@ _ACEOF
1615316154

1615416155

1615516156

16157+
# If we are inserting PG_SYSROOT into CPPFLAGS, do so symbolically not
16158+
# literally, so that it's possible to override it at build time using
16159+
# a command like "make ... PG_SYSROOT=path". This has to be done after
16160+
# we've finished all configure checks that depend on CPPFLAGS.
16161+
iftest x"$PG_SYSROOT"!= x;then
16162+
CPPFLAGS=`echo"$CPPFLAGS"| sed -e"s|$PG_SYSROOT |\\\$(PG_SYSROOT) |"`
16163+
fi
16164+
16165+
1615616166

1615716167
# Begin output steps
1615816168

‎configure.in

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2202,6 +2202,15 @@ $AWK '{printf "%d%02d%02d", $1, $2, (NF >= 3) ? $3 : 0}'`"]
22022202
AC_DEFINE_UNQUOTED(PG_VERSION_NUM, $PG_VERSION_NUM, [PostgreSQL version as a number])
22032203
AC_SUBST(PG_VERSION_NUM)
22042204

2205+
# If we are inserting PG_SYSROOT into CPPFLAGS, do so symbolically not
2206+
# literally, so that it's possible to override it at build time using
2207+
# a command like "make ... PG_SYSROOT=path". This has to be done after
2208+
# we've finished all configure checks that depend on CPPFLAGS.
2209+
if test x"$PG_SYSROOT" != x; then
2210+
CPPFLAGS=`echo "$CPPFLAGS" | sed -e "s| $PG_SYSROOT | \\\$(PG_SYSROOT) |"`
2211+
fi
2212+
AC_SUBST(PG_SYSROOT)
2213+
22052214

22062215
# Begin output steps
22072216

‎doc/src/sgml/installation.sgml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2596,6 +2596,57 @@ PHSS_30849 s700_800 u2comp/be/plugin library Patch
25962596
</para>
25972597
</sect2>
25982598

2599+
<sect2 id="installation-notes-macos">
2600+
<title>macOS</title>
2601+
2602+
<indexterm zone="installation-notes-macos">
2603+
<primary>macOS</primary>
2604+
<secondary>installation on</secondary>
2605+
</indexterm>
2606+
2607+
<para>
2608+
On recent <productname>macOS</productname> releases, it's necessary to
2609+
embed the <quote>sysroot</quote> path in the include switches used to
2610+
find some system header files. This results in the outputs of
2611+
the <application>configure</application> script varying depending on
2612+
which SDK version was used during <application>configure</application>.
2613+
That shouldn't pose any problem in simple scenarios, but if you are
2614+
trying to do something like building an extension on a different machine
2615+
than the server code was built on, you may need to force use of a
2616+
different sysroot path. To do that, set <varname>PG_SYSROOT</varname>,
2617+
for example
2618+
<programlisting>
2619+
make PG_SYSROOT=<replaceable>/desired/path</replaceable> all
2620+
</programlisting>
2621+
To find out the appropriate path on your machine, run
2622+
<programlisting>
2623+
xcodebuild -version -sdk macosx Path
2624+
</programlisting>
2625+
Note that building an extension using a different sysroot version than
2626+
was used to build the core server is not really recommended; in the
2627+
worst case it could result in hard-to-debug ABI inconsistencies.
2628+
</para>
2629+
2630+
<para>
2631+
You can also select a non-default sysroot path when configuring, by
2632+
specifying <varname>PG_SYSROOT</varname>
2633+
to <application>configure</application>:
2634+
<programlisting>
2635+
./configure ... PG_SYSROOT=<replaceable>/desired/path</replaceable>
2636+
</programlisting>
2637+
</para>
2638+
2639+
<para>
2640+
<productname>macOS</productname>'s <quote>System Integrity
2641+
Protection</quote> (SIP) feature breaks <literal>make check</literal>,
2642+
because it prevents passing the needed setting
2643+
of <literal>DYLD_LIBRARY_PATH</literal> down to the executables being
2644+
tested. You can work around that by doing <literal>make
2645+
install</literal> before <literal>make check</literal>.
2646+
Most Postgres developers just turn off SIP, though.
2647+
</para>
2648+
</sect2>
2649+
25992650
<sect2 id="installation-notes-mingw">
26002651
<title>MinGW/Native Windows</title>
26012652

‎src/Makefile.global.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ PTHREAD_LIBS= @PTHREAD_LIBS@
226226

227227
CPP = @CPP@
228228
CPPFLAGS = @CPPFLAGS@
229+
PG_SYSROOT = @PG_SYSROOT@
229230

230231
ifdefPGXS
231232
overrideCPPFLAGS := -I$(includedir_server) -I$(includedir_internal)$(CPPFLAGS)

‎src/template/darwin

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
# Note: Darwin is the original code name for macOS, also known as OS X.
44
# We still use "darwin" as the port name, partly because config.guess does.
55

6-
# Some configure tests require explicit knowledge of where the Xcode "sysroot"
7-
# is. We try to avoid having this leak into configure's results, though.
6+
# Select where system include files should be sought.
87
if test x"$PG_SYSROOT" = x"" ; then
98
PG_SYSROOT=`xcodebuild -version -sdk macosx Path 2>/dev/null`
109
fi
1110
# Old xcodebuild versions may produce garbage, so validate the result.
1211
if test x"$PG_SYSROOT" != x"" ; then
13-
if test \! -d "$PG_SYSROOT" ; then
12+
if test -d "$PG_SYSROOT" ; then
13+
CPPFLAGS="-isysroot $PG_SYSROOT $CPPFLAGS"
14+
else
1415
PG_SYSROOT=""
1516
fi
1617
fi

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp