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

Commit229a5c8

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 parentbeceb87 commit229a5c8

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
FOP
@@ -17010,6 +17011,15 @@ _ACEOF
1701017011

1701117012

1701217013

17014+
# If we are inserting PG_SYSROOT into CPPFLAGS, do so symbolically not
17015+
# literally, so that it's possible to override it at build time using
17016+
# a command like "make ... PG_SYSROOT=path". This has to be done after
17017+
# we've finished all configure checks that depend on CPPFLAGS.
17018+
iftest x"$PG_SYSROOT"!= x;then
17019+
CPPFLAGS=`echo"$CPPFLAGS"| sed -e"s|$PG_SYSROOT |\\\$(PG_SYSROOT) |"`
17020+
fi
17021+
17022+
1701317023

1701417024
# Begin output steps
1701517025

‎configure.in

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2248,6 +2248,15 @@ $AWK '{printf "%d%04d", $1, $2}'`"]
22482248
AC_DEFINE_UNQUOTED(PG_VERSION_NUM, $PG_VERSION_NUM, [PostgreSQL version as a number])
22492249
AC_SUBST(PG_VERSION_NUM)
22502250

2251+
# If we are inserting PG_SYSROOT into CPPFLAGS, do so symbolically not
2252+
# literally, so that it's possible to override it at build time using
2253+
# a command like "make ... PG_SYSROOT=path". This has to be done after
2254+
# we've finished all configure checks that depend on CPPFLAGS.
2255+
if test x"$PG_SYSROOT" != x; then
2256+
CPPFLAGS=`echo "$CPPFLAGS" | sed -e "s| $PG_SYSROOT | \\\$(PG_SYSROOT) |"`
2257+
fi
2258+
AC_SUBST(PG_SYSROOT)
2259+
22512260

22522261
# Begin output steps
22532262

‎doc/src/sgml/installation.sgml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2623,6 +2623,57 @@ PHSS_30849 s700_800 u2comp/be/plugin library Patch
26232623
</para>
26242624
</sect2>
26252625

2626+
<sect2 id="installation-notes-macos">
2627+
<title>macOS</title>
2628+
2629+
<indexterm zone="installation-notes-macos">
2630+
<primary>macOS</primary>
2631+
<secondary>installation on</secondary>
2632+
</indexterm>
2633+
2634+
<para>
2635+
On recent <productname>macOS</productname> releases, it's necessary to
2636+
embed the <quote>sysroot</quote> path in the include switches used to
2637+
find some system header files. This results in the outputs of
2638+
the <application>configure</application> script varying depending on
2639+
which SDK version was used during <application>configure</application>.
2640+
That shouldn't pose any problem in simple scenarios, but if you are
2641+
trying to do something like building an extension on a different machine
2642+
than the server code was built on, you may need to force use of a
2643+
different sysroot path. To do that, set <varname>PG_SYSROOT</varname>,
2644+
for example
2645+
<programlisting>
2646+
make PG_SYSROOT=<replaceable>/desired/path</replaceable> all
2647+
</programlisting>
2648+
To find out the appropriate path on your machine, run
2649+
<programlisting>
2650+
xcodebuild -version -sdk macosx Path
2651+
</programlisting>
2652+
Note that building an extension using a different sysroot version than
2653+
was used to build the core server is not really recommended; in the
2654+
worst case it could result in hard-to-debug ABI inconsistencies.
2655+
</para>
2656+
2657+
<para>
2658+
You can also select a non-default sysroot path when configuring, by
2659+
specifying <varname>PG_SYSROOT</varname>
2660+
to <application>configure</application>:
2661+
<programlisting>
2662+
./configure ... PG_SYSROOT=<replaceable>/desired/path</replaceable>
2663+
</programlisting>
2664+
</para>
2665+
2666+
<para>
2667+
<productname>macOS</productname>'s <quote>System Integrity
2668+
Protection</quote> (SIP) feature breaks <literal>make check</literal>,
2669+
because it prevents passing the needed setting
2670+
of <literal>DYLD_LIBRARY_PATH</literal> down to the executables being
2671+
tested. You can work around that by doing <literal>make
2672+
install</literal> before <literal>make check</literal>.
2673+
Most Postgres developers just turn off SIP, though.
2674+
</para>
2675+
</sect2>
2676+
26262677
<sect2 id="installation-notes-mingw">
26272678
<title>MinGW/Native Windows</title>
26282679

‎src/Makefile.global.in

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

232232
CPP = @CPP@
233233
CPPFLAGS = @CPPFLAGS@
234+
PG_SYSROOT = @PG_SYSROOT@
234235

235236
overrideCPPFLAGS :=$(ICU_CFLAGS)$(CPPFLAGS)
236237

‎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