Backed out changeset 1f72106b618f (bug 1923744) on request for causing crashes. a...
[gecko.git] / toolkit / mozapps / installer / upload-files.mk
blob4cad10c2712aac6969a8f61012a6424b6b1466c5
1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 ifndef MOZ_PKG_FORMAT
6 ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
7 MOZ_PKG_FORMAT = DMG
8 else ifeq ($(OS_ARCH),WINNT)
9 MOZ_PKG_FORMAT = ZIP
10 else ifeq ($(OS_ARCH),SunOS)
11 MOZ_PKG_FORMAT = BZ2
12 else ifeq ($(MOZ_WIDGET_TOOLKIT),gtk)
13 MOZ_PKG_FORMAT = BZ2
14 else ifeq ($(MOZ_WIDGET_TOOLKIT),android)
15 MOZ_PKG_FORMAT = APK
16 else
17 MOZ_PKG_FORMAT = TGZ
18 endif
19 endif # MOZ_PKG_FORMAT
21 ifeq ($(OS_ARCH),WINNT)
22 INSTALLER_DIR = windows
23 endif
25 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
26 ifndef _APPNAME
27 _APPNAME = $(MOZ_MACBUNDLE_NAME)
28 endif
29 ifndef _BINPATH
30 _BINPATH = $(_APPNAME)/Contents/MacOS
31 endif # _BINPATH
32 ifndef _RESPATH
33 # Resource path for the precomplete file
34 _RESPATH = $(_APPNAME)/Contents/Resources
35 endif
36 endif
38 PACKAGE_BASE_DIR = $(ABS_DIST)
39 PACKAGE = $(PKG_PATH)$(PKG_BASENAME)$(PKG_SUFFIX)
41 # JavaScript Shell packaging
42 JSSHELL_BINS = \
43 js$(BIN_SUFFIX) \
44 $(DLL_PREFIX)mozglue$(DLL_SUFFIX) \
45 $(NULL)
47 ifndef MOZ_SYSTEM_NSPR
48 ifdef MOZ_FOLD_LIBS
49 JSSHELL_BINS += $(DLL_PREFIX)nss3$(DLL_SUFFIX)
50 else
51 JSSHELL_BINS += \
52 $(DLL_PREFIX)nspr4$(DLL_SUFFIX) \
53 $(DLL_PREFIX)plds4$(DLL_SUFFIX) \
54 $(DLL_PREFIX)plc4$(DLL_SUFFIX) \
55 $(NULL)
56 endif # MOZ_FOLD_LIBS
57 endif # MOZ_SYSTEM_NSPR
59 ifdef MSVC_C_RUNTIME_DLL
60 JSSHELL_BINS += $(MSVC_C_RUNTIME_DLL)
61 endif
62 ifdef MSVC_C_RUNTIME_1_DLL
63 JSSHELL_BINS += $(MSVC_C_RUNTIME_1_DLL)
64 endif
65 ifdef MSVC_CXX_RUNTIME_DLL
66 JSSHELL_BINS += $(MSVC_CXX_RUNTIME_DLL)
67 endif
69 ifdef LLVM_SYMBOLIZER
70 JSSHELL_BINS += $(notdir $(LLVM_SYMBOLIZER))
71 endif
72 ifdef MOZ_CLANG_RT_ASAN_LIB_PATH
73 JSSHELL_BINS += $(notdir $(MOZ_CLANG_RT_ASAN_LIB_PATH))
74 endif
76 ifdef FUZZING_INTERFACES
77 JSSHELL_BINS += fuzz-tests$(BIN_SUFFIX)
78 endif
80 MAKE_JSSHELL = $(call py_action,zip $(JSSHELL_NAME),-C $(DIST)/bin --strip $(abspath $(PKG_JSSHELL)) $(JSSHELL_BINS))
82 ifneq (,$(PGO_JARLOG_PATH))
83 # The backslash subst is to work around an issue with our version of mozmake,
84 # where backslashes get slurped in command-line arguments if a command is run
85 # with a double-quote character. The command to packager.py happens to be one
86 # of these commands, where double-quotes appear in certain ACDEFINES values.
87 # This turns a jarlog path like "Z:\task..." into "Z:task", which fails.
88 # Switching the backslashes for forward slashes works around the issue.
89 JARLOG_FILE_AB_CD = $(subst \,/,$(PGO_JARLOG_PATH))
90 else
91 JARLOG_FILE_AB_CD = $(topobjdir)/jarlog/$(AB_CD).log
92 endif
94 TAR_CREATE_FLAGS := --exclude=.mkdir.done $(TAR_CREATE_FLAGS)
95 CREATE_FINAL_TAR = $(TAR) -c --owner=0 --group=0 --numeric-owner \
96 --mode=go-w --exclude=.mkdir.done -f
97 UNPACK_TAR = tar -xf-
99 ifeq ($(MOZ_PKG_FORMAT),TAR)
100 PKG_SUFFIX = .tar
101 INNER_MAKE_PACKAGE = cd $(1) && $(CREATE_FINAL_TAR) - $(MOZ_PKG_DIR) > $(PACKAGE)
102 INNER_UNMAKE_PACKAGE = cd $(1) && $(UNPACK_TAR) < $(UNPACKAGE)
103 endif
105 ifeq ($(MOZ_PKG_FORMAT),TGZ)
106 PKG_SUFFIX = .tar.gz
107 INNER_MAKE_PACKAGE = cd $(1) && $(CREATE_FINAL_TAR) - $(MOZ_PKG_DIR) | gzip -vf9 > $(PACKAGE)
108 INNER_UNMAKE_PACKAGE = cd $(1) && gunzip -c $(UNPACKAGE) | $(UNPACK_TAR)
109 endif
111 ifeq ($(MOZ_PKG_FORMAT),BZ2)
112 PKG_SUFFIX = .tar.bz2
113 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
114 INNER_MAKE_PACKAGE = cd $(1) && $(CREATE_FINAL_TAR) - -C $(MOZ_PKG_DIR) $(_APPNAME) | bzip2 -vf > $(PACKAGE)
115 else
116 INNER_MAKE_PACKAGE = cd $(1) && $(CREATE_FINAL_TAR) - $(MOZ_PKG_DIR) | bzip2 -vf > $(PACKAGE)
117 endif
118 INNER_UNMAKE_PACKAGE = cd $(1) && bunzip2 -c $(UNPACKAGE) | $(UNPACK_TAR)
119 endif
121 ifeq ($(MOZ_PKG_FORMAT),ZIP)
122 PKG_SUFFIX = .zip
123 INNER_MAKE_PACKAGE = $(call py_action,zip,'$(PACKAGE)' '$(MOZ_PKG_DIR)' -x '**/.mkdir.done',$(1))
124 INNER_UNMAKE_PACKAGE = $(call py_action,make_unzip,$(UNPACKAGE),$(1))
125 endif
127 #Create an RPM file
128 ifeq ($(MOZ_PKG_FORMAT),RPM)
129 PKG_SUFFIX = .rpm
130 MOZ_NUMERIC_APP_VERSION = $(shell echo $(MOZ_PKG_VERSION) | sed 's/[^0-9.].*//' )
131 MOZ_RPM_RELEASE = $(shell echo $(MOZ_PKG_VERSION) | sed 's/[0-9.]*//' )
133 RPMBUILD_TOPDIR=$(ABS_DIST)/rpmbuild
134 RPMBUILD_RPMDIR=$(ABS_DIST)
135 RPMBUILD_SRPMDIR=$(ABS_DIST)
136 RPMBUILD_SOURCEDIR=$(RPMBUILD_TOPDIR)/SOURCES
137 RPMBUILD_SPECDIR=$(topsrcdir)/toolkit/mozapps/installer/linux/rpm
138 RPMBUILD_BUILDDIR=$(ABS_DIST)/..
140 SPEC_FILE = $(RPMBUILD_SPECDIR)/mozilla.spec
141 RPM_INCIDENTALS=$(topsrcdir)/toolkit/mozapps/installer/linux/rpm
143 RPM_CMD = \
144 echo Creating RPM && \
145 $(PYTHON3) -m mozbuild.action.preprocessor \
146 -DMOZ_APP_NAME=$(MOZ_APP_NAME) \
147 -DMOZ_APP_DISPLAYNAME='$(MOZ_APP_DISPLAYNAME)' \
148 -DMOZ_APP_REMOTINGNAME='$(MOZ_APP_REMOTINGNAME)' \
149 $(RPM_INCIDENTALS)/mozilla.desktop \
150 -o $(RPMBUILD_SOURCEDIR)/$(MOZ_APP_NAME).desktop && \
151 rm -rf $(ABS_DIST)/$(TARGET_RAW_CPU) && \
152 $(RPMBUILD) -bb \
153 $(SPEC_FILE) \
154 --target $(TARGET_RAW_CPU) \
155 --buildroot $(RPMBUILD_TOPDIR)/BUILDROOT \
156 --define 'moz_app_name $(MOZ_APP_NAME)' \
157 --define 'moz_app_displayname $(MOZ_APP_DISPLAYNAME)' \
158 --define 'moz_app_version $(MOZ_APP_VERSION)' \
159 --define 'moz_numeric_app_version $(MOZ_NUMERIC_APP_VERSION)' \
160 --define 'moz_rpm_release $(MOZ_RPM_RELEASE)' \
161 --define 'buildid $(BUILDID)' \
162 --define 'moz_source_repo $(shell awk '$$2 == "MOZ_SOURCE_REPO" {print $$3}' $(DEPTH)/source-repo.h)' \
163 --define 'moz_source_stamp $(shell awk '$$2 == "MOZ_SOURCE_STAMP" {print $$3}' $(DEPTH)/source-repo.h)' \
164 --define 'moz_branding_directory $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)' \
165 --define '_topdir $(RPMBUILD_TOPDIR)' \
166 --define '_rpmdir $(RPMBUILD_RPMDIR)' \
167 --define '_sourcedir $(RPMBUILD_SOURCEDIR)' \
168 --define '_specdir $(RPMBUILD_SPECDIR)' \
169 --define '_srcrpmdir $(RPMBUILD_SRPMDIR)' \
170 --define '_builddir $(RPMBUILD_BUILDDIR)' \
171 --define '_prefix $(prefix)' \
172 --define '_libdir $(libdir)' \
173 --define '_bindir $(bindir)' \
174 --define '_datadir $(datadir)' \
175 --define '_installdir $(installdir)'
177 ifdef ENABLE_TESTS
178 RPM_CMD += \
179 --define 'createtests yes' \
180 --define '_testsinstalldir $(shell basename $(installdir))'
181 endif
183 #For each of the main/tests rpms we want to make sure that
184 #if they exist that they are in objdir/dist/ and that they get
185 #uploaded and that they are beside the other build artifacts
186 MAIN_RPM= $(MOZ_APP_NAME)-$(MOZ_NUMERIC_APP_VERSION)-$(MOZ_RPM_RELEASE).$(BUILDID).$(TARGET_RAW_CPU)$(PKG_SUFFIX)
187 UPLOAD_EXTRA_FILES += $(MAIN_RPM)
188 RPM_CMD += && mv $(TARGET_RAW_CPU)/$(MAIN_RPM) $(ABS_DIST)/
190 ifdef ENABLE_TESTS
191 TESTS_RPM=$(MOZ_APP_NAME)-tests-$(MOZ_NUMERIC_APP_VERSION)-$(MOZ_RPM_RELEASE).$(BUILDID).$(TARGET_RAW_CPU)$(PKG_SUFFIX)
192 UPLOAD_EXTRA_FILES += $(TESTS_RPM)
193 RPM_CMD += && mv $(TARGET_RAW_CPU)/$(TESTS_RPM) $(ABS_DIST)/
194 endif
196 INNER_MAKE_PACKAGE = cd $(1) && $(RPM_CMD)
197 #Avoiding rpm repacks, going to try creating/uploading xpi in rpm files instead
198 INNER_UNMAKE_PACKAGE = $(error Try using rpm2cpio and cpio)
200 endif #Create an RPM file
203 ifeq ($(MOZ_PKG_FORMAT),APK)
204 INNER_MAKE_PACKAGE = true
205 INNER_UNMAKE_PACKAGE = true
206 endif
208 ifeq ($(MOZ_PKG_FORMAT),DMG)
209 PKG_SUFFIX = .dmg
211 _ABS_MOZSRCDIR = $(shell cd $(MOZILLA_DIR) && pwd)
212 PKG_DMG_SOURCE = $(MOZ_PKG_DIR)
213 INNER_MAKE_PACKAGE = \
214 $(call py_action,make_dmg, \
215 $(if $(MOZ_PKG_MAC_DSSTORE),--dsstore '$(MOZ_PKG_MAC_DSSTORE)') \
216 $(if $(MOZ_PKG_MAC_BACKGROUND),--background '$(MOZ_PKG_MAC_BACKGROUND)') \
217 $(if $(MOZ_PKG_MAC_ICON),--icon '$(MOZ_PKG_MAC_ICON)') \
218 --volume-name '$(MOZ_APP_DISPLAYNAME)' \
219 '$(PKG_DMG_SOURCE)' '$(PACKAGE)', \
220 $(1))
221 INNER_UNMAKE_PACKAGE = \
222 $(call py_action,unpack_dmg, \
223 $(if $(MOZ_PKG_MAC_DSSTORE),--dsstore '$(MOZ_PKG_MAC_DSSTORE)') \
224 $(if $(MOZ_PKG_MAC_BACKGROUND),--background '$(MOZ_PKG_MAC_BACKGROUND)') \
225 $(if $(MOZ_PKG_MAC_ICON),--icon '$(MOZ_PKG_MAC_ICON)') \
226 $(UNPACKAGE) $(MOZ_PKG_DIR), \
227 $(1))
228 endif
230 MAKE_PACKAGE = $(INNER_MAKE_PACKAGE)
232 NO_PKG_FILES += \
233 core \
234 bsdecho \
235 js \
236 js-config \
237 jscpucfg \
238 nsinstall \
239 viewer \
240 TestGtkEmbed \
241 elf-dynstr-gc \
242 mangle* \
243 maptsv* \
244 mfc* \
245 msdump* \
246 msmap* \
247 nm2tsv* \
248 nsinstall* \
249 res/samples \
250 res/throbber \
251 shlibsign* \
252 certutil* \
253 pk12util* \
254 BadCertAndPinningServer* \
255 DelegatedCredentialsServer* \
256 EncryptedClientHelloServer* \
257 FaultyServer* \
258 OCSPStaplingServer* \
259 SanctionsTestServer* \
260 GenerateOCSPResponse* \
261 chrome/chrome.rdf \
262 chrome/app-chrome.manifest \
263 chrome/overlayinfo \
264 components/compreg.dat \
265 components/xpti.dat \
266 content_unit_tests \
267 necko_unit_tests \
268 *.dSYM \
269 $(NULL)
271 # If a manifest has not been supplied, the following
272 # files should be excluded from the package too
273 ifndef MOZ_PKG_MANIFEST
274 NO_PKG_FILES += ssltunnel*
275 endif
277 ifdef MOZ_DMD
278 NO_PKG_FILES += SmokeDMD
279 endif
281 DEFINES += -DDLL_PREFIX=$(DLL_PREFIX) -DDLL_SUFFIX=$(DLL_SUFFIX) -DBIN_SUFFIX=$(BIN_SUFFIX)
283 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
284 DEFINES += -DDIR_MACOS=Contents/MacOS/ -DDIR_RESOURCES=Contents/Resources/
285 else
286 DEFINES += -DDIR_MACOS= -DDIR_RESOURCES=
287 endif
289 ifdef MOZ_FOLD_LIBS
290 DEFINES += -DMOZ_FOLD_LIBS=1
291 endif
293 # The following target stages files into two directories: one directory for
294 # core files, and one for optional extensions based on the information in
295 # the MOZ_PKG_MANIFEST file.
297 PKG_ARG = , '$(pkg)'
299 ifndef MOZ_PACKAGER_FORMAT
300 MOZ_PACKAGER_FORMAT = $(error MOZ_PACKAGER_FORMAT is not set)
301 endif
303 ifneq (android,$(MOZ_WIDGET_TOOLKIT))
304 JAR_COMPRESSION ?= none
305 endif
307 ifeq ($(OS_TARGET), WINNT)
308 INSTALLER_PACKAGE = $(DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe
309 endif
311 # These are necessary because some of our packages/installers contain spaces
312 # in their filenames and GNU Make's $(wildcard) function doesn't properly
313 # deal with them.
314 empty :=
315 space = $(empty) $(empty)
316 QUOTED_WILDCARD = $(if $(wildcard $(subst $(space),?,$(1))),'$(1)')
317 ESCAPE_SPACE = $(subst $(space),\$(space),$(1))
318 ESCAPE_WILDCARD = $(subst $(space),?,$(1))
320 # This variable defines which OpenSSL algorithm to use to
321 # generate checksums for files that we upload
322 CHECKSUM_ALGORITHM_PARAM = -d sha512 -d md5 -d sha1
324 # This variable defines where the checksum file will be located
325 CHECKSUM_FILE = '$(DIST)/$(PKG_PATH)/$(CHECKSUMS_FILE_BASENAME).checksums'
326 CHECKSUM_FILES = $(CHECKSUM_FILE)
328 # Upload MAR tools only if AB_CD is unset or en_US
329 ifeq (,$(AB_CD:en-US=))
330 ifeq (WINNT,$(OS_TARGET))
331 UPLOAD_EXTRA_FILES += host/bin/mar.exe
332 UPLOAD_EXTRA_FILES += host/bin/mbsdiff.exe
333 else
334 UPLOAD_EXTRA_FILES += host/bin/mar
335 UPLOAD_EXTRA_FILES += host/bin/mbsdiff
336 endif
337 endif
339 UPLOAD_FILES= \
340 $(call QUOTED_WILDCARD,$(DIST)/$(PACKAGE)) \
341 $(call QUOTED_WILDCARD,$(INSTALLER_PACKAGE)) \
342 $(call QUOTED_WILDCARD,$(DIST)/$(LANGPACK)) \
343 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZHARNESS_PACKAGE)) \
344 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip) \
345 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(GENERATED_SOURCE_FILE_PACKAGE)) \
346 $(call QUOTED_WILDCARD,$(MOZ_SOURCESTAMP_FILE)) \
347 $(call QUOTED_WILDCARD,$(MOZ_BUILDINFO_FILE)) \
348 $(call QUOTED_WILDCARD,$(MOZ_BUILDHUB_JSON)) \
349 $(call QUOTED_WILDCARD,$(MOZ_BUILDID_INFO_TXT_FILE)) \
350 $(call QUOTED_WILDCARD,$(MOZ_MOZINFO_FILE)) \
351 $(call QUOTED_WILDCARD,$(MOZ_TEST_PACKAGES_FILE)) \
352 $(call QUOTED_WILDCARD,$(PKG_JSSHELL)) \
353 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).tar.zst) \
354 $(call QUOTED_WILDCARD,$(topobjdir)/$(MOZ_BUILD_APP)/installer/windows/instgen/setup.exe) \
355 $(call QUOTED_WILDCARD,$(topobjdir)/$(MOZ_BUILD_APP)/installer/windows/instgen/setup-stub.exe) \
356 $(call QUOTED_WILDCARD,$(topsrcdir)/toolchains.json) \
357 $(call QUOTED_WILDCARD,$(topobjdir)/config.status) \
358 $(if $(UPLOAD_EXTRA_FILES), $(foreach f, $(UPLOAD_EXTRA_FILES), $(wildcard $(DIST)/$(f))))
360 ifneq ($(filter-out en-US,$(AB_CD)),)
361 UPLOAD_FILES += \
362 $(call QUOTED_WILDCARD,$(topobjdir)/$(MOZ_BUILD_APP)/installer/windows/l10ngen/setup.exe) \
363 $(call QUOTED_WILDCARD,$(topobjdir)/$(MOZ_BUILD_APP)/installer/windows/l10ngen/setup-stub.exe)
364 endif
366 ifdef MOZ_CODE_COVERAGE
367 UPLOAD_FILES += \
368 $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(CODE_COVERAGE_ARCHIVE_BASENAME).zip) \
369 $(call QUOTED_WILDCARD,$(topobjdir)/chrome-map.json) \
370 $(NULL)
371 endif
374 ifdef ENABLE_MOZSEARCH_PLUGIN
375 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(topobjdir)/chrome-map.json)
376 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZSEARCH_ARCHIVE_BASENAME).zip)
377 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZSEARCH_SCIP_INDEX_BASENAME).zip)
378 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZSEARCH_INCLUDEMAP_BASENAME).map)
379 ifeq ($(MOZ_BUILD_APP),mobile/android)
380 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZSEARCH_JAVA_INDEX_BASENAME).zip)
381 endif
382 endif
384 ifdef MOZ_STUB_INSTALLER
385 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_INST_PATH)$(PKG_STUB_BASENAME).exe)
386 endif
388 # Upload `.xpt` artifacts for use in artifact builds.
389 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(XPT_ARTIFACTS_ARCHIVE_BASENAME).zip)
390 # Upload update-related macOS framework artifacts for use in artifact builds.
391 ifeq ($(OS_ARCH),Darwin)
392 UPLOAD_FILES += $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(UPDATE_FRAMEWORK_ARTIFACTS_ARCHIVE_BASENAME).zip)
393 endif # Darwin
395 ifndef MOZ_PKG_SRCDIR
396 MOZ_PKG_SRCDIR = $(topsrcdir)
397 endif
399 SRC_TAR_PREFIX = $(MOZ_APP_NAME)-$(MOZ_PKG_VERSION)
400 SRC_TAR_EXCLUDE_PATHS += \
401 --exclude='.hg*' \
402 --exclude='.git' \
403 --exclude='.gitattributes' \
404 --exclude='.gitkeep' \
405 --exclude='.gitmodules' \
406 --exclude='CVS' \
407 --exclude='.cvs*' \
408 --exclude='.mozconfig*' \
409 --exclude='*.pyc' \
410 --exclude='$(MOZILLA_DIR)/Makefile' \
411 --exclude='$(MOZILLA_DIR)/dist'
412 ifdef MOZ_OBJDIR
413 SRC_TAR_EXCLUDE_PATHS += --exclude='$(MOZ_OBJDIR)'
414 endif
415 CREATE_SOURCE_TAR = $(TAR) -c --owner=0 --group=0 --numeric-owner \
416 --mode=go-w $(SRC_TAR_EXCLUDE_PATHS) --transform='s,^\./,$(SRC_TAR_PREFIX)/,' -f
418 SOURCE_TAR = $(DIST)/$(PKG_SRCPACK_PATH)$(PKG_SRCPACK_BASENAME).tar.xz
419 HG_BUNDLE_FILE = $(DIST)/$(PKG_SRCPACK_PATH)$(PKG_BUNDLE_BASENAME).bundle
420 SOURCE_CHECKSUM_FILE = $(DIST)/$(PKG_SRCPACK_PATH)$(PKG_SRCPACK_BASENAME).checksums
421 SOURCE_UPLOAD_FILES = $(SOURCE_TAR)
423 HG ?= hg
424 CREATE_HG_BUNDLE_CMD = $(HG) -v -R $(topsrcdir) bundle --base null
425 ifdef HG_BUNDLE_REVISION
426 CREATE_HG_BUNDLE_CMD += -r $(HG_BUNDLE_REVISION)
427 endif
428 CREATE_HG_BUNDLE_CMD += $(HG_BUNDLE_FILE)
429 ifdef UPLOAD_HG_BUNDLE
430 SOURCE_UPLOAD_FILES += $(HG_BUNDLE_FILE)
431 endif