blob: 1f8559238d27c764fc23a6fc61961608cb24f214 [file] [log] [blame]
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
DEPS = [
'depot_tools/bot_update',
'depot_tools/gclient',
'recipe_engine/context',
'recipe_engine/file',
'recipe_engine/path',
'recipe_engine/platform',
'recipe_engine/properties',
'recipe_engine/python',
'recipe_engine/step',
]
def RunSteps(api):
builder_name = api.properties.get('buildername')
gyp_defines = ['component=static_library', 'linux_strip_binary=1']
if '-win-' in builder_name:
gyp_defines.append('fastbuild=1')
if '-ia32-' in builder_name:
gyp_defines.append('target_arch=ia32')
if '-x64-' in builder_name:
gyp_defines.append('target_arch=x64')
api.gclient.set_config('dart') # There is no 'dartium' configuration
s = api.gclient.c.solutions[0]
s.name = 'src/dart'
s.url = ('https://chromium.googlesource.com/external/github.com/' +
'dart-lang/sdk.git')
s.deps_file = 'tools/deps/dartium.deps/DEPS'
s.managed = False
s.revision = api.properties.get('revision')
api.gclient.c.with_branch_heads = True
api.bot_update.ensure_checkout()
# 'clobber' is the empty string when true, so check with 'in'
if 'clobber' in api.properties or '-inc-' not in builder_name:
build_dir = api.path.abspath(api.path['start_dir'].join('src/out'))
api.file.rmtree('clobber', build_dir)
with api.context(env={
'GYP_GENERATORS': 'ninja',
'GYP_DEFINES': ' '.join(gyp_defines),
'GYP_MSVS_VERSION': '2013'}):
api.gclient.runhooks()
api.gclient.c.got_revision_mapping.pop('src', None)
api.gclient.c.got_revision_mapping['src/dart'] = 'got_revision'
# gclient api sets Path('[CHECKOUT]') to build/src/dart. We prefer build/src.
api.path['checkout'] = api.path['start_dir'].join('src')
with api.context(cwd=api.path['checkout']):
api.python(
'taskkill before building',
api.path['checkout'].join('dart', 'tools', 'task_kill.py'),
args=['--kill_browsers=True'],
ok_ret='any')
with api.context(env={
'GYP_GENERATORS': 'ninja',
'GYP_DEFINES': ' '.join(gyp_defines)}):
api.python(
'build dartium',
api.path['checkout'].join('dart', 'tools', 'dartium', 'build.py'),
args=['--mode=Release'])
with api.step.defer_results():
api.python(
'annotated steps',
api.path['checkout'].join(
'dart', 'tools', 'dartium', 'buildbot_annotated_steps.py'),
allow_subannotations=True)
api.python(
'taskkill after building',
api.path['checkout'].join('dart', 'tools', 'task_kill.py'),
args=['--kill_browsers=True'],
ok_ret='any')
def GenTests(api):
yield (
api.test('dartium-win-ia32-inc-be') +
api.properties.generic(
mastername='client.dart',
buildername='dartium-win-ia32-inc-be',
revision='12345',
clobber='') +
api.platform('win', 32))
yield (
api.test('dartium-linux-x64-dev') +
api.properties.generic(
mastername='client.dart',
buildername='dartium-linux-x64-dev',
revision='12345') +
api.platform('linux', 64))
yield (
api.test('dartium-mac-ia32-inc-stable') +
api.properties.generic(
mastername='client.dart',
buildername='dartium-mac-ia32-inc-stable',
revision='12345') +
api.platform('mac', 32))