]> granicus.if.org Git - python/commitdiff
[2.7] bpo-31934: Abort when building out of a not clean source tree (GH-4255). (...
authorxdegaye <xdegaye@gmail.com>
Wed, 8 Nov 2017 16:10:16 +0000 (17:10 +0100)
committerGitHub <noreply@github.com>
Wed, 8 Nov 2017 16:10:16 +0000 (17:10 +0100)
(cherry picked from commit 0de92859caf25e65fc968d4bb68626e9ba21b851)

Makefile.pre.in
Misc/NEWS.d/next/Build/2017-11-03-15-17-50.bpo-31934.8bUlpv.rst [new file with mode: 0644]

index 16afd9cebe4fa3ed148ed09f76c14bee8e0312b3..19e8f55b2abcb962cb22bc5dfcc0a7914776cebe 100644 (file)
@@ -401,7 +401,16 @@ LIBRARY_OBJS=      \
 
 # Default target
 all:           @DEF_MAKE_ALL_RULE@
-build_all:     $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks
+build_all:     check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks
+
+# Check that the source is clean when building out of source.
+check-clean-src:
+       @if test -n "$(VPATH)" -a -f "$(srcdir)/Modules/python.o"; then \
+               echo "Error: The source directory ($(srcdir)) is not clean" ; \
+               echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \
+               echo "Try to run: make -C \"$(srcdir)\" clean" ; \
+               exit 1; \
+       fi
 
 # Compile a binary with profile guided optimization.
 profile-opt:
@@ -928,7 +937,7 @@ altinstall: commoninstall
                        $$ensurepip --root=$(DESTDIR)/ ; \
        fi
 
-commoninstall: @FRAMEWORKALTINSTALLFIRST@ \
+commoninstall: check-clean-src @FRAMEWORKALTINSTALLFIRST@ \
                altbininstall libinstall inclinstall libainstall \
                sharedinstall oldsharedinstall altmaninstall \
                @FRAMEWORKALTINSTALLLAST@
@@ -1472,7 +1481,7 @@ patchcheck:
 Python/thread.o: @THREADHEADERS@
 
 # Declare targets that aren't real files
-.PHONY: all build_all sharedmods oldsharedmods test quicktest memtest
+.PHONY: all build_all sharedmods check-clean-src oldsharedmods test quicktest memtest
 .PHONY: install altinstall oldsharedinstall bininstall altbininstall
 .PHONY: maninstall libinstall inclinstall libainstall sharedinstall
 .PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure
diff --git a/Misc/NEWS.d/next/Build/2017-11-03-15-17-50.bpo-31934.8bUlpv.rst b/Misc/NEWS.d/next/Build/2017-11-03-15-17-50.bpo-31934.8bUlpv.rst
new file mode 100644 (file)
index 0000000..deaa740
--- /dev/null
@@ -0,0 +1 @@
+Abort the build when building out of a not clean source tree.