| # Copyright 2017 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', |
| 'depot_tools/gsutil', |
| 'recipe_engine/context', |
| 'recipe_engine/file', |
| 'recipe_engine/path', |
| 'recipe_engine/platform', |
| 'recipe_engine/properties', |
| 'recipe_engine/python', |
| 'recipe_engine/step', |
| 'test_utils', |
| 'zip', |
| ] |
| |
| build_directories= {'linux': 'out/ReleaseX64', |
| 'win': 'out/ReleaseX64', |
| 'mac': 'xcodebuild/ReleaseX64'} |
| |
| def sdk_url(channel, platform, arch, mode, revision): |
| platforms = { |
| 'linux': 'linux', |
| 'win': 'windows', |
| 'mac': 'macos', |
| } |
| platform = platforms[platform] |
| # The paths here come from dart-lang/sdk/tools/bots/bot_utils.py |
| return ('gs://dart-archive/channels/%s/raw/hash/%s/sdk/dartsdk-%s-%s-%s.zip' |
| % (channel, revision, platform, arch, mode)) |
| |
| def RunSteps(api): |
| builder_name = api.properties.get('buildername') |
| builder_fragments = builder_name.split('-') |
| assert len(builder_fragments) > 2 |
| builder = builder_fragments[0] |
| system = builder_fragments[1] |
| assert system in ['linux', 'mac', 'win'] |
| assert system == api.platform.name |
| channel = builder_fragments[-1] |
| assert channel in ['be', 'dev', 'stable', 'integration'] |
| |
| api.gclient.set_config('dart') |
| api.path.c.dynamic_paths['tools'] = None |
| api.bot_update.ensure_checkout() |
| api.path['tools'] = api.path['checkout'].join('tools') |
| revision = api.properties['revision'] |
| |
| api.gclient.runhooks() |
| |
| with api.context(cwd=api.path['checkout']): |
| api.python('taskkill before building', |
| api.path['checkout'].join('tools', 'task_kill.py'), |
| args=['--kill_browsers=True'], |
| ok_ret='any') |
| zipfile = api.path.abspath(api.path['checkout'].join('sdk.zip')) |
| url = sdk_url(channel, api.platform.name, 'x64', 'release', revision) |
| api.gsutil(['cp', url, zipfile], name='Download sdk') |
| build_dir = api.path['checkout'].join(build_directories[api.platform.name]) |
| build_dir = api.path.abspath(build_dir) |
| api.file.ensure_directory('Create build directory', build_dir) |
| api.file.rmtree('Clean build directory', build_dir) |
| api.zip.unzip('Unzip sdk', zipfile, build_dir) |
| |
| if builder == 'analyze': |
| with api.step.defer_results(): |
| with api.context(cwd=api.path['checkout']): |
| dartanalyzer_name = 'dartanalyzer' |
| if api.platform.name == 'win': |
| dartanalyzer_name = 'dartanalyzer.bat' |
| dartanalyzer = api.path['checkout'].join( |
| build_directories[api.platform.name], |
| 'dart-sdk', 'bin', dartanalyzer_name) |
| api.step('analyze analysis_server', |
| [dartanalyzer, "--no-hints", "pkg/analysis_server"]) |
| api.step('analyze analyzer', |
| [dartanalyzer, "--no-hints", "pkg/analyzer"]) |
| api.step('analyze analyzer_plugin', |
| [dartanalyzer, "--no-hints", "pkg/analyzer_plugin"]) |
| |
| with api.context(cwd=api.path['checkout']): |
| api.python('taskkill after testing', |
| api.path['checkout'].join('tools', 'task_kill.py'), |
| args=['--kill_browsers=True'], |
| ok_ret='any') |
| |
| def GenTests(api): |
| yield ( |
| api.test('analyze-linux-be') + |
| api.platform('linux', 64) + |
| api.properties.generic( |
| mastername='client.dart.fyi', |
| buildername='analyze-linux-be', |
| revision='hash_of_revision')) |
| yield ( |
| api.test('analyze-win-dev') + api.platform('win', 32) + |
| api.properties.generic( |
| mastername='client.dart', |
| buildername='analyze-win-dev', |
| revision='hash_of_revision')) |