summaryrefslogtreecommitdiffstats
path: root/Makefile.pre.in
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2022-06-08 13:16:20 (GMT)
committerGitHub <noreply@github.com>2022-06-08 13:16:20 (GMT)
commit243ed5439c32e8517aa745bc2ca9774d99c99d0f (patch)
tree8cb1a913a9ed074e107289b349cd52ed4caf3d26 /Makefile.pre.in
parent875de61c296604f3a3a51e9d76355e0f1a24c6af (diff)
downloadcpython-243ed5439c32e8517aa745bc2ca9774d99c99d0f.zip
cpython-243ed5439c32e8517aa745bc2ca9774d99c99d0f.tar.gz
cpython-243ed5439c32e8517aa745bc2ca9774d99c99d0f.tar.bz2
gh-93584: Make all install+tests targets depends on all (GH-93589)
All install targets use the "all" target as synchronization point to prevent race conditions with PGO builds. PGO builds use recursive make, which can lead to two parallel `./python setup.py build` processes that step on each others toes. "test" targets now correctly compile PGO build in a clean repo.
Diffstat (limited to 'Makefile.pre.in')
-rw-r--r--Makefile.pre.in28
1 files changed, 16 insertions, 12 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in
index a178dd0..f3c70b9 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -580,8 +580,8 @@ LIBEXPAT_HEADERS= \
# Default target
all: @DEF_MAKE_ALL_RULE@
-build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks \
- Programs/_testembed python-config
+build_all: check-clean-src $(BUILDPYTHON) platform oldsharedmods sharedmods \
+ gdbhooks Programs/_testembed python-config
build_wasm: check-clean-src $(BUILDPYTHON) platform oldsharedmods python-config
# Check that the source is clean when building out of source.
@@ -1663,7 +1663,7 @@ cleantest: all
# Run a basic set of regression tests.
# This excludes some tests that are particularly resource-intensive.
-test: @DEF_MAKE_RULE@ platform
+test: all
$(TESTRUNNER) $(TESTOPTS)
# Run the full test suite twice - once without .pyc files, and once with.
@@ -1673,7 +1673,7 @@ test: @DEF_MAKE_RULE@ platform
# the bytecode read from a .pyc file had the bug, sometimes the directly
# generated bytecode. This is sometimes a very shy bug needing a lot of
# sample data.
-testall: @DEF_MAKE_RULE@ platform
+testall: all
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
$(TESTPYTHON) -E $(srcdir)/Lib/compileall.py
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
@@ -1682,7 +1682,7 @@ testall: @DEF_MAKE_RULE@ platform
# Run the test suite for both architectures in a Universal build on OSX.
# Must be run on an Intel box.
-testuniversal: @DEF_MAKE_RULE@ platform
+testuniversal: all
@if [ `arch` != 'i386' ]; then \
echo "This can only be used on OSX/i386" ;\
exit 1 ;\
@@ -1693,7 +1693,7 @@ testuniversal: @DEF_MAKE_RULE@ platform
# Like testall, but with only one pass and without multiple processes.
# Run an optional script to include information about the build environment.
-buildbottest: all platform
+buildbottest: all
-@if which pybuildbot.identify >/dev/null 2>&1; then \
pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \
fi
@@ -1708,7 +1708,7 @@ QUICKTESTOPTS= $(TESTOPTS) -x test_subprocess test_io test_lib2to3 \
test_multiprocessing_forkserver \
test_mailbox test_nntplib test_socket test_poll \
test_select test_zipfile test_concurrent_futures
-quicktest: @DEF_MAKE_RULE@ platform
+quicktest: all
$(TESTRUNNER) $(QUICKTESTOPTS)
# SSL tests
@@ -1719,6 +1719,10 @@ multisslcompile: all
multissltest: all
$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py
+# All install targets use the "all" target as synchronization point to
+# prevent race conditions with PGO builds. PGO builds use recursive make,
+# which can lead to two parallel `./python setup.py build` processes that
+# step on each others toes.
install: @FRAMEWORKINSTALLFIRST@ commoninstall bininstall maninstall @FRAMEWORKINSTALLLAST@
if test "x$(ENSUREPIP)" != "xno" ; then \
case $(ENSUREPIP) in \
@@ -1747,7 +1751,7 @@ commoninstall: check-clean-src @FRAMEWORKALTINSTALLFIRST@ \
# Install shared libraries enabled by Setup
DESTDIRS= $(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
-oldsharedinstall: $(DESTSHARED) $(SHAREDMODS)
+oldsharedinstall: $(DESTSHARED) all
@for i in X $(SHAREDMODS); do \
if test $$i != X; then \
echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
@@ -2153,7 +2157,7 @@ LIBPL= @LIBPL@
# pkgconfig directory
LIBPC= $(LIBDIR)/pkgconfig
-libainstall: @DEF_MAKE_RULE@ python-config
+libainstall: all python-config
@for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
do \
if test ! -d $(DESTDIR)$$i; then \
@@ -2207,7 +2211,7 @@ libainstall: @DEF_MAKE_RULE@ python-config
# Install the dynamically loadable modules
# This goes into $(exec_prefix)
-sharedinstall: sharedmods
+sharedinstall: all
$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
--prefix=$(prefix) \
--install-scripts=$(BINDIR) \
@@ -2437,7 +2441,7 @@ distclean: clobber
-exec rm -f {} ';'
# Check that all symbols exported by libpython start with "Py" or "_Py"
-smelly: @DEF_MAKE_RULE@
+smelly: all
$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/smelly.py
# Find files with funny names
@@ -2472,7 +2476,7 @@ funny:
-o -print
# Perform some verification checks on any modified files.
-patchcheck: @DEF_MAKE_RULE@
+patchcheck: all
$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
check-limited-abi: all