Bug 1349640 - Allow the code coverage archiver to accept multiple patterns. draft
authorChris Manchester <cmanchester@mozilla.com>
Mon, 27 Mar 2017 14:57:54 -0700
changeset 552577 9f818d46909f18684d4796399befc7341e67f720
parent 551789 9577ddeaafd85554c2a855f385a87472a089d5c0
child 552578 22e10d3634febc7328486731482cc5b2a210e478
push id51387
push usercmanchester@mozilla.com
push dateTue, 28 Mar 2017 17:37:23 +0000
bugs1349640
milestone55.0a1
Bug 1349640 - Allow the code coverage archiver to accept multiple patterns. MozReview-Commit-ID: LhP4b7kCmEB
python/mozbuild/mozbuild/codecoverage/packager.py
toolkit/mozapps/installer/packager.mk
--- a/python/mozbuild/mozbuild/codecoverage/packager.py
+++ b/python/mozbuild/mozbuild/codecoverage/packager.py
@@ -5,39 +5,45 @@
 from __future__ import absolute_import, print_function
 
 import argparse
 import sys
 
 from mozpack.files import FileFinder
 from mozpack.copier import Jarrer
 
-def package_gcno_tree(root, output_file):
+def package_gcno_tree(root, output_file, input_patterns):
     # XXX JarWriter doesn't support unicode strings, see bug 1056859
     if isinstance(root, unicode):
         root = root.encode('utf-8')
 
     finder = FileFinder(root)
     jarrer = Jarrer(optimize=False)
-    for p, f in finder.find("**/*.gcno"):
-        jarrer.add(p, f)
+    for pattern in input_patterns:
+        for p, f in finder.find(pattern):
+            jarrer.add(p, f)
     jarrer.copy(output_file)
 
 
 def cli(args=sys.argv[1:]):
     parser = argparse.ArgumentParser()
     parser.add_argument('-o', '--output-file',
                         dest='output_file',
                         help='Path to save packaged data to.')
     parser.add_argument('--root',
                         dest='root',
                         default=None,
                         help='Root directory to search from.')
+    parser.add_argument('--input-pattern',
+                        dest='input_patterns',
+                        action='append',
+                        default=[],
+                        help='File name patterns to add to the archive.')
     args = parser.parse_args(args)
 
     if not args.root:
         from buildconfig import topobjdir
         args.root = topobjdir
 
-    return package_gcno_tree(args.root, args.output_file)
+    return package_gcno_tree(args.root, args.output_file, args.input_patterns)
 
 if __name__ == '__main__':
     sys.exit(cli())
--- a/toolkit/mozapps/installer/packager.mk
+++ b/toolkit/mozapps/installer/packager.mk
@@ -72,17 +72,18 @@ ifdef MOZ_ARTIFACT_BUILD_SYMBOLS
 	cd $(DIST)/crashreporter-symbols && \
           zip -r5D '../$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip' . -i '*.sym' -i '*.txt'
 endif # MOZ_ARTIFACT_BUILD_SYMBOLS
 ifdef MOZ_CODE_COVERAGE
 	# Package code coverage gcno tree
 	@echo 'Packaging code coverage data...'
 	$(RM) $(CODE_COVERAGE_ARCHIVE_BASENAME).zip
 	$(PYTHON) -mmozbuild.codecoverage.packager \
-		--output-file='$(DIST)/$(PKG_PATH)$(CODE_COVERAGE_ARCHIVE_BASENAME).zip'
+        --output-file='$(DIST)/$(PKG_PATH)$(CODE_COVERAGE_ARCHIVE_BASENAME).zip' \
+        --input-pattern='**/*.gcno'
 endif
 ifeq (Darwin, $(OS_ARCH))
 ifdef MOZ_ASAN
 	@echo "Rewriting ASan runtime dylib paths for all binaries in $(DIST)/$(MOZ_PKG_DIR)$(_BINPATH) ..."
 	$(PYTHON) $(MOZILLA_DIR)/build/unix/rewrite_asan_dylib.py $(DIST)/$(MOZ_PKG_DIR)$(_BINPATH)
 endif # MOZ_ASAN
 endif # Darwin