Bug 1557785 - Process install manifests in 3-tier Windows builds; r=firefox-build-system-reviewers,chmanchester
authorMike Shal <mshal@mozilla.com>
Wed, 19 Jun 2019 22:06:14 +0000
changeset 480097 91b34c90d2a9e87ab5cd796768ba7274739e7960
parent 480096 861e83cc1b9bc119f70c7a714eb8c9b4d0e3b34c
child 480098 a91cc939f11246643f966e61a7bfa58d8a11a237
push id36201
push usercsabou@mozilla.com
push dateWed, 26 Jun 2019 03:57:29 +0000
treeherdermozilla-central@a3cad1d7836c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfirefox-build-system-reviewers, chmanchester
bugs1557785, 1557788
milestone69.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1557785 - Process install manifests in 3-tier Windows builds; r=firefox-build-system-reviewers,chmanchester Windows 1-tier PGO builds only partially clobber between the profile-generate and profile-use stages, so that exports/installed files don't have to be reprocessed. Unfortunately we can't skip the install manifests in 3-tier PGO because the profile-generate build happens on a different machine, so we have to differentiate between 1-tier and 3-tier PGO builds. A new variable, MOZ_1TIER_PGO, is used for this purpose. Eventually this logic can be cleaned up in bug 1557788 once all PGO builds use the 3-tier model. Differential Revision: https://phabricator.services.mozilla.com/D34802
Makefile.in
config/rules.mk
--- a/Makefile.in
+++ b/Makefile.in
@@ -124,25 +124,25 @@ endif
 # Dummy rule for the cases below where we don't depend on dist/include
 recurse_pre-export::
 
 # Windows PGO builds don't perform a clean before the 2nd pass. So, we want
 # to preserve content for the 2nd pass on Windows. Everywhere else, we always
 # process the install manifests as part of export.
 # For the binaries rule, not all the install manifests matter, so force only
 # the interesting ones to be done.
-ifdef MOZ_PROFILE_USE
+ifdef MOZ_1TIER_PGO
 ifndef NO_PROFILE_GUIDED_OPTIMIZE
 ifneq ($(OS_ARCH)_$(GNU_CC), WINNT_)
 recurse_pre-export:: install-manifests
 binaries::
 	@$(MAKE) install-manifests install_manifests=dist/include
 endif
 endif
-else # !MOZ_PROFILE_USE (normal build)
+else # !MOZ_1TIER_PGO (normal build)
 recurse_pre-export:: install-manifests
 binaries::
 	@$(MAKE) install-manifests install_manifests=dist/include
 endif
 
 # Host binaries are not produced for macOS consumers: that is, there's
 # no macOS-hosted job to produce them at this time.  Therefore we
 # enable --host-bins only for automation builds, which only require Linux and
@@ -184,17 +184,17 @@ profiledbuild::
 	$(call BUILDSTATUS,TIER_FINISH pgo_package)
 	$(call BUILDSTATUS,TIER_START pgo_profile)
 	JARLOG_FILE=jarlog/en-US.log $(PYTHON) $(topsrcdir)/build/pgo/profileserver.py
 	$(call BUILDSTATUS,TIER_FINISH pgo_profile)
 	$(call BUILDSTATUS,TIER_START pgo_clobber)
 	$(MAKE) maybe_clobber_profiledbuild
 	$(call BUILDSTATUS,TIER_FINISH pgo_clobber)
 	$(call BUILDSTATUS,TIER_START pgo_profile_use)
-	$(MAKE) default MOZ_PROFILE_USE=1
+	$(MAKE) default MOZ_PROFILE_USE=1 MOZ_1TIER_PGO=1
 	$(call BUILDSTATUS,TIER_FINISH pgo_profile_use)
 
 # Change default target to PGO build if PGO is enabled.
 ifdef MOZ_PGO
 ifdef COMPILE_ENVIRONMENT
 # If one of these is already set in addition to PGO we are doing a single phase
 # of PGO in isolation, so don't override the default target.
 ifeq (,$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE))
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -433,17 +433,17 @@ endif
 
 syms::
 
 include $(MOZILLA_DIR)/config/makefiles/target_binaries.mk
 endif
 
 ##############################################
 ifneq (1,$(NO_PROFILE_GUIDED_OPTIMIZE))
-ifdef MOZ_PROFILE_USE
+ifdef MOZ_1TIER_PGO
 ifeq ($(OS_ARCH)_$(GNU_CC), WINNT_)
 # When building with PGO, we have to make sure to re-link
 # in the MOZ_PROFILE_USE phase if we linked in the
 # MOZ_PROFILE_GENERATE phase. We'll touch this pgo.relink
 # file in the link rule in the GENERATE phase to indicate
 # that we need a relink.
 ifdef SHARED_LIBRARY
 $(SHARED_LIBRARY): pgo.relink