Bug 1376550 - Make OSX complete.mar's generated via ./mach repackage mozharness configs r=aki
authorJustin Wood <Callek@gmail.com>
Tue, 27 Jun 2017 14:26:16 -0700
changeset 601441 19f13a4e5272de41f21bf3bd8bbd8fbb6718651f
parent 601440 f98b5c33cecccc780ed8743f1ea3125105cbed0a
child 601442 3e2a17000eec914a7ab5c31fa4c877d3a84fa843
push id66056
push userCallek@gmail.com
push dateWed, 28 Jun 2017 19:19:30 +0000
reviewersaki
bugs1376550
milestone56.0a1
Bug 1376550 - Make OSX complete.mar's generated via ./mach repackage mozharness configs r=aki Support OSX Signed nightlies (in the complete.mar too) MozReview-Commit-ID: 6iPrPhjj34g
testing/mozharness/configs/repackage/osx_signed.py
testing/mozharness/scripts/repackage.py
--- a/testing/mozharness/configs/repackage/osx_signed.py
+++ b/testing/mozharness/configs/repackage/osx_signed.py
@@ -1,22 +1,29 @@
 import os
 
 config = {
     "input_home": "{abs_work_dir}/inputs",
+    "output_home": "{abs_work_dir}/artifacts",
     "src_mozconfig": "browser/config/mozconfigs/macosx64/repack",
 
     "download_config": {
         "target.tar.gz": os.environ.get("SIGNED_INPUT"),
+        "mar": os.environ.get("UNSIGNED_MAR"),
     },
 
     "repackage_config": [[
         "dmg",
         "-i", "{abs_work_dir}/inputs/target.tar.gz",
         "-o", "{output_home}/target.dmg"
+    ], [
+        "mar",
+        "-i", "{abs_work_dir}/inputs/target.tar.gz",
+        "--mar", "{abs_work_dir}/inputs/mar",
+        "-o", "{output_home}/target.complete.mar"
     ]],
 
     # ToolTool
     "tooltool_manifest_src": 'browser/config/tooltool-manifests/macosx64/cross-releng.manifest',
     "tooltool_url": 'http://relengapi/tooltool/',
     'tooltool_script': ["/builds/tooltool.py"],
     'tooltool_cache': os.environ.get('TOOLTOOL_CACHE'),
 }
--- a/testing/mozharness/scripts/repackage.py
+++ b/testing/mozharness/scripts/repackage.py
@@ -32,32 +32,37 @@ class Repackage(BaseScript):
 
         for path, url in config["download_config"].items():
             status = self.download_file(url=url,
                                         file_name=path,
                                         parent_dir=input_home)
             if not status:
                 self.fatal("Unable to fetch signed input from %s" % url)
 
+            if 'mar' in path:
+                # Ensure mar is executable
+                self.chmod(os.path.join(input_home, path), 0755)
+
     def setup(self):
         self._run_tooltool()
         self._get_mozconfig()
         self._run_configure()
 
     def query_abs_dirs(self):
         if self.abs_dirs:
             return self.abs_dirs
         abs_dirs = super(Repackage, self).query_abs_dirs()
+        config = self.config
         for directory in abs_dirs:
             value = abs_dirs[directory]
             abs_dirs[directory] = value
         dirs = {}
         dirs['abs_tools_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'tools')
         dirs['abs_mozilla_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'src')
-        dirs['output_home'] = os.path.join(abs_dirs['abs_work_dir'], 'artifacts')
+        dirs['output_home'] = config['output_home'].format(**abs_dirs)
         for key in dirs.keys():
             if key not in abs_dirs:
                 abs_dirs[key] = dirs[key]
         self.abs_dirs = abs_dirs
         return self.abs_dirs
 
     def repackage(self):
         config = self.config