[Python-checkins] bpo-37725: have "make clean" remove PGO task data (#15033)

Dino Viehland webhook-mailer at python.org
Tue Sep 10 05:44:24 EDT 2019


https://github.com/python/cpython/commit/c6bbcd258302b4b9b3d4f3c39bb5f7ff0120ec67
commit: c6bbcd258302b4b9b3d4f3c39bb5f7ff0120ec67
branch: master
author: Neil Schemenauer <nas-github at arctrix.com>
committer: Dino Viehland <dinoviehland at gmail.com>
date: 2019-09-10T10:44:20+01:00
summary:

bpo-37725: have "make clean" remove PGO task data (#15033)

Change "clean" makefile target to also clean the program guided
optimization (PGO) data.  Previously you would have to use "make
clean" and "make profile-removal", or "make clobber".

files:
A Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst
M Makefile.pre.in

diff --git a/Makefile.pre.in b/Makefile.pre.in
index dbf95fdcd181..4f4f096e7283 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -461,7 +461,7 @@ check-clean-src:
 
 # Profile generation build must start from a clean tree.
 profile-clean-stamp:
-	$(MAKE) clean profile-removal
+	$(MAKE) clean
 	touch $@
 
 # Compile with profile generation enabled.
@@ -485,7 +485,7 @@ profile-run-stamp:
 	$(MAKE) run_profile_task
 	$(MAKE) build_all_merge_profile
 	# Remove profile generation binary since we are done with it.
-	$(MAKE) clean
+	$(MAKE) clean-retain-profile
 	# This is an expensive target to build and it does not have proper
 	# makefile dependency information.  So, we create a "stamp" file
 	# to record its completion and avoid re-running it.
@@ -512,7 +512,7 @@ profile-opt: profile-run-stamp
 .PHONY=coverage coverage-lcov coverage-report
 coverage:
 	@echo "Building with support for coverage checking:"
-	$(MAKE) clean profile-removal
+	$(MAKE) clean
 	$(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
 
 coverage-lcov:
@@ -1752,7 +1752,9 @@ docclean:
 	-rm -rf Doc/build
 	-rm -rf Doc/tools/sphinx Doc/tools/pygments Doc/tools/docutils
 
-clean: pycremoval
+# like the 'clean' target but retain the profile guided optimization (PGO)
+# data.  The PGO data is only valid if source code remains unchanged.
+clean-retain-profile: pycremoval
 	find . -name '*.[oa]' -exec rm -f {} ';'
 	find . -name '*.s[ol]' -exec rm -f {} ';'
 	find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
@@ -1774,14 +1776,19 @@ profile-removal:
 	rm -rf $(COVERAGE_REPORT)
 	rm -f profile-run-stamp
 
-clobber: clean profile-removal
+clean: clean-retain-profile
+	@if test @DEF_MAKE_ALL_RULE@ = profile-opt; then \
+		rm -f profile-gen-stamp profile-clean-stamp; \
+		$(MAKE) profile-removal; \
+	fi
+
+clobber: clean
 	-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
 		tags TAGS \
 		config.cache config.log pyconfig.h Modules/config.c
 	-rm -rf build platform
 	-rm -rf $(PYTHONFRAMEWORKDIR)
 	-rm -f python-config.py python-config
-	-rm -f profile-gen-stamp profile-clean-stamp
 
 # Make things extra clean, before making a distribution:
 # remove all generated files, even Makefile[.pre]
@@ -1855,6 +1862,8 @@ Python/thread.o: @THREADHEADERS@ $(srcdir)/Python/condvar.h
 .PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
 .PHONY: frameworkaltinstallunixtools recheck clean clobber distclean
 .PHONY: smelly funny patchcheck touch altmaninstall commoninstall
+.PHONY: clean-retain-profile profile-removal run_profile_task
+.PHONY: build_all_generate_profile build_all_merge_profile
 .PHONY: gdbhooks
 
 # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst b/Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst
new file mode 100644
index 000000000000..1687cf223c41
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst
@@ -0,0 +1,3 @@
+Change "clean" makefile target to also clean the program guided optimization
+(PGO) data.  Previously you would have to use "make clean" and "make
+profile-removal", or "make clobber".



More information about the Python-checkins mailing list