Bug 1381577 - Part O; Run mach repackage for windows nightlies. r=kmoir

Land date changes to support windows nightlies onto central

This patch also allows us to not reconfigure to run repackage on windows, which saves us both in potential pain points and execution time.

MozReview-Commit-ID: xnz98Z5N06

--HG--
extra : rebase_source : 1630a3b6b646a83abeb05000e77e0e3c3238250b
This commit is contained in:
Justin Wood 2017-07-18 12:13:31 -04:00
Родитель e83e83cb07
Коммит 35d5b6cee5
6 изменённых файлов: 144 добавлений и 5 удалений

Просмотреть файл

@ -15,3 +15,5 @@ kind-dependencies:
only-for-build-platforms:
- macosx64-nightly/opt
- win32-nightly/opt
- win64-nightly/opt

Просмотреть файл

@ -78,6 +78,7 @@ JOB_NAME_WHITELIST = set([
'win32-add-on-devel',
'win32-clang-tidy',
'win32-debug',
'win32-nightly-repackage',
'win32-noopt-debug',
'win32-opt',
'win32-pgo',

Просмотреть файл

@ -138,14 +138,17 @@ def make_job_description(config, jobs):
signing_task_ref, locale=locale),
'artifacts': _generate_task_output_files(build_platform, locale=locale),
'chain-of-trust': True,
'max-run-time': 3600,
'max-run-time': 7200 if build_platform.startswith('win') else 3600,
}
if locale:
# Make sure we specify the locale-specific upload dir
worker['env'].update(LOCALE=locale)
if build_platform.startswith('macosx'):
if build_platform.startswith('win'):
worker_type = 'aws-provisioner-v1/gecko-%s-b-win2012' % level
run['use-magic-mh-args'] = False
elif build_platform.startswith('macosx'):
worker_type = 'aws-provisioner-v1/gecko-%s-b-macosx64' % level
run['tooltool-downloads'] = 'internal'
@ -174,6 +177,9 @@ def make_job_description(config, jobs):
def _generate_task_mozharness_config(build_platform):
if build_platform.startswith('macosx'):
return ['repackage/osx_signed.py']
elif build_platform.startswith('win'):
return ['repackage/win32_signed.py'] if '32' in build_platform \
else ['repackage/win64_signed.py']
else:
raise NotImplemented('Unsupported build_platform: "{}"'.format(build_platform))
@ -187,6 +193,20 @@ def _generate_task_env(build_platform, build_task_ref, signing_task_ref, locale=
'SIGNED_INPUT': {'task-reference': '{}target.tar.gz'.format(signed_prefix)},
'UNSIGNED_MAR': {'task-reference': '{}mar'.format(mar_prefix)},
}
elif build_platform.startswith('win'):
task_env = {
'SIGNED_ZIP': {'task-reference': '{}target.zip'.format(signed_prefix)},
'SIGNED_SETUP': {'task-reference': '{}setup.exe'.format(signed_prefix)},
'UNSIGNED_MAR': {'task-reference': '{}mar.exe'.format(mar_prefix)},
}
# Stub installer is only generated on win32
if '32' in build_platform:
task_env['SIGNED_SETUP_STUB'] = {
'task-reference': '{}setup-stub.exe'.format(signed_prefix),
}
return task_env
else:
raise NotImplemented('Unsupported build_platform: "{}"'.format(build_platform))
@ -212,5 +232,25 @@ def _generate_task_output_files(build_platform, locale=None):
.format(locale_output_path),
'name': 'public/build/{}target.complete.mar'.format(locale_output_path),
}]
elif build_platform.startswith('win'):
output_files = [{
'type': 'file',
'path': 'public/build/{}target.installer.exe'.format(locale_output_path),
'name': 'public/build/{}target.installer.exe'.format(locale_output_path),
}, {
'type': 'file',
'path': 'public/build/{}target.complete.mar'.format(locale_output_path),
'name': 'public/build/{}target.complete.mar'.format(locale_output_path),
}]
# Stub installer is only generated on win32
if '32' in build_platform:
output_files.append({
'type': 'file',
'path': 'public/build/{}target.stub-installer.exe'.format(locale_output_path),
'name': 'public/build/{}target.stub-installer.exe'.format(locale_output_path),
})
return output_files
else:
raise NotImplemented('Unsupported build_platform: "{}"'.format(build_platform))

Просмотреть файл

@ -0,0 +1,51 @@
import os
import sys
platform = "win32"
download_config = {
"target.zip": os.environ.get("SIGNED_ZIP"),
"setup.exe": os.environ.get("SIGNED_SETUP"),
"mar.exe": os.environ.get("UNSIGNED_MAR"),
# stub installer is only built on win32
"setup-stub.exe": os.environ.get("SIGNED_SETUP_STUB"),
}
repackage_config = [[
"installer",
"--package", "{abs_work_dir}\\inputs\\target.zip",
"--tag", "{abs_mozilla_dir}\\browser\\installer\\windows\\app.tag",
"--setupexe", "{abs_work_dir}\\inputs\\setup.exe",
"-o", "{output_home}\\target.installer.exe"
], [
"mar",
"-i", "{abs_work_dir}\\inputs\\target.zip",
"--mar", "{abs_work_dir}\\inputs\\mar.exe",
"-o", "{output_home}\\target.complete.mar"
], [
"installer",
"--tag", "{abs_mozilla_dir}\\browser\\installer\\windows\\stub.tag",
"--setupexe", "{abs_work_dir}\\inputs\\setup-stub.exe",
"-o", "{output_home}\\target.stub-installer.exe"
]]
config = {
"input_home": "{abs_work_dir}\\inputs",
"output_home": "{base_work_dir}\\public\\build{locale}",
"src_mozconfig": "browser/config/mozconfigs/{}/repack".format(platform),
"locale": os.environ.get("LOCALE"),
"download_config": download_config,
"repackage_config": repackage_config,
# ToolTool
"tooltool_manifest_src": 'browser\\config\\tooltool-manifests\\{}\\releng.manifest'.format(platform),
'tooltool_url': 'https://api.pub.build.mozilla.org/tooltool/',
'tooltool_script': [sys.executable,
'C:/mozilla-build/tooltool.py'],
'tooltool_cache': os.environ.get('TOOLTOOL_CACHE'),
'run_configure': False,
}

Просмотреть файл

@ -0,0 +1,44 @@
import os
import sys
platform = "win64"
download_config = {
"target.zip": os.environ.get("SIGNED_ZIP"),
"setup.exe": os.environ.get("SIGNED_SETUP"),
"mar.exe": os.environ.get("UNSIGNED_MAR"),
}
repackage_config = [[
"installer",
"--package", "{abs_work_dir}\\inputs\\target.zip",
"--tag", "{abs_mozilla_dir}\\browser\\installer\\windows\\app.tag",
"--setupexe", "{abs_work_dir}\\inputs\\setup.exe",
"-o", "{output_home}\\target.installer.exe"
], [
"mar",
"-i", "{abs_work_dir}\\inputs\\target.zip",
"--mar", "{abs_work_dir}\\inputs\\mar.exe",
"-o", "{output_home}\\target.complete.mar"
]]
config = {
"input_home": "{abs_work_dir}\\inputs",
"output_home": "{base_work_dir}\\public\\build{locale}",
"src_mozconfig": "browser/config/mozconfigs/{}/repack".format(platform),
"locale": os.environ.get("LOCALE"),
"download_config": download_config,
"repackage_config": repackage_config,
# ToolTool
"tooltool_manifest_src": 'browser\\config\\tooltool-manifests\\{}\\releng.manifest'.format(platform),
'tooltool_url': 'https://api.pub.build.mozilla.org/tooltool/',
'tooltool_script': [sys.executable,
'C:/mozilla-build/tooltool.py'],
'tooltool_cache': os.environ.get('TOOLTOOL_CACHE'),
'run_configure': False,
}

Просмотреть файл

@ -43,8 +43,9 @@ class Repackage(BaseScript):
def setup(self):
self._run_tooltool()
self._get_mozconfig()
self._run_configure()
if self.config.get("run_configure", True):
self._get_mozconfig()
self._run_configure()
def query_abs_dirs(self):
if self.abs_dirs:
@ -54,6 +55,7 @@ class Repackage(BaseScript):
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')
@ -61,7 +63,6 @@ class Repackage(BaseScript):
if config.get('locale'):
locale_dir = "{}{}".format(os.path.sep, config['locale'])
dirs['output_home'] = config['output_home'].format(locale=locale_dir, **abs_dirs)
for key in dirs.keys():
if key not in abs_dirs:
abs_dirs[key] = dirs[key]