Bug 1347579 - run configure before doing repack. r=aki
MozReview-Commit-ID: 4uBwqwtN3i0
new file mode 100644
--- /dev/null
+++ b/browser/config/mozconfigs/macosx64/repack
@@ -0,0 +1,7 @@
+# This mozconfig is responsible merely for getting the cross tools setup
+# for repacking a .tar into a .dmg as returned from signing.
+
+export MKFSHFS=$topsrcdir/hfsplus-tools/newfs_hfs
+export DMG_TOOL=$topsrcdir/dmg/dmg
+export HFS_TOOL=$topsrcdir/dmg/hfsplus
+ac_add_options --disable-compile-environment
--- a/testing/mozharness/configs/repackage/osx_signed.py
+++ b/testing/mozharness/configs/repackage/osx_signed.py
@@ -1,19 +1,15 @@
import os
config = {
"input_filename": "target.tar.gz",
"output_filename": "target.dmg",
"input_home": "/home/worker/workspace/inputs",
+ "src_mozconfig": "browser/config/mozconfigs/macosx64/repack",
# ToolTool
"tooltool_manifest_src": 'browser/config/tooltool-manifests/macosx64/cross-releng.manifest',
"tooltool_url": 'http://relengapi/tooltool/',
"tooltool_bootstrap": "setup.sh",
'tooltool_script': ["/builds/tooltool.py"],
'tooltool_cache': os.environ.get('TOOLTOOL_CACHE'),
-
- # Tools to pack a DMG
- "hfs_tool": "dmg/hfsplus",
- "dmg_tool": "dmg/dmg",
- "mkfshfs_tool": "hfsplus-tools/newfs_hfs",
}
--- a/testing/mozharness/scripts/repackage.py
+++ b/testing/mozharness/scripts/repackage.py
@@ -1,13 +1,14 @@
import os
import sys
sys.path.insert(1, os.path.dirname(sys.path[0])) # noqa - don't warn about imports
+from mozharness.base.log import FATAL
from mozharness.base.script import BaseScript
from mozharness.mozilla.mock import ERROR_MSGS
class Repackage(BaseScript):
config_options = [[
['--signed-input', ],
@@ -50,16 +51,18 @@ class Repackage(BaseScript):
status = self.download_file(url=url,
file_name=config['input_filename'],
parent_dir=config['input_home'])
if not status:
self.fatal("Unable to fetch signed input from %s" % config['signed_input'])
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()
for directory in abs_dirs:
value = abs_dirs[directory]
abs_dirs[directory] = value
@@ -73,28 +76,22 @@ class Repackage(BaseScript):
return self.abs_dirs
def repackage(self):
config = self.config
dirs = self.query_abs_dirs()
python = self.query_exe('python2.7')
infile = os.path.join(config['input_home'], config['input_filename'])
outfile = os.path.join(dirs['abs_upload_dir'], config['output_filename'])
- env = {
- 'HFS_TOOL': os.path.join(dirs['abs_mozilla_dir'], config['hfs_tool']),
- 'DMG_TOOL': os.path.join(dirs['abs_mozilla_dir'], config['dmg_tool']),
- 'MKFSHFS': os.path.join(dirs['abs_mozilla_dir'], config['mkfshfs_tool'])
- }
command = [python, 'mach', '--log-no-times', 'repackage',
'--input', infile,
'--output', outfile]
return self.run_command(
command=command,
cwd=dirs['abs_mozilla_dir'],
- partial_env=env,
halt_on_failure=True,
)
def _run_tooltool(self):
config = self.config
dirs = self.query_abs_dirs()
if not config.get('tooltool_manifest_src'):
return self.warning(ERROR_MSGS['tooltool_manifest_undetermined'])
@@ -111,12 +108,43 @@ class Repackage(BaseScript):
]
cmd.extend(config['tooltool_script'])
cache = config.get('tooltool_cache')
if cache:
cmd.extend(['-c', cache])
self.info(str(cmd))
self.run_command(cmd, cwd=dirs['abs_mozilla_dir'], halt_on_failure=True)
+ def _get_mozconfig(self):
+ """assign mozconfig."""
+ c = self.config
+ dirs = self.query_abs_dirs()
+ abs_mozconfig_path = ''
+
+ # first determine the mozconfig path
+ if c.get('src_mozconfig'):
+ self.info('Using in-tree mozconfig')
+ abs_mozconfig_path = os.path.join(dirs['abs_mozilla_dir'], c['src_mozconfig'])
+ else:
+ self.fatal("'src_mozconfig' must be in the config "
+ "in order to determine the mozconfig.")
+
+ # print its contents
+ self.read_from_file(abs_mozconfig_path, error_level=FATAL)
+
+ # finally, copy the mozconfig to a path that 'mach build' expects it to be
+ self.copyfile(abs_mozconfig_path, os.path.join(dirs['abs_mozilla_dir'], '.mozconfig'))
+
+ def _run_configure(self):
+ dirs = self.query_abs_dirs()
+ python = self.query_exe('python2.7')
+ command = [python, 'mach', '--log-no-times', 'configure']
+ return self.run_command(
+ command=command,
+ cwd=dirs['abs_mozilla_dir'],
+ output_timeout=60*3,
+ halt_on_failure=True,
+ )
+
if __name__ == '__main__':
repack = Repackage()
repack.run_and_exit()