Bug 1307301 - Pack symbols with a python helper and mozjar instead of zip.
MozReview-Commit-ID: SKwzZ7l8CS
--- a/Makefile.in
+++ b/Makefile.in
@@ -259,25 +259,28 @@ prepsymbolsarchive:
$(NSINSTALL) -D $(DIST)/$(PKG_PATH)
ifndef MOZ_AUTOMATION
prepsymbolsarchive: recurse_syms
endif
.PHONY: symbolsfullarchive
symbolsfullarchive: prepsymbolsarchive
- $(RM) '$(DIST)/$(SYMBOL_FULL_ARCHIVE_BASENAME).zip'
- cd $(DIST)/crashreporter-symbols && \
- zip -r5D '../$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).zip' . -x '*test*' -x '*Test*'
+ $(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*')
.PHONY: symbolsarchive
symbolsarchive: prepsymbolsarchive
- $(RM) '$(DIST)/$(SYMBOL_ARCHIVE_BASENAME).zip'
- cd $(DIST)/crashreporter-symbols && \
- zip -r5D '../$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip' . -i '*.sym'
+ $(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')
ifdef MOZ_CRASHREPORTER
buildsymbols: symbolsfullarchive symbolsarchive
else
buildsymbols:
endif
uploadsymbols:
new file mode 100644
--- /dev/null
+++ b/python/mozbuild/mozbuild/action/symbols_archive.py
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# 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/.
+
+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
+
+def make_archive(archive_name, base, exclude, include):
+ finder = FileFinder(base, ignore=exclude)
+ if not include:
+ include = ['*']
+
+ 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)
+
+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')
+
+ args = parser.parse_args(argv)
+
+ make_archive(args.archive, args.base, args.exclude, args.include)
+
+if __name__ == '__main__':
+ main(sys.argv[1:])