bpo-19521: Fix parallel build race condition on AIX (GH-21997)
Patch by Michael Haubenwallner.
This commit is contained in:
parent
8784d3300e
commit
e6dcd371b2
|
@ -161,6 +161,10 @@ BLDSHARED= @BLDSHARED@ $(PY_CORE_LDFLAGS)
|
||||||
LDCXXSHARED= @LDCXXSHARED@
|
LDCXXSHARED= @LDCXXSHARED@
|
||||||
DESTSHARED= $(BINLIBDEST)/lib-dynload
|
DESTSHARED= $(BINLIBDEST)/lib-dynload
|
||||||
|
|
||||||
|
# List of exported symbols for AIX
|
||||||
|
EXPORTSYMS= @EXPORTSYMS@
|
||||||
|
EXPORTSFROM= @EXPORTSFROM@
|
||||||
|
|
||||||
# Executable suffix (.exe on Windows and Mac OS X)
|
# Executable suffix (.exe on Windows and Mac OS X)
|
||||||
EXE= @EXEEXT@
|
EXE= @EXEEXT@
|
||||||
BUILDEXE= @BUILDEXEEXT@
|
BUILDEXE= @BUILDEXEEXT@
|
||||||
|
@ -571,7 +575,7 @@ clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
|
||||||
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir)
|
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir)
|
||||||
|
|
||||||
# Build the interpreter
|
# Build the interpreter
|
||||||
$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
|
$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
|
||||||
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
|
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
|
||||||
|
|
||||||
platform: $(BUILDPYTHON) pybuilddir.txt
|
platform: $(BUILDPYTHON) pybuilddir.txt
|
||||||
|
@ -643,6 +647,10 @@ libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
|
||||||
libpython$(VERSION).sl: $(LIBRARY_OBJS)
|
libpython$(VERSION).sl: $(LIBRARY_OBJS)
|
||||||
$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM)
|
$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM)
|
||||||
|
|
||||||
|
# List of exported symbols for AIX
|
||||||
|
Modules/python.exp: $(LIBRARY)
|
||||||
|
$(srcdir)/Modules/makexp_aix $@ "$(EXPORTSFROM)" $?
|
||||||
|
|
||||||
# Copy up the gdb python hooks into a position where they can be automatically
|
# Copy up the gdb python hooks into a position where they can be automatically
|
||||||
# loaded by gdb during Lib/test/test_gdb.py
|
# loaded by gdb during Lib/test/test_gdb.py
|
||||||
#
|
#
|
||||||
|
@ -702,7 +710,7 @@ Makefile Modules/config.c: Makefile.pre \
|
||||||
@echo "The Makefile was updated, you may need to re-run make."
|
@echo "The Makefile was updated, you may need to re-run make."
|
||||||
|
|
||||||
|
|
||||||
Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
|
Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
|
||||||
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
|
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
|
@ -700,6 +700,8 @@ ARFLAGS
|
||||||
ac_ct_AR
|
ac_ct_AR
|
||||||
AR
|
AR
|
||||||
GNULD
|
GNULD
|
||||||
|
EXPORTSFROM
|
||||||
|
EXPORTSYMS
|
||||||
LINKCC
|
LINKCC
|
||||||
LDVERSION
|
LDVERSION
|
||||||
RUNSHARED
|
RUNSHARED
|
||||||
|
@ -5799,8 +5801,6 @@ LDVERSION="$VERSION"
|
||||||
# If CXX is set, and if it is needed to link a main function that was
|
# If CXX is set, and if it is needed to link a main function that was
|
||||||
# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
|
# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
|
||||||
# python might then depend on the C++ runtime
|
# python might then depend on the C++ runtime
|
||||||
# This is altered for AIX in order to build the export list before
|
|
||||||
# linking.
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LINKCC" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LINKCC" >&5
|
||||||
$as_echo_n "checking LINKCC... " >&6; }
|
$as_echo_n "checking LINKCC... " >&6; }
|
||||||
|
@ -5808,13 +5808,6 @@ if test -z "$LINKCC"
|
||||||
then
|
then
|
||||||
LINKCC='$(PURIFY) $(MAINCC)'
|
LINKCC='$(PURIFY) $(MAINCC)'
|
||||||
case $ac_sys_system in
|
case $ac_sys_system in
|
||||||
AIX*)
|
|
||||||
exp_extra="\"\""
|
|
||||||
if test $ac_sys_release -ge 5 -o \
|
|
||||||
$ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
|
|
||||||
exp_extra="."
|
|
||||||
fi
|
|
||||||
LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
|
|
||||||
QNX*)
|
QNX*)
|
||||||
# qcc must be used because the other compilers do not
|
# qcc must be used because the other compilers do not
|
||||||
# support -N.
|
# support -N.
|
||||||
|
@ -5824,6 +5817,26 @@ fi
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKCC" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKCC" >&5
|
||||||
$as_echo "$LINKCC" >&6; }
|
$as_echo "$LINKCC" >&6; }
|
||||||
|
|
||||||
|
# EXPORTSYMS holds the list of exported symbols for AIX.
|
||||||
|
# EXPORTSFROM holds the module name exporting symbols on AIX.
|
||||||
|
EXPORTSYMS=
|
||||||
|
EXPORTSFROM=
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking EXPORTSYMS" >&5
|
||||||
|
$as_echo_n "checking EXPORTSYMS... " >&6; }
|
||||||
|
case $ac_sys_system in
|
||||||
|
AIX*)
|
||||||
|
EXPORTSYMS="Modules/python.exp"
|
||||||
|
if test $ac_sys_release -ge 5 -o \
|
||||||
|
$ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
|
||||||
|
EXPORTSFROM=. # the main executable
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXPORTSYMS" >&5
|
||||||
|
$as_echo "$EXPORTSYMS" >&6; }
|
||||||
|
|
||||||
# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
|
# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
|
||||||
# make sure we default having it set to "no": this is used by
|
# make sure we default having it set to "no": this is used by
|
||||||
# distutils.unixccompiler to know if it should add --enable-new-dtags
|
# distutils.unixccompiler to know if it should add --enable-new-dtags
|
||||||
|
|
27
configure.ac
27
configure.ac
|
@ -1024,21 +1024,12 @@ LDVERSION="$VERSION"
|
||||||
# If CXX is set, and if it is needed to link a main function that was
|
# If CXX is set, and if it is needed to link a main function that was
|
||||||
# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
|
# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
|
||||||
# python might then depend on the C++ runtime
|
# python might then depend on the C++ runtime
|
||||||
# This is altered for AIX in order to build the export list before
|
|
||||||
# linking.
|
|
||||||
AC_SUBST(LINKCC)
|
AC_SUBST(LINKCC)
|
||||||
AC_MSG_CHECKING(LINKCC)
|
AC_MSG_CHECKING(LINKCC)
|
||||||
if test -z "$LINKCC"
|
if test -z "$LINKCC"
|
||||||
then
|
then
|
||||||
LINKCC='$(PURIFY) $(MAINCC)'
|
LINKCC='$(PURIFY) $(MAINCC)'
|
||||||
case $ac_sys_system in
|
case $ac_sys_system in
|
||||||
AIX*)
|
|
||||||
exp_extra="\"\""
|
|
||||||
if test $ac_sys_release -ge 5 -o \
|
|
||||||
$ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
|
|
||||||
exp_extra="."
|
|
||||||
fi
|
|
||||||
LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
|
|
||||||
QNX*)
|
QNX*)
|
||||||
# qcc must be used because the other compilers do not
|
# qcc must be used because the other compilers do not
|
||||||
# support -N.
|
# support -N.
|
||||||
|
@ -1047,6 +1038,24 @@ then
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT($LINKCC)
|
AC_MSG_RESULT($LINKCC)
|
||||||
|
|
||||||
|
# EXPORTSYMS holds the list of exported symbols for AIX.
|
||||||
|
# EXPORTSFROM holds the module name exporting symbols on AIX.
|
||||||
|
EXPORTSYMS=
|
||||||
|
EXPORTSFROM=
|
||||||
|
AC_SUBST(EXPORTSYMS)
|
||||||
|
AC_SUBST(EXPORTSFROM)
|
||||||
|
AC_MSG_CHECKING(EXPORTSYMS)
|
||||||
|
case $ac_sys_system in
|
||||||
|
AIX*)
|
||||||
|
EXPORTSYMS="Modules/python.exp"
|
||||||
|
if test $ac_sys_release -ge 5 -o \
|
||||||
|
$ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
|
||||||
|
EXPORTSFROM=. # the main executable
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AC_MSG_RESULT($EXPORTSYMS)
|
||||||
|
|
||||||
# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
|
# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
|
||||||
# make sure we default having it set to "no": this is used by
|
# make sure we default having it set to "no": this is used by
|
||||||
# distutils.unixccompiler to know if it should add --enable-new-dtags
|
# distutils.unixccompiler to know if it should add --enable-new-dtags
|
||||||
|
|
Loading…
Reference in New Issue