Bug 992983 - Build and upload the gtest libxul during test packaging. r=ted
☠☠ backed out by c4d0768dd27d ☠ ☠
authorChris Manchester <cmanchester@mozilla.com>
Thu, 16 Jul 2015 16:52:31 -0700
changeset 268345 92e5edb0d02eacdd5c13ce94c4c186a282610024
parent 268344 5f2853528bbf4859ca122e944243cf596144283d
child 268346 926311d9197d68e7150ff75ead878a1ea0940f9e
push id66784
push usercmanchester@mozilla.com
push dateMon, 19 Oct 2015 17:56:05 +0000
treeherdermozilla-inbound@92e5edb0d02e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersted
bugs992983
milestone44.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 992983 - Build and upload the gtest libxul during test packaging. r=ted
build/gen_test_packages_manifest.py
testing/gtest/Makefile.in
testing/testsuite-targets.mk
toolkit/mozapps/installer/package-name.mk
toolkit/mozapps/installer/upload-files.mk
--- a/build/gen_test_packages_manifest.py
+++ b/build/gen_test_packages_manifest.py
@@ -14,43 +14,53 @@ ALL_HARNESSES = [
     'reftest',
     'webapprt',
     'xpcshell',
     'cppunittest',
     'jittest',
     'mozbase',
     'web-platform',
     'talos',
+    'gtest',
 ]
 
 PACKAGE_SPECIFIED_HARNESSES = [
     'cppunittest',
     'mochitest',
     'reftest',
     'xpcshell',
     'web-platform',
     'talos',
 ]
 
+# These packages are not present for every build configuration.
+OPTIONAL_PACKAGES = [
+    'gtest',
+]
+
 
 def parse_args():
     parser = ArgumentParser(description='Generate a test_packages.json file to tell automation which harnesses require which test packages.')
     parser.add_argument("--common", required=True,
                         action="store", dest="tests_common",
                         help="Name of the \"common\" archive, a package to be used by all harnesses.")
     parser.add_argument("--jsshell", required=True,
                         action="store", dest="jsshell",
                         help="Name of the jsshell zip.")
     parser.add_argument("--use-short-names", action="store_true",
                         help="Use short names for packages (target.$name.tests.zip "
                              "instead of $(PACKAGE_BASENAME).$name.tests.zip)")
     for harness in PACKAGE_SPECIFIED_HARNESSES:
         parser.add_argument("--%s" % harness, required=True,
                             action="store", dest=harness,
                             help="Name of the %s zip." % harness)
+    for harness in OPTIONAL_PACKAGES:
+        parser.add_argument("--%s" % harness, required=False,
+                            action="store", dest=harness,
+                            help="Name of the %s zip." % harness)
     parser.add_argument("--dest-file", required=True,
                         action="store", dest="destfile",
                         help="Path to the output file to be written.")
     return parser.parse_args()
 
 def generate_package_data(args):
     # Generate a dictionary mapping test harness names (exactly as they're known to
     # mozharness and testsuite-targets.mk, ideally) to the set of archive names that
@@ -61,18 +71,20 @@ def generate_package_data(args):
     tests_common = args.tests_common
     if args.use_short_names:
         tests_common = 'target.common.tests.zip'
 
     jsshell = args.jsshell
 
     harness_requirements = dict([(k, [tests_common]) for k in ALL_HARNESSES])
     harness_requirements['jittest'].append(jsshell)
-    for harness in PACKAGE_SPECIFIED_HARNESSES:
-        pkg_name = getattr(args, harness)
+    for harness in PACKAGE_SPECIFIED_HARNESSES + OPTIONAL_PACKAGES:
+        pkg_name = getattr(args, harness, None)
+        if pkg_name is None:
+            continue
         if args.use_short_names:
             pkg_name = 'target.%s.tests.zip' % harness
         harness_requirements[harness].append(pkg_name)
     return harness_requirements
 
 if __name__ == '__main__':
     args = parse_args()
     packages_data = generate_package_data(args)
--- a/testing/gtest/Makefile.in
+++ b/testing/gtest/Makefile.in
@@ -2,44 +2,17 @@
 # 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/.
 
 # Avoid recursive make to avoid having to add files to the gtest/ subdirectory
 # (which is third-party code), and to make the build faster.
 
 include $(topsrcdir)/config/rules.mk
 
-# Bug 1028035: Linking xul-gtest.dll takes too long, so we disable GTest on
-# Windows PGO builds.
-ifeq (1_WINNT,$(MOZ_PGO)_$(OS_ARCH))
-SKIP_GTEST_DURING_MAKE_CHECK ?= 1
-endif
-
 ifeq (browser,$(MOZ_BUILD_APP))
 ifdef COMPILE_ENVIRONMENT
 gtest::
 	$(MAKE) -C $(DEPTH)/toolkit/library gtestxul
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 	$(MAKE) -C $(DEPTH)/browser/app repackage
 endif
-ifneq (1,$(SKIP_GTEST_DURING_MAKE_CHECK))
-check::
-	$(MAKE) -C $(DEPTH)/toolkit/library gtestxul
-ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-	$(MAKE) -C $(DEPTH)/browser/app repackage
-	$(PYTHON) $(topsrcdir)/testing/gtest/rungtests.py \
-		--cwd=$(DEPTH)/_tests/gtest \
-		--xre-path=$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources \
-		--symbols-path=$(DIST)/crashreporter-symbols \
-		$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS/$(MOZ_APP_NAME)$(BIN_SUFFIX)
-else
-	$(PYTHON) $(topsrcdir)/testing/gtest/rungtests.py \
-		--cwd=$(DEPTH)/_tests/gtest \
-		--xre-path=$(DIST)/bin \
-		--symbols-path=$(DIST)/crashreporter-symbols \
-		$(DIST)/bin/$(MOZ_APP_NAME)$(BIN_SUFFIX)
-endif
-else
-check::
-	echo GTest skipped during make check
 endif
 endif
-endif
--- a/testing/testsuite-targets.mk
+++ b/testing/testsuite-targets.mk
@@ -19,16 +19,30 @@ SYMBOLS_PATH := --symbols-path=$(DIST)/c
 # Usage: |make [TEST_PATH=...] [EXTRA_TEST_ARGS=...] mochitest*|.
 MOCHITESTS := mochitest-plain mochitest-chrome mochitest-devtools mochitest-a11y
 mochitest:: $(MOCHITESTS)
 
 ifndef TEST_PACKAGE_NAME
 TEST_PACKAGE_NAME := $(ANDROID_PACKAGE_NAME)
 endif
 
+# Linking xul-gtest.dll takes too long, so we disable GTest on
+# Windows PGO builds (bug 1028035).
+ifneq (1_WINNT,$(MOZ_PGO)_$(OS_ARCH))
+BUILD_GTEST=1
+endif
+
+ifdef MOZ_B2G
+BUILD_GTEST=
+endif
+
+ifeq ($(MOZ_BUILD_APP),mobile/android)
+BUILD_GTEST=
+endif
+
 RUN_MOCHITEST_B2G_DESKTOP = \
   rm -f ./$@.log && \
   $(PYTHON) _tests/testing/mochitest/runtestsb2g.py \
     --log-tbpl=./$@.log \
     --desktop --profile ${GAIA_PROFILE_DIR} \
     --failure-file=$(abspath _tests/testing/mochitest/makefailures.json) \
     $(EXTRA_TEST_ARGS) $(TEST_PATH_ARG)
 
@@ -382,16 +396,20 @@ stage-all: \
   stage-luciddream \
   test-packages-manifest \
   test-packages-manifest-tc \
   $(NULL)
 ifdef MOZ_WEBRTC
 stage-all: stage-steeplechase
 endif
 
+ifdef BUILD_GTEST
+stage-all: stage-gtest
+endif
+
 TEST_PKGS := \
   common \
   cppunittest \
   mochitest \
   reftest \
   talos \
   web-platform \
   xpcshell \
@@ -475,16 +493,25 @@ ifeq ($(MOZ_BUILD_APP),mobile/android)
 endif
 
 stage-xpcshell: make-stage-dir
 	$(MAKE) -C $(DEPTH)/testing/xpcshell stage-package
 
 stage-jstests: make-stage-dir
 	$(MAKE) -C $(DEPTH)/js/src/tests stage-package
 
+stage-gtest: make-stage-dir
+# FIXME: (bug 1200311) We should be generating the gtest xul as part of the build.
+	$(MAKE) -C $(DEPTH)/testing/gtest gtest
+	$(NSINSTALL) -D $(PKG_STAGE)/gtest/gtest_bin
+	cp -RL $(DIST)/bin/gtest $(PKG_STAGE)/gtest/gtest_bin
+	cp -RL $(DEPTH)/_tests/gtest $(PKG_STAGE)
+	cp $(topsrcdir)/testing/gtest/rungtests.py $(PKG_STAGE)/gtest
+	cp $(DIST)/bin/dependentlibs.list.gtest $(PKG_STAGE)/gtest
+
 stage-android: make-stage-dir
 ifdef MOZ_ENABLE_SZIP
 # Tinderbox scripts are not unzipping everything, so the file needs to be in a directory it unzips
 	$(NSINSTALL) $(DIST)/host/bin/szip $(PKG_STAGE)/bin/host
 endif
 	$(NSINSTALL) $(DEPTH)/build/mobile/sutagent/android/sutAgentAndroid.apk $(PKG_STAGE)/bin
 	$(NSINSTALL) $(DEPTH)/build/mobile/sutagent/android/watcher/Watcher.apk $(PKG_STAGE)/bin
 	$(NSINSTALL) $(DEPTH)/build/mobile/sutagent/android/fencp/FenCP.apk $(PKG_STAGE)/bin
--- a/toolkit/mozapps/installer/package-name.mk
+++ b/toolkit/mozapps/installer/package-name.mk
@@ -138,16 +138,17 @@ MOZHARNESS_PACKAGE = mozharness.zip
 # Test package naming
 TEST_PACKAGE = $(PKG_BASENAME).common.tests.zip
 CPP_TEST_PACKAGE = $(PKG_BASENAME).cppunittest.tests.zip
 XPC_TEST_PACKAGE = $(PKG_BASENAME).xpcshell.tests.zip
 MOCHITEST_PACKAGE = $(PKG_BASENAME).mochitest.tests.zip
 REFTEST_PACKAGE = $(PKG_BASENAME).reftest.tests.zip
 WP_TEST_PACKAGE = $(PKG_BASENAME).web-platform.tests.zip
 TALOS_PACKAGE = $(PKG_BASENAME).talos.tests.zip
+GTEST_PACKAGE = $(PKG_BASENAME).gtest.tests.zip
 
 ifneq (,$(wildcard $(DIST)/bin/application.ini))
 BUILDID = $(shell $(PYTHON) $(MOZILLA_DIR)/config/printconfigsetting.py $(DIST)/bin/application.ini App BuildID)
 else
 BUILDID = $(shell $(PYTHON) $(MOZILLA_DIR)/config/printconfigsetting.py $(DIST)/bin/platform.ini Build BuildID)
 endif
 
 ifndef INCLUDED_RCS_MK
--- a/toolkit/mozapps/installer/upload-files.mk
+++ b/toolkit/mozapps/installer/upload-files.mk
@@ -734,16 +734,17 @@ UPLOAD_FILES= \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOZHARNESS_PACKAGE)) \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(TEST_PACKAGE)) \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(CPP_TEST_PACKAGE)) \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(XPC_TEST_PACKAGE)) \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(MOCHITEST_PACKAGE)) \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(TALOS_PACKAGE)) \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(REFTEST_PACKAGE)) \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(WP_TEST_PACKAGE)) \
+  $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(GTEST_PACKAGE)) \
   $(call QUOTED_WILDCARD,$(DIST)/$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip) \
   $(call QUOTED_WILDCARD,$(DIST)/$(SDK)) \
   $(call QUOTED_WILDCARD,$(MOZ_SOURCESTAMP_FILE)) \
   $(call QUOTED_WILDCARD,$(MOZ_BUILDINFO_FILE)) \
   $(call QUOTED_WILDCARD,$(MOZ_MOZINFO_FILE)) \
   $(call QUOTED_WILDCARD,$(MOZ_TEST_PACKAGES_FILE)) \
   $(call QUOTED_WILDCARD,$(PKG_JSSHELL)) \
   $(if $(UPLOAD_EXTRA_FILES), $(foreach f, $(UPLOAD_EXTRA_FILES), $(wildcard $(DIST)/$(f))))