Bug 1307301 - Don't attempt to compress compressed files when packing the symbols archive.
MozReview-Commit-ID: 542dZflb00G
--- a/Makefile.in
+++ b/Makefile.in
@@ -263,17 +263,18 @@ prepsymbolsarchive: recurse_syms
endif
.PHONY: symbolsfullarchive
symbolsfullarchive: prepsymbolsarchive
$(RM) '$(DIST)/$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).zip'
$(call py_action,symbols_archive,$(abspath '$(DIST)/$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).zip') \
$(abspath $(DIST)/crashreporter-symbols) \
--exclude '*test*' \
- --exclude '*Test*')
+ --exclude '*Test*' \
+ --compress '**/*.sym')
.PHONY: symbolsarchive
symbolsarchive: prepsymbolsarchive
$(RM) '$(DIST)/$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip'
$(call py_action,symbols_archive,$(abspath '$(DIST)/$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip') \
$(abspath $(DIST)/crashreporter-symbols) \
--include '**/*.sym')
--- a/python/mozbuild/mozbuild/action/symbols_archive.py
+++ b/python/mozbuild/mozbuild/action/symbols_archive.py
@@ -5,35 +5,40 @@
from __future__ import absolute_import, print_function, unicode_literals
import argparse
import sys
import os
from mozpack.files import FileFinder
from mozpack.mozjar import JarWriter
+import mozpack.path as mozpath
-def make_archive(archive_name, base, exclude, include):
+def make_archive(archive_name, base, exclude, include, compress):
finder = FileFinder(base, ignore=exclude)
if not include:
include = ['*']
-
+ if not compress:
+ compress = ['**/*.sym']
archive_basename = os.path.basename(archive_name)
with open(archive_name, 'wb') as fh:
with JarWriter(fileobj=fh, optimize=False, compress_level=5) as writer:
for pat in include:
for p, f in finder.find(pat):
print(' Adding to "%s":\n\t"%s"' % (archive_basename, p))
- writer.add(p.encode('utf-8'), f.read(), mode=f.mode, skip_duplicates=True)
+ should_compress = any(mozpath.match(p, pat) for pat in compress)
+ writer.add(p.encode('utf-8'), f.read(), mode=f.mode,
+ compress=should_compress, skip_duplicates=True)
def main(argv):
parser = argparse.ArgumentParser(description='Produce a symbols archive')
parser.add_argument('archive', help='Which archive to generate')
parser.add_argument('base', help='Base directory to package')
parser.add_argument('--exclude', default=[], action='append', help='File patterns to exclude')
parser.add_argument('--include', default=[], action='append', help='File patterns to include')
+ parser.add_argument('--compress', default=[], action='append', help='File patterns to compress')
args = parser.parse_args(argv)
- make_archive(args.archive, args.base, args.exclude, args.include)
+ make_archive(args.archive, args.base, args.exclude, args.include, args.compress)
if __name__ == '__main__':
main(sys.argv[1:])