gecko-dev/build/moz-automation.mk
Mike Hommey 8b46fa4da5 Bug 1893677 - Stop making some automation tiers print their own BUILDSTATUS. r=firefox-build-system-reviewers,ahochheiden
Some automation tiers ultimately end up calling normal tiers, which
will print their own BUILDSTATUS already. This kind of didn't cause
problems before bug 1859011 presumably because of buffering of the
automation tier output, but is now causing problems because the tier
monitor doesn't want to see a tier start multiple times.

Also, now that bug 1859011 made automation tiers buffered by command
rather than by target, we don't need the hack with automation-start,
simplifying the setup.

Differential Revision: https://phabricator.services.mozilla.com/D209095
2024-05-01 03:50:06 +00:00

105 lines
3.7 KiB
Makefile

#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
ifndef ENABLE_TESTS
# We can't package tests if they aren't enabled.
MOZ_AUTOMATION_PACKAGE_TESTS = 0
endif
ifdef CROSS_COMPILE
# Narrow the definition of cross compilation to not include win32 builds
# on win64 and linux32 builds on linux64.
ifeq ($(HOST_OS_ARCH),$(OS_TARGET))
ifneq (,$(filter x86%,$(TARGET_CPU)))
FUZZY_CROSS_COMPILE =
else
FUZZY_CROSS_COMPILE = 1
endif
else
FUZZY_CROSS_COMPILE = 1
endif
endif
# Don't run make check when cross compiling, when doing artifact builds
# or when building instrumented builds for PGO.
ifneq (,$(USE_ARTIFACT)$(FUZZY_CROSS_COMPILE)$(MOZ_PROFILE_GENERATE))
MOZ_AUTOMATION_CHECK := 0
endif
ifneq (,$(filter automation/%,$(MAKECMDGOALS)))
ifneq (4.0,$(firstword $(sort 4.0 $(MAKE_VERSION))))
.NOTPARALLEL:
endif
endif
ifndef JS_STANDALONE
include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
include $(topsrcdir)/toolkit/mozapps/installer/upload-files.mk
# Clear out DIST_FILES if it was set by upload-files.mk (for Android builds)
DIST_FILES =
endif
# Helper variables to convert from MOZ_AUTOMATION_* variables to the
# corresponding the make target
tier_MOZ_AUTOMATION_BUILD_SYMBOLS = buildsymbols
tier_MOZ_AUTOMATION_PACKAGE = package
tier_MOZ_AUTOMATION_PACKAGE_TESTS = package-tests
tier_MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES = package-generated-sources
tier_MOZ_AUTOMATION_UPLOAD_SYMBOLS = uploadsymbols
tier_MOZ_AUTOMATION_UPLOAD = upload
tier_MOZ_AUTOMATION_CHECK = check
# Automation build steps. Everything in MOZ_AUTOMATION_TIERS also gets used in
# TIERS for mach display. As such, the MOZ_AUTOMATION_TIERS are roughly sorted
# here in the order that they will be executed (since mach doesn't know of the
# dependencies between them).
moz_automation_symbols = \
MOZ_AUTOMATION_PACKAGE_TESTS \
MOZ_AUTOMATION_UPLOAD \
$(NULL)
ifneq (,$(COMPILE_ENVIRONMENT)$(MOZ_ARTIFACT_BUILDS))
moz_automation_symbols += \
MOZ_AUTOMATION_BUILD_SYMBOLS \
MOZ_AUTOMATION_UPLOAD_SYMBOLS \
MOZ_AUTOMATION_PACKAGE \
MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES \
MOZ_AUTOMATION_CHECK \
$(NULL)
endif
MOZ_AUTOMATION_TIERS := $(foreach sym,$(moz_automation_symbols),$(if $(filter 1,$($(sym))),$(tier_$(sym))))
# Dependencies between automation build steps
automation/uploadsymbols: automation/buildsymbols
automation/upload: automation/package
automation/upload: automation/package-tests
automation/upload: automation/buildsymbols
automation/upload: automation/package-generated-sources
# Run the check tier after everything else.
automation/check: $(addprefix automation/,$(filter-out check,$(MOZ_AUTOMATION_TIERS)))
automation/build: $(addprefix automation/,$(MOZ_AUTOMATION_TIERS))
@echo Automation steps completed.
# Run as many tests as possible, even in case of one of them failing.
AUTOMATION_EXTRA_CMDLINE-check = --keep-going
# The commands only run if the corresponding MOZ_AUTOMATION_* variable is
# enabled. This means, for example, if we enable MOZ_AUTOMATION_UPLOAD, then
# 'buildsymbols' will only run if MOZ_AUTOMATION_BUILD_SYMBOLS is also set.
# However, the target automation/buildsymbols will still be executed in this
# case because it is a prerequisite of automation/upload.
define automation_commands
@+$(PYTHON3) $(topsrcdir)/config/run-and-prefix.py $1 $(MAKE) $1 $(AUTOMATION_EXTRA_CMDLINE-$1)
endef
automation/%:
$(if $(filter $*,$(filter-out $(ALL_TIERS),$(MOZ_AUTOMATION_TIERS))),$(call BUILDSTATUS,TIER_START $*))
$(if $(filter $*,$(MOZ_AUTOMATION_TIERS)),$(call automation_commands,$*))
$(if $(filter $*,$(filter-out $(ALL_TIERS),$(MOZ_AUTOMATION_TIERS))),$(call BUILDSTATUS,TIER_FINISH $*))