2 # This Source Code Form is subject to the terms of the Mozilla Public
3 # License, v. 2.0. If a copy of the MPL was not distributed with this
4 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 ifneq (,$(filter automation
/%,$(MAKECMDGOALS
)))
7 ifeq (4.0,$(firstword $(sort 4.0 $(MAKE_VERSION
))))
8 MAKEFLAGS
+= --output-sync
=target
14 include $(topsrcdir
)/toolkit
/mozapps
/installer
/package-name.mk
16 # Log file from the 'make upload' step. We need this to parse out the URLs of
18 AUTOMATION_UPLOAD_OUTPUT
= $(DIST
)/automation-upload.txt
20 # Helper variables to convert from MOZ_AUTOMATION_* variables to the
21 # corresponding the make target
22 tier_BUILD_SYMBOLS
= buildsymbols
23 tier_L10N_CHECK
= l10n-check
24 tier_PRETTY_L10N_CHECK
= pretty-l10n-check
25 tier_INSTALLER
= installer
26 tier_PRETTY_INSTALLER
= pretty-installer
27 tier_PACKAGE
= package
28 tier_PRETTY_PACKAGE
= pretty-package
29 tier_PACKAGE_TESTS
= package-tests
30 tier_PRETTY_PACKAGE_TESTS
= pretty-package-tests
31 tier_UPDATE_PACKAGING
= update-packaging
32 tier_PRETTY_UPDATE_PACKAGING
= pretty-update-packaging
33 tier_UPLOAD_SYMBOLS
= uploadsymbols
36 # Automation build steps. Everything in MOZ_AUTOMATION_TIERS also gets used in
37 # TIERS for mach display. As such, the MOZ_AUTOMATION_TIERS are roughly sorted
38 # here in the order that they will be executed (since mach doesn't know of the
39 # dependencies between them).
40 moz_automation_symbols
= \
42 PRETTY_PACKAGE_TESTS \
50 PRETTY_UPDATE_PACKAGING \
55 MOZ_AUTOMATION_TIERS
:= $(foreach sym
,$(moz_automation_symbols
),$(if
$(filter 1,$(MOZ_AUTOMATION_
$(sym
))),$(tier_
$(sym
))))
57 # Dependencies between automation build steps
58 automation
/uploadsymbols
: automation
/buildsymbols
60 automation
/update-packaging
: automation
/package
61 automation
/pretty-update-packaging
: automation
/pretty-package
62 automation
/pretty-update-packaging
: automation
/pretty-installer
64 automation
/l10n-check
: automation
/package
65 automation
/l10n-check
: automation
/installer
66 automation
/pretty-l10n-check
: automation
/pretty-package
67 automation
/pretty-l10n-check
: automation
/pretty-installer
69 automation
/upload
: automation
/installer
70 automation
/upload
: automation
/package
71 automation
/upload
: automation
/package-tests
72 automation
/upload
: automation
/buildsymbols
73 automation
/upload
: automation
/update-packaging
75 # automation/{pretty-}package should depend on build (which is implicit due to
76 # the way client.mk invokes automation/build), but buildsymbols changes the
77 # binaries/libs, and that's what we package/test.
78 automation
/pretty-package
: automation
/buildsymbols
80 # The 'pretty' versions of targets run before the regular ones to avoid
81 # conflicts in writing to the same files.
82 automation
/installer
: automation
/pretty-installer
83 automation
/package
: automation
/pretty-package
84 automation
/package-tests
: automation
/pretty-package-tests
85 automation
/l10n-check
: automation
/pretty-l10n-check
86 automation
/update-packaging
: automation
/pretty-update-packaging
88 automation
/build
: $(addprefix automation
/,$(MOZ_AUTOMATION_TIERS
))
89 $(PYTHON
) $(topsrcdir
)/build
/gen_mach_buildprops.py
--complete-mar-file
$(DIST
)/$(COMPLETE_MAR
) $(addprefix --partial-mar-file
,$(wildcard $(DIST
)/$(PARTIAL_MAR
))) --upload-output
$(AUTOMATION_UPLOAD_OUTPUT
)
91 # We need the log from make upload to grep it for urls in order to set
93 AUTOMATION_EXTRA_CMDLINE-upload
= 2>&1 | tee
$(AUTOMATION_UPLOAD_OUTPUT
)
95 # Note: We have to force -j1 here, at least until bug 1036563 is fixed.
96 AUTOMATION_EXTRA_CMDLINE-l10n-check
= -j1
97 AUTOMATION_EXTRA_CMDLINE-pretty-l10n-check
= -j1
99 # And force -j1 here until bug 1077670 is fixed.
100 AUTOMATION_EXTRA_CMDLINE-package-tests
= -j1
101 AUTOMATION_EXTRA_CMDLINE-pretty-package-tests
= -j1
103 # The commands only run if the corresponding MOZ_AUTOMATION_* variable is
104 # enabled. This means, for example, if we enable MOZ_AUTOMATION_UPLOAD, then
105 # 'buildsymbols' will only run if MOZ_AUTOMATION_BUILD_SYMBOLS is also set.
106 # However, the target automation/buildsymbols will still be executed in this
107 # case because it is a prerequisite of automation/upload.
108 define automation_commands
109 $(call BUILDSTATUS
,TIER_START
$1)
110 @
$(MAKE
) $1 $(AUTOMATION_EXTRA_CMDLINE-
$1)
111 $(call BUILDSTATUS
,TIER_FINISH
$1)
115 $(if
$(filter $*,$(MOZ_AUTOMATION_TIERS
)),$(call automation_commands
,$*))