|
1 # |
|
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/. |
|
5 |
|
6 ifneq (,$(filter automation/%,$(MAKECMDGOALS))) |
|
7 ifeq (4.0,$(firstword $(sort 4.0 $(MAKE_VERSION)))) |
|
8 MAKEFLAGS += --output-sync=target |
|
9 else |
|
10 .NOTPARALLEL: |
|
11 endif |
|
12 endif |
|
13 |
|
14 include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk |
|
15 |
|
16 # Log file from the 'make upload' step. We need this to parse out the URLs of |
|
17 # the uploaded files. |
|
18 AUTOMATION_UPLOAD_OUTPUT = $(DIST)/automation-upload.txt |
|
19 |
|
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 |
|
34 tier_UPLOAD = upload |
|
35 |
|
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 = \ |
|
41 PACKAGE_TESTS \ |
|
42 PRETTY_PACKAGE_TESTS \ |
|
43 BUILD_SYMBOLS \ |
|
44 UPLOAD_SYMBOLS \ |
|
45 PACKAGE \ |
|
46 PRETTY_PACKAGE \ |
|
47 INSTALLER \ |
|
48 PRETTY_INSTALLER \ |
|
49 UPDATE_PACKAGING \ |
|
50 PRETTY_UPDATE_PACKAGING \ |
|
51 L10N_CHECK \ |
|
52 PRETTY_L10N_CHECK \ |
|
53 UPLOAD \ |
|
54 $(NULL) |
|
55 MOZ_AUTOMATION_TIERS := $(foreach sym,$(moz_automation_symbols),$(if $(filter 1,$(MOZ_AUTOMATION_$(sym))),$(tier_$(sym)))) |
|
56 |
|
57 # Dependencies between automation build steps |
|
58 automation/uploadsymbols: automation/buildsymbols |
|
59 |
|
60 automation/update-packaging: automation/package |
|
61 automation/pretty-update-packaging: automation/pretty-package |
|
62 automation/pretty-update-packaging: automation/pretty-installer |
|
63 |
|
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 |
|
68 |
|
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 |
|
74 |
|
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 |
|
79 |
|
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 |
|
87 |
|
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) |
|
90 |
|
91 # We need the log from make upload to grep it for urls in order to set |
|
92 # properties. |
|
93 AUTOMATION_EXTRA_CMDLINE-upload = 2>&1 | tee $(AUTOMATION_UPLOAD_OUTPUT) |
|
94 |
|
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 |
|
98 |
|
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 |
|
102 |
|
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) |
|
112 endef |
|
113 |
|
114 automation/%: |
|
115 $(if $(filter $*,$(MOZ_AUTOMATION_TIERS)),$(call automation_commands,$*)) |