116 lines
3.6 KiB
Python
116 lines
3.6 KiB
Python
# 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/.
|
|
"""
|
|
Support for running toolchain-building jobs via dedicated scripts
|
|
"""
|
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
from voluptuous import Schema, Required
|
|
|
|
from taskgraph.transforms.job import run_job_using
|
|
from taskgraph.transforms.job.common import (
|
|
docker_worker_add_tc_vcs_cache,
|
|
docker_worker_add_gecko_vcs_env_vars
|
|
)
|
|
|
|
toolchain_run_schema = Schema({
|
|
Required('using'): 'toolchain-script',
|
|
|
|
# the script (in taskcluster/scripts/misc) to run
|
|
Required('script'): basestring,
|
|
})
|
|
|
|
|
|
@run_job_using("docker-worker", "toolchain-script", schema=toolchain_run_schema)
|
|
def docker_worker_toolchain(config, job, taskdesc):
|
|
run = job['run']
|
|
|
|
worker = taskdesc['worker']
|
|
worker['artifacts'] = []
|
|
worker['caches'] = []
|
|
|
|
worker['artifacts'].append({
|
|
'name': 'public',
|
|
'path': '/home/worker/workspace/artifacts/',
|
|
'type': 'directory',
|
|
})
|
|
|
|
docker_worker_add_tc_vcs_cache(config, job, taskdesc)
|
|
docker_worker_add_gecko_vcs_env_vars(config, job, taskdesc)
|
|
|
|
env = worker['env']
|
|
env.update({
|
|
'MOZ_BUILD_DATE': config.params['moz_build_date'],
|
|
'MOZ_SCM_LEVEL': config.params['level'],
|
|
'TOOLS_DISABLE': 'true',
|
|
})
|
|
|
|
# tooltool downloads; note that this downloads using the API endpoint directly,
|
|
# rather than via relengapi-proxy
|
|
worker['caches'].append({
|
|
'type': 'persistent',
|
|
'name': 'tooltool-cache',
|
|
'mount-point': '/home/worker/tooltool-cache',
|
|
})
|
|
env['TOOLTOOL_CACHE'] = '/home/worker/tooltool-cache'
|
|
env['TOOLTOOL_REPO'] = 'https://github.com/mozilla/build-tooltool'
|
|
env['TOOLTOOL_REV'] = 'master'
|
|
|
|
command = ' && '.join([
|
|
"cd /home/worker/",
|
|
"./bin/checkout-sources.sh",
|
|
"./workspace/build/src/taskcluster/scripts/misc/" + run['script'],
|
|
])
|
|
worker['command'] = ["/bin/bash", "-c", command]
|
|
|
|
|
|
@run_job_using("generic-worker", "toolchain-script", schema=toolchain_run_schema)
|
|
def windows_toolchain(config, job, taskdesc):
|
|
run = job['run']
|
|
|
|
worker = taskdesc['worker']
|
|
|
|
worker['artifacts'] = [{
|
|
'path': r'public\build',
|
|
'type': 'directory',
|
|
}]
|
|
|
|
docker_worker_add_gecko_vcs_env_vars(config, job, taskdesc)
|
|
|
|
# We fetch LLVM SVN into this.
|
|
svn_cache = 'level-{}-toolchain-clang-cl-build-svn'.format(config.params['level'])
|
|
worker['mounts'] = [{
|
|
'cache-name': svn_cache,
|
|
'path': r'llvm-sources',
|
|
}]
|
|
taskdesc['scopes'].extend([
|
|
'generic-worker:cache:' + svn_cache,
|
|
])
|
|
|
|
env = worker['env']
|
|
env.update({
|
|
'MOZ_BUILD_DATE': config.params['moz_build_date'],
|
|
'MOZ_SCM_LEVEL': config.params['level'],
|
|
'TOOLTOOL_REPO': 'https://github.com/mozilla/build-tooltool',
|
|
'TOOLTOOL_REV': 'master',
|
|
})
|
|
|
|
hg = r'c:\Program Files\Mercurial\hg.exe'
|
|
hg_command = ['"{}"'.format(hg)]
|
|
hg_command.append('robustcheckout')
|
|
hg_command.extend(['--sharebase', 'y:\\hg-shared'])
|
|
hg_command.append('--purge')
|
|
hg_command.extend(['--upstream', 'https://hg.mozilla.org/mozilla-unified'])
|
|
hg_command.extend(['--revision', '%GECKO_HEAD_REV%'])
|
|
hg_command.append('%GECKO_HEAD_REPOSITORY%')
|
|
hg_command.append('.\\build\\src')
|
|
|
|
bash = r'c:\mozilla-build\msys\bin\bash'
|
|
worker['command'] = [
|
|
' '.join(hg_command),
|
|
# do something intelligent.
|
|
r'{} -c ./build/src/taskcluster/scripts/misc/{}'.format(bash, run['script'])
|
|
]
|