blob: b86103dc3f8e832edab866d612295b652eceb0c4 [file]
# 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.
from dataclasses import dataclass
from recipe_engine.recipe_api import RecipeScriptApi
from recipe_engine.recipe_test_api import RecipeTestApi
from RECIPE_MODULES.build import (
builder_group,
chromium,
chromium_checkout,
siso,
webrtc,
)
from RECIPE_MODULES.depot_tools import gclient, tryserver
from RECIPE_MODULES.recipe_engine import (
buildbucket,
platform,
properties,
step,
)
@dataclass
class DEPS(RecipeScriptApi):
buildbucket: buildbucket.API
builder_group: builder_group.API
chromium: chromium.API
chromium_checkout: chromium_checkout.API
gclient: gclient.API
platform: platform.API
properties: properties.API
siso: siso.API
step: step.API
tryserver: tryserver.API
webrtc: webrtc.API
@dataclass
class TEST_DEPS(RecipeTestApi):
buildbucket: buildbucket.TEST_API
builder_group: builder_group.TEST_API
platform: platform.TEST_API
properties: properties.TEST_API
siso: siso.TEST_API
def RunSteps(api: DEPS):
api.gclient.set_config('webrtc_ios')
update_result = api.chromium_checkout.ensure_checkout()
api.gclient.runhooks()
api.chromium.set_config(
'webrtc_default', TARGET_PLATFORM='ios', HOST_PLATFORM='mac'
)
api.chromium.apply_config('mac_toolchain')
api.chromium.ensure_toolchains(update_result.checkout_dir)
source_dir = update_result.source_root.path
build_script = source_dir.joinpath('tools_webrtc', 'ios', 'build_ios_libs.py')
cmd = ['vpython3', '-u', build_script, '--verbose', '--use-remoteexec']
if not api.tryserver.is_tryserver:
api.step('cleanup', [build_script, '-c'])
cmd += ['-r', api.webrtc.revision_number]
with api.siso.context():
api.step('build', cmd)
output_dir = source_dir / 'out_ios_libs'
api.webrtc.get_binary_sizes(
files=['WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC'],
build_dir=output_dir,
)
def GenTests(api: TEST_DEPS):
yield api.test(
'build_ok',
api.platform('mac', 64),
api.builder_group.for_current('client.webrtc'),
api.buildbucket.generic_build(builder='iOS API Framework Builder'),
api.properties(xcode_build_version='dummy_xcode'),
api.siso.properties(),
)
yield api.test(
'build_failure',
api.platform('mac', 64),
api.builder_group.for_current('client.webrtc'),
api.buildbucket.generic_build(builder='iOS API Framework Builder'),
api.properties(xcode_build_version='dummy_xcode'),
api.step_data('build', retcode=1),
api.siso.properties(),
status='FAILURE',
)
yield api.test(
'trybot_build',
api.platform('mac', 64),
api.builder_group.for_current('tryserver.webrtc'),
api.buildbucket.try_build(builder='ios_api_framework'),
api.properties(
xcode_build_version='dummy_xcode',
gerrit_url='https://webrtc-review.googlesource.com',
gerrit_project='src',
),
api.siso.properties(),
)