summaryrefslogtreecommitdiff
path: root/utils/create_xpi.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/create_xpi.py')
-rwxr-xr-xutils/create_xpi.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/utils/create_xpi.py b/utils/create_xpi.py
new file mode 100755
index 0000000..e14cd49
--- /dev/null
+++ b/utils/create_xpi.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python2.7
+
+# Uses the Python zip implementation to create deterministic XPI's
+# Author: Yan Zhu, yan@mit.edu
+
+"""
+Usage: python create_xpi.py -x <exclusions> -n <name of zipped file> <directory>
+"""
+
+import argparse
+import zipfile_deterministic as zipfile
+import sys
+import glob
+
+parser = argparse.ArgumentParser(
+ description="Deterministic XPI file creator.")
+parser.add_argument("-x", type=str, nargs="?",
+ dest="exclusions", metavar="File with file pattern exclusions",
+ default=".build_exclusions", help="Excluded file patterns.")
+parser.add_argument("-n", type=str,
+ dest="xpiname", help="Name of target XPI file.")
+parser.add_argument("directory", type=str,
+ help="Directory to compress.")
+
+args = parser.parse_args()
+
+exclusions = []
+with open(args.exclusions) as f:
+ for line in f:
+ exclusions.extend(glob.glob(line.strip()))
+exclusions = map(lambda x: './'+x, exclusions)
+
+compress = zipfile.ZIP_DEFLATED
+
+xpiFile = zipfile.ZipFile(args.xpiname, mode='w', compression=compress)
+
+xpiFile.write_from_directory(args.directory, exclusions, compress_type=compress)
+xpiFile.close()