| # Copyright 2018 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. |
| |
| """Recipe for building and running tests for Open Screen stand-alone.""" |
| |
| DEPS = [ |
| 'depot_tools/depot_tools', |
| 'depot_tools/git', |
| 'depot_tools/osx_sdk', |
| 'goma', |
| 'recipe_engine/context', |
| 'recipe_engine/path', |
| 'recipe_engine/platform', |
| 'recipe_engine/properties', |
| 'recipe_engine/step', |
| ] |
| |
| BUILD_CONFIG = 'Default' |
| # TODO: Remove 'hello' when 'gn_all' successfully builds. |
| BUILD_TARGET = ['hello', 'gn_all', 'demo', 'unittests'] |
| OPENSCREEN_REPO = 'https://chromium.googlesource.com/openscreen' |
| |
| |
| def _GetHostToolLabel(platform): |
| if platform.is_linux and platform.bits == 64: |
| return 'linux64' |
| elif platform.is_mac: |
| return 'mac' |
| raise ValueError('unknown or unsupported platform') # pragma: no cover |
| |
| |
| def RunSteps(api): |
| build_root = api.path['start_dir'] |
| openscreen_root = build_root.join('openscreen') |
| repository = api.properties['repository'] |
| ref = api.properties.get('patch_ref', None) |
| is_debug = api.properties.get('debug', False) |
| api.git.checkout( |
| repository, dir_path=openscreen_root, ref=ref, recursive=True) |
| api.goma.ensure_goma() |
| checkout_path = api.path['checkout'] |
| output_path = checkout_path.join('out', BUILD_CONFIG) |
| with api.context(cwd=checkout_path): |
| api.step('install build tools', |
| [checkout_path.join('tools', 'install-build-tools.sh'), |
| _GetHostToolLabel(api.platform)]) |
| api.step('gn gen', |
| [checkout_path.join('gn'), 'gen', output_path, |
| '--args=is_debug=' + str(is_debug).lower()]) |
| # NOTE: The following just runs Ninja without setting up the Mac toolchain |
| # if this is being run on a non-Mac platform. |
| with api.osx_sdk('mac'): |
| ninja_cmd = [api.depot_tools.ninja_path, '-C', output_path, |
| '-j', api.goma.recommended_goma_jobs] + BUILD_TARGET |
| api.goma.build_with_goma( |
| name='compile', |
| ninja_command=ninja_cmd, |
| ninja_log_outdir=output_path) |
| api.step('Run unit tests', [output_path.join('unittests')]) |
| |
| |
| def GenTests(api): |
| yield ( |
| api.test('linux64_debug') + |
| api.platform('linux', 64) + |
| api.properties( |
| repository=OPENSCREEN_REPO, |
| patch_ref='refs/changes/123/456/1', |
| debug=True |
| ) |
| ) |
| yield ( |
| api.test('mac_debug') + |
| api.platform('mac', 64) + |
| api.properties( |
| repository=OPENSCREEN_REPO, |
| patch_ref='refs/changes/123/456/1', |
| debug=True |
| ) |
| ) |