[recipes] Move a lot of logic out of vars module
In general, vars should only contain variables which are the same for all tasks. Variables specific to compilation belong in the build module (or compile recipe), and those specific to running tests belong in the flavor module, or the individual recipe which uses them. Bug: skia:6473 Change-Id: Ifd55a57118c5801e6f4934a6b5de9d1567415b9a Reviewed-on: https://skia-review.googlesource.com/128545 Commit-Queue: Eric Boren <borenet@google.com> Reviewed-by: Ben Wagner <benjaminwagner@google.com>
This commit is contained in:
parent
50edafacc8
commit
72f6668eb7
@ -6,7 +6,8 @@
|
||||
import re
|
||||
|
||||
|
||||
def compile_fn(api, out_dir):
|
||||
def compile_fn(api, checkout_root, out_dir):
|
||||
skia_dir = checkout_root.join('skia')
|
||||
compiler = api.vars.builder_cfg.get('compiler')
|
||||
configuration = api.vars.builder_cfg.get('configuration')
|
||||
extra_tokens = api.vars.extra_tokens
|
||||
@ -34,7 +35,7 @@ def compile_fn(api, out_dir):
|
||||
'target_cpu': quote(target_arch),
|
||||
}
|
||||
extra_cflags.append('-DDUMMY_ndk_version=%s' %
|
||||
api.run.asset_version(ndk_asset))
|
||||
api.run.asset_version(ndk_asset, skia_dir))
|
||||
|
||||
if configuration != 'Debug':
|
||||
args['is_debug'] = 'false'
|
||||
@ -59,11 +60,11 @@ def compile_fn(api, out_dir):
|
||||
gn_args = ' '.join('%s=%s' % (k,v) for (k,v) in sorted(args.iteritems()))
|
||||
gn = 'gn.exe' if 'Win' in os else 'gn'
|
||||
ninja = 'ninja.exe' if 'Win' in os else 'ninja'
|
||||
gn = api.vars.skia_dir.join('bin', gn)
|
||||
gn = skia_dir.join('bin', gn)
|
||||
|
||||
with api.context(cwd=api.vars.skia_dir):
|
||||
with api.context(cwd=skia_dir):
|
||||
api.run(api.python, 'fetch-gn',
|
||||
script=api.vars.skia_dir.join('bin', 'fetch-gn'),
|
||||
script=skia_dir.join('bin', 'fetch-gn'),
|
||||
infra_step=True)
|
||||
|
||||
# If this is the SkQP build, set up the environment and run the script
|
||||
@ -72,7 +73,7 @@ def compile_fn(api, out_dir):
|
||||
api.infra.update_go_deps()
|
||||
|
||||
output_binary = out_dir.join('run_testlab')
|
||||
build_target = api.vars.skia_dir.join('infra', 'cts', 'run_testlab.go')
|
||||
build_target = skia_dir.join('infra', 'cts', 'run_testlab.go')
|
||||
build_cmd = ['go', 'build', '-o', output_binary, build_target]
|
||||
with api.context(env=api.infra.go_env):
|
||||
api.run(api.step, 'build firebase runner', cmd=build_cmd)
|
||||
@ -88,8 +89,7 @@ def compile_fn(api, out_dir):
|
||||
'APK_OUTPUT_DIR': out_dir,
|
||||
}
|
||||
|
||||
mk_universal = api.vars.skia_dir.join('tools', 'skqp',
|
||||
'make_universal_apk')
|
||||
mk_universal = skia_dir.join('tools', 'skqp', 'make_universal_apk')
|
||||
with api.context(env=env):
|
||||
api.run(api.step, 'make_universal', cmd=[mk_universal])
|
||||
else:
|
||||
@ -99,6 +99,4 @@ def compile_fn(api, out_dir):
|
||||
|
||||
|
||||
def copy_extra_build_products(api, src, dst):
|
||||
if 'SKQP' in api.vars.extra_tokens:
|
||||
wlist = api.vars.skia_dir.join('infra','cts', 'whitelist_devices.json')
|
||||
api.file.copy('copy whitelist', wlist, dst)
|
||||
pass
|
||||
|
@ -36,13 +36,11 @@ class BuildApi(recipe_api.RecipeApi):
|
||||
self.copy_fn = default.copy_extra_build_products
|
||||
super(BuildApi, self).__init__(*args, **kwargs)
|
||||
|
||||
def __call__(self):
|
||||
def __call__(self, checkout_root, out_dir):
|
||||
"""Compile the code."""
|
||||
out_dir = self.m.vars.skia_out.join(self.m.vars.configuration)
|
||||
self.compile_fn(self.m, out_dir)
|
||||
self.compile_fn(self.m, checkout_root, out_dir)
|
||||
|
||||
def copy_build_products(self, dst):
|
||||
def copy_build_products(self, out_dir, dst):
|
||||
"""Copy whitelisted build products to dst."""
|
||||
src = self.m.vars.skia_out.join(self.m.vars.configuration)
|
||||
util.copy_whitelisted_build_products(self.m, src, dst)
|
||||
self.copy_fn(self.m, src, dst)
|
||||
util.copy_whitelisted_build_products(self.m, out_dir, dst)
|
||||
self.copy_fn(self.m, out_dir, dst)
|
||||
|
@ -3,7 +3,8 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
|
||||
def compile_fn(api, out_dir):
|
||||
def compile_fn(api, checkout_root, out_dir):
|
||||
skia_dir = checkout_root.join('skia')
|
||||
configuration = api.vars.builder_cfg.get('configuration')
|
||||
os = api.vars.builder_cfg.get('os')
|
||||
target_arch = api.vars.builder_cfg.get('target_arch')
|
||||
@ -74,7 +75,7 @@ def compile_fn(api, out_dir):
|
||||
'skia_use_egl': 'true',
|
||||
}
|
||||
extra_cflags.append('-DDUMMY_clang_linux_version=%s' %
|
||||
api.run.asset_version('clang_linux'))
|
||||
api.run.asset_version('clang_linux', skia_dir))
|
||||
|
||||
if configuration != 'Debug':
|
||||
args['is_debug'] = 'false'
|
||||
@ -86,11 +87,11 @@ def compile_fn(api, out_dir):
|
||||
|
||||
gn = 'gn.exe' if 'Win' in os else 'gn'
|
||||
ninja = 'ninja.exe' if 'Win' in os else 'ninja'
|
||||
gn = api.vars.skia_dir.join('bin', gn)
|
||||
gn = skia_dir.join('bin', gn)
|
||||
|
||||
with api.context(cwd=api.vars.skia_dir, env=env):
|
||||
with api.context(cwd=skia_dir, env=env):
|
||||
api.run(api.python, 'fetch-gn',
|
||||
script=api.vars.skia_dir.join('bin', 'fetch-gn'),
|
||||
script=skia_dir.join('bin', 'fetch-gn'),
|
||||
infra_step=True)
|
||||
api.run(api.step, 'gn gen', cmd=[gn, 'gen', out_dir, '--args=' + gn_args])
|
||||
api.run(api.step, 'ninja',
|
||||
|
@ -3,7 +3,8 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
|
||||
def compile_fn(api, out_dir):
|
||||
def compile_fn(api, checkout_root, out_dir):
|
||||
skia_dir = checkout_root.join('skia')
|
||||
configuration = api.vars.builder_cfg.get('configuration')
|
||||
os = api.vars.builder_cfg.get('os')
|
||||
target_arch = api.vars.builder_cfg.get('target_arch')
|
||||
@ -21,7 +22,7 @@ def compile_fn(api, out_dir):
|
||||
# Makes the binary small enough to fit on the small disk.
|
||||
'-g0',
|
||||
('-DDUMMY_cast_toolchain_version=%s' %
|
||||
api.run.asset_version('cast_toolchain')),
|
||||
api.run.asset_version('cast_toolchain', skia_dir)),
|
||||
]
|
||||
|
||||
extra_ldflags = [
|
||||
@ -55,11 +56,11 @@ def compile_fn(api, out_dir):
|
||||
|
||||
gn = 'gn.exe' if 'Win' in os else 'gn'
|
||||
ninja = 'ninja.exe' if 'Win' in os else 'ninja'
|
||||
gn = api.vars.skia_dir.join('bin', gn)
|
||||
gn = skia_dir.join('bin', gn)
|
||||
|
||||
with api.context(cwd=api.vars.skia_dir):
|
||||
with api.context(cwd=skia_dir):
|
||||
api.run(api.python, 'fetch-gn',
|
||||
script=api.vars.skia_dir.join('bin', 'fetch-gn'),
|
||||
script=skia_dir.join('bin', 'fetch-gn'),
|
||||
infra_step=True)
|
||||
api.run(api.step, 'gn gen', cmd=[gn, 'gen', out_dir, '--args=' + gn_args])
|
||||
api.run(api.step, 'ninja',
|
||||
|
@ -6,12 +6,12 @@
|
||||
from . import util
|
||||
|
||||
|
||||
def build_command_buffer(api):
|
||||
def build_command_buffer(api, chrome_dir, skia_dir, out):
|
||||
api.run(api.python, 'build command_buffer',
|
||||
script=api.vars.skia_dir.join('tools', 'build_command_buffer.py'),
|
||||
script=skia_dir.join('tools', 'build_command_buffer.py'),
|
||||
args=[
|
||||
'--chrome-dir', api.vars.checkout_root,
|
||||
'--output-dir', api.vars.skia_out.join(api.vars.configuration),
|
||||
'--chrome-dir', chrome_dir,
|
||||
'--output-dir', out,
|
||||
'--no-sync', '--no-hooks', '--make-output-dir'])
|
||||
|
||||
|
||||
@ -40,7 +40,8 @@ def compile_swiftshader(api, swiftshader_root, cc, cxx, out):
|
||||
cmd=['ninja', '-C', out, 'libEGL.so', 'libGLESv2.so'])
|
||||
|
||||
|
||||
def compile_fn(api, out_dir):
|
||||
def compile_fn(api, checkout_root, out_dir):
|
||||
skia_dir = checkout_root.join('skia')
|
||||
compiler = api.vars.builder_cfg.get('compiler', '')
|
||||
configuration = api.vars.builder_cfg.get('configuration', '')
|
||||
extra_tokens = api.vars.extra_tokens
|
||||
@ -69,7 +70,7 @@ def compile_fn(api, out_dir):
|
||||
extra_ldflags.append('-B%s/bin' % clang_linux)
|
||||
extra_ldflags.append('-fuse-ld=lld')
|
||||
extra_cflags.append('-DDUMMY_clang_linux_version=%s' %
|
||||
api.run.asset_version('clang_linux'))
|
||||
api.run.asset_version('clang_linux', skia_dir))
|
||||
if os == 'Ubuntu14':
|
||||
extra_ldflags.extend(['-static-libstdc++', '-static-libgcc'])
|
||||
|
||||
@ -89,7 +90,7 @@ def compile_fn(api, out_dir):
|
||||
'-Wno-format-truncation',
|
||||
'-Wno-uninitialized',
|
||||
('-DDUMMY_mips64el_toolchain_linux_version=%s' %
|
||||
api.run.asset_version('mips64el_toolchain_linux'))
|
||||
api.run.asset_version('mips64el_toolchain_linux', skia_dir))
|
||||
])
|
||||
if configuration == 'Release':
|
||||
# This warning is only triggered when fuzz_canvas is inlined.
|
||||
@ -106,7 +107,7 @@ def compile_fn(api, out_dir):
|
||||
cxx = emscripten_sdk + '/emscripten/incoming/em++'
|
||||
extra_cflags.append('-Wno-unknown-warning-option')
|
||||
extra_cflags.append('-DDUMMY_emscripten_sdk_version=%s' %
|
||||
api.run.asset_version('emscripten_sdk'))
|
||||
api.run.asset_version('emscripten_sdk', skia_dir))
|
||||
if 'Coverage' in extra_tokens:
|
||||
# See https://clang.llvm.org/docs/SourceBasedCodeCoverage.html for
|
||||
# more info on using llvm to gather coverage information.
|
||||
@ -139,8 +140,7 @@ def compile_fn(api, out_dir):
|
||||
if 'ANGLE' in extra_tokens:
|
||||
args['skia_use_angle'] = 'true'
|
||||
if 'SwiftShader' in extra_tokens:
|
||||
swiftshader_root = api.vars.skia_dir.join('third_party', 'externals',
|
||||
'swiftshader')
|
||||
swiftshader_root = skia_dir.join('third_party', 'externals', 'swiftshader')
|
||||
swiftshader_out = out_dir.join('swiftshader_out')
|
||||
compile_swiftshader(api, swiftshader_root, cc, cxx, swiftshader_out)
|
||||
args['skia_use_egl'] = 'true'
|
||||
@ -154,7 +154,8 @@ def compile_fn(api, out_dir):
|
||||
'-L%s' % swiftshader_out,
|
||||
])
|
||||
if 'CommandBuffer' in extra_tokens:
|
||||
api.run.run_once(build_command_buffer, api)
|
||||
chrome_dir = checkout_root
|
||||
api.run.run_once(build_command_buffer, api, chrome_dir, skia_dir, out_dir)
|
||||
if 'MSAN' in extra_tokens:
|
||||
args['skia_enable_gpu'] = 'false'
|
||||
args['skia_use_fontconfig'] = 'false'
|
||||
@ -215,7 +216,7 @@ def compile_fn(api, out_dir):
|
||||
if compiler == 'Clang' and 'Win' in os:
|
||||
args['clang_win'] = '"%s"' % api.vars.slave_dir.join('clang_win')
|
||||
extra_cflags.append('-DDUMMY_clang_win_version=%s' %
|
||||
api.run.asset_version('clang_win'))
|
||||
api.run.asset_version('clang_win', skia_dir))
|
||||
if target_arch == 'wasm':
|
||||
args.update({
|
||||
'skia_use_freetype': 'false',
|
||||
@ -253,18 +254,18 @@ def compile_fn(api, out_dir):
|
||||
|
||||
gn = 'gn.exe' if 'Win' in os else 'gn'
|
||||
ninja = 'ninja.exe' if 'Win' in os else 'ninja'
|
||||
gn = api.vars.skia_dir.join('bin', gn)
|
||||
gn = skia_dir.join('bin', gn)
|
||||
|
||||
with api.context(cwd=api.vars.skia_dir):
|
||||
with api.context(cwd=skia_dir):
|
||||
api.run(api.python,
|
||||
'fetch-gn',
|
||||
script=api.vars.skia_dir.join('bin', 'fetch-gn'),
|
||||
script=skia_dir.join('bin', 'fetch-gn'),
|
||||
infra_step=True)
|
||||
if 'CheckGeneratedFiles' in extra_tokens:
|
||||
env['PATH'] = '%s:%%(PATH)s' % api.vars.skia_dir.join('bin')
|
||||
env['PATH'] = '%s:%%(PATH)s' % skia_dir.join('bin')
|
||||
api.run(api.python,
|
||||
'fetch-clang-format',
|
||||
script=api.vars.skia_dir.join('bin', 'fetch-clang-format'),
|
||||
script=skia_dir.join('bin', 'fetch-clang-format'),
|
||||
infra_step=True)
|
||||
if target_arch == 'wasm':
|
||||
fastcomp = emscripten_sdk + '/clang/fastcomp/build_incoming_64/bin'
|
||||
|
@ -141,20 +141,6 @@
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"[START_DIR]/cache/work/skia/infra/cts/whitelist_devices.json",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/devrel"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "copy whitelist"
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
|
@ -30,7 +30,7 @@
|
||||
"cmd": [
|
||||
"ninja",
|
||||
"-C",
|
||||
"out/android_release",
|
||||
"[START_DIR]/cache/work/flutter/src/out/android_release",
|
||||
"-j100"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/flutter/src",
|
||||
@ -45,7 +45,7 @@
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
|
||||
"[START_DIR]/cache/work/flutter/src/third_party/skia/out/Build-Debian9-GCC-x86_64-Release-Flutter_Android/Release",
|
||||
"[START_DIR]/cache/work/flutter/src/out/android_release",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Release"
|
||||
],
|
||||
"infra_step": true,
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
DEPS = [
|
||||
'build',
|
||||
'recipe_engine/path',
|
||||
'recipe_engine/properties',
|
||||
'recipe_engine/raw_io',
|
||||
'run',
|
||||
@ -15,10 +16,24 @@ DEPS = [
|
||||
def RunSteps(api):
|
||||
api.vars.setup()
|
||||
|
||||
api.build()
|
||||
api.build.copy_build_products(
|
||||
api.vars.swarming_out_dir.join(
|
||||
'out', api.vars.configuration))
|
||||
# Hackery to avoid changing expectations.
|
||||
checkout_root = api.vars.cache_dir.join('work')
|
||||
out_dir = checkout_root.join(
|
||||
'skia', 'out', api.vars.builder_name, api.vars.configuration)
|
||||
if ('CheckGeneratedFiles' in api.vars.builder_name or
|
||||
'-CT_' in api.vars.builder_name):
|
||||
out_dir = api.vars.build_dir.join('out', api.vars.configuration)
|
||||
elif 'NoDEPS' in api.vars.builder_name:
|
||||
checkout_root = api.path['start_dir']
|
||||
out_dir = checkout_root.join(
|
||||
'skia', 'out', api.vars.builder_name, api.vars.configuration)
|
||||
elif 'Flutter' in api.vars.builder_name:
|
||||
checkout_root = checkout_root.join('flutter')
|
||||
out_dir = checkout_root.join('src', 'out', 'android_release')
|
||||
|
||||
api.build(checkout_root=checkout_root, out_dir=out_dir)
|
||||
dst = api.vars.swarming_out_dir.join('out', api.vars.configuration)
|
||||
api.build.copy_build_products(out_dir=out_dir, dst=dst)
|
||||
api.run.check_failure()
|
||||
|
||||
|
||||
|
@ -3,11 +3,10 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
|
||||
def compile_fn(api, _):
|
||||
flutter_dir = api.vars.checkout_root.join('src')
|
||||
def compile_fn(api, checkout_root, out_dir):
|
||||
flutter_dir = checkout_root.join('src')
|
||||
configuration = api.vars.builder_cfg.get('configuration').lower()
|
||||
extra_tokens = api.vars.extra_tokens
|
||||
out_dir = configuration
|
||||
|
||||
with api.context(cwd=flutter_dir):
|
||||
# Setup GN args.
|
||||
@ -16,10 +15,9 @@ def compile_fn(api, _):
|
||||
]
|
||||
if 'Android' in extra_tokens:
|
||||
gn_args.append('--android')
|
||||
out_dir = 'android_' + out_dir
|
||||
|
||||
# Delete out_dir so that we start from a clean slate. See skbug/6310.
|
||||
api.run.rmtree(flutter_dir.join('out', out_dir))
|
||||
api.run.rmtree(out_dir)
|
||||
|
||||
# Run GN.
|
||||
api.run(
|
||||
@ -31,7 +29,7 @@ def compile_fn(api, _):
|
||||
api.run(
|
||||
api.step,
|
||||
'build_flutter',
|
||||
cmd=['ninja', '-C', 'out/' + out_dir, '-j100'])
|
||||
cmd=['ninja', '-C', out_dir, '-j100'])
|
||||
|
||||
|
||||
def copy_extra_build_products(api, src, dst):
|
||||
|
@ -17,39 +17,58 @@ from recipe_engine import config_types
|
||||
|
||||
class SkiaApi(recipe_api.RecipeApi):
|
||||
|
||||
@property
|
||||
def default_checkout_root(self):
|
||||
"""The default location for cached persistent checkouts."""
|
||||
return self.m.vars.cache_dir.join('work')
|
||||
|
||||
def patch_ref(self, issue, patchset):
|
||||
"""Build a ref for the given issue and patchset."""
|
||||
return 'refs/changes/%s/%s/%s' % (issue[-2:], issue, patchset)
|
||||
|
||||
def checkout_git(self):
|
||||
def checkout_git(self, checkout_root):
|
||||
"""Run the steps to perform a pure-git checkout without DEPS."""
|
||||
skia_dir = checkout_root.join('skia')
|
||||
self.m.git.checkout(
|
||||
self.m.properties['repository'], dir_path=self.m.vars.skia_dir,
|
||||
self.m.properties['repository'], dir_path=skia_dir,
|
||||
ref=self.m.properties['revision'], submodules=False)
|
||||
if self.m.vars.is_trybot:
|
||||
ref = self.patch_ref(str(self.m.vars.issue), str(self.m.vars.patchset))
|
||||
self.m.git('fetch', 'origin', ref)
|
||||
self.m.git('checkout', 'FETCH_HEAD')
|
||||
self.m.git('rebase', self.m.properties['revision'])
|
||||
return self.m.properties['revision']
|
||||
|
||||
def checkout_bot_update(self):
|
||||
def checkout_bot_update(self, checkout_root, gclient_cache=None):
|
||||
"""Run the steps to obtain a checkout using bot_update."""
|
||||
if not gclient_cache:
|
||||
gclient_cache = self.m.vars.cache_dir.join('git')
|
||||
|
||||
cfg_kwargs = {}
|
||||
is_parent_revision = 'ParentRevision' in self.m.vars.extra_tokens
|
||||
|
||||
# Use a persistent gclient cache for Swarming.
|
||||
cfg_kwargs['CACHE_DIR'] = self.m.vars.gclient_cache
|
||||
cfg_kwargs['CACHE_DIR'] = gclient_cache
|
||||
|
||||
# Create the checkout path if necessary.
|
||||
if not self.m.path.exists(self.m.vars.checkout_root):
|
||||
self.m.file.ensure_directory('makedirs checkout_path',
|
||||
self.m.vars.checkout_root)
|
||||
if not self.m.path.exists(checkout_root):
|
||||
self.m.file.ensure_directory('makedirs checkout_path', checkout_root)
|
||||
|
||||
# Initial cleanup.
|
||||
gclient_cfg = self.m.gclient.make_config(**cfg_kwargs)
|
||||
|
||||
# Some bots also require a checkout of chromium.
|
||||
need_chromium_checkout = False
|
||||
gclient_env = {'DEPOT_TOOLS_UPDATE': '0'}
|
||||
if 'CommandBuffer' in self.m.properties['buildername']:
|
||||
need_chromium_checkout = True
|
||||
gclient_env['GYP_CHROMIUM_NO_ACTION'] = '0'
|
||||
if 'RecreateSKPs' in self.m.properties['buildername']:
|
||||
need_chromium_checkout = True
|
||||
gclient_env['CPPFLAGS'] = '-DSK_ALLOW_CROSSPROCESS_PICTUREIMAGEFILTERS=1'
|
||||
|
||||
# Add chromium first because of skbug.com/7917.
|
||||
if self.m.vars.need_chromium_checkout:
|
||||
if need_chromium_checkout:
|
||||
chromium = gclient_cfg.solutions.add()
|
||||
chromium.name = 'src'
|
||||
chromium.managed = False
|
||||
@ -57,14 +76,16 @@ class SkiaApi(recipe_api.RecipeApi):
|
||||
chromium.revision = 'origin/master'
|
||||
|
||||
main_repo = self.m.properties['repository']
|
||||
if self.m.vars.need_flutter_checkout:
|
||||
|
||||
need_flutter_checkout = 'Flutter' in self.m.properties['buildername']
|
||||
if need_flutter_checkout:
|
||||
main_repo = 'https://github.com/flutter/engine.git'
|
||||
main_name = self.m.path.basename(main_repo)
|
||||
if main_name.endswith('.git'):
|
||||
main_name = main_name[:-len('.git')]
|
||||
# Special case for flutter because it seems to need a very specific
|
||||
# directory structure to successfully build.
|
||||
if self.m.vars.need_flutter_checkout and main_name == 'engine':
|
||||
if need_flutter_checkout and main_name == 'engine':
|
||||
main_name = 'src/flutter'
|
||||
main = gclient_cfg.solutions.add()
|
||||
main.name = main_name
|
||||
@ -81,7 +102,7 @@ class SkiaApi(recipe_api.RecipeApi):
|
||||
if patch_root.endswith('.git'):
|
||||
patch_root = patch_root[:-4]
|
||||
|
||||
if self.m.vars.need_flutter_checkout:
|
||||
if need_flutter_checkout:
|
||||
# Skia is a DEP of Flutter; the 'revision' property is a Skia revision,
|
||||
# and any patch should be applied to Skia, not Flutter.
|
||||
main.revision = 'origin/master'
|
||||
@ -99,7 +120,7 @@ class SkiaApi(recipe_api.RecipeApi):
|
||||
|
||||
# TODO(rmistry): Remove the below block after there is a solution for
|
||||
# crbug.com/616443
|
||||
entries_file = self.m.vars.checkout_root.join('.gclient_entries')
|
||||
entries_file = checkout_root.join('.gclient_entries')
|
||||
if self.m.path.exists(entries_file) or self._test_data.enabled:
|
||||
self.m.file.remove('remove %s' % entries_file,
|
||||
entries_file)
|
||||
@ -118,7 +139,7 @@ class SkiaApi(recipe_api.RecipeApi):
|
||||
main.revision = main.revision + '^'
|
||||
|
||||
self.m.gclient.c = gclient_cfg
|
||||
with self.m.context(cwd=self.m.vars.checkout_root):
|
||||
with self.m.context(cwd=checkout_root):
|
||||
update_step = self.m.bot_update.ensure_checkout(
|
||||
patch_root=patch_root,
|
||||
# The logic in ensure_checkout for this arg is fairly naive, so if
|
||||
@ -128,10 +149,7 @@ class SkiaApi(recipe_api.RecipeApi):
|
||||
patch=not (self.m.vars.is_trybot and is_parent_revision)
|
||||
)
|
||||
|
||||
self.m.vars.got_revision = (
|
||||
update_step.presentation.properties['got_revision'])
|
||||
|
||||
if self.m.vars.need_chromium_checkout or self.m.vars.need_flutter_checkout:
|
||||
with self.m.context(cwd=self.m.vars.checkout_root,
|
||||
env=self.m.vars.gclient_env):
|
||||
if need_chromium_checkout or need_flutter_checkout:
|
||||
with self.m.context(cwd=checkout_root, env=gclient_env):
|
||||
self.m.gclient.runhooks()
|
||||
return update_step.presentation.properties['got_revision']
|
||||
|
@ -0,0 +1,147 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/work/flutter"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs checkout_path"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"remove",
|
||||
"[START_DIR]/cache/work/flutter/.gclient_entries"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "remove [START_DIR]/cache/work/flutter/.gclient_entries"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
|
||||
"--spec-path",
|
||||
"cache_dir = '[START_DIR]/cache/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'src/flutter', 'url': 'https://github.com/flutter/engine.git'}]\ntarget_os = ['android']",
|
||||
"--patch_root",
|
||||
"src/third_party/skia",
|
||||
"--revision_mapping_file",
|
||||
"{\"got_flutter_revision\": \"src/flutter\", \"got_revision\": \"src/third_party/skia\"}",
|
||||
"--git-cache-dir",
|
||||
"[START_DIR]/cache/git",
|
||||
"--cleanup-dir",
|
||||
"[CLEANUP]/bot_update",
|
||||
"--output_json",
|
||||
"/path/to/tmp/json",
|
||||
"--revision",
|
||||
"src/flutter@origin/master",
|
||||
"--revision",
|
||||
"src/third_party/skia@abc123"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/flutter",
|
||||
"env_prefixes": {
|
||||
"PATH": [
|
||||
"RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
]
|
||||
},
|
||||
"infra_step": true,
|
||||
"name": "bot_update",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@Some step text@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@{@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"src/flutter\": \"origin/master\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"src/third_party/skia\": \"abc123\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"src/flutter\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src/flutter.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"9221bca00ddbd888260084def81f09543281b952\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"src/third_party/skia\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/src/third_party/skia.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"d9c4a4d173a97ef2832b65636b4200bb93ea8ee1\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"src/third_party/skia\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_flutter_revision\": \"9221bca00ddbd888260084def81f09543281b952\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_flutter_revision_cp\": \"refs/heads/master@{#84512}\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"d9c4a4d173a97ef2832b65636b4200bb93ea8ee1\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#143121}\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"root\": \"src/flutter\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"directories\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"src/flutter\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/src/flutter.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"9221bca00ddbd888260084def81f09543281b952\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"src/third_party/skia\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/src/third_party/skia.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"d9c4a4d173a97ef2832b65636b4200bb93ea8ee1\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@}@@@",
|
||||
"@@@STEP_LOG_END@json.output@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_flutter_revision@\"9221bca00ddbd888260084def81f09543281b952\"@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_flutter_revision_cp@\"refs/heads/master@{#84512}\"@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_revision@\"d9c4a4d173a97ef2832b65636b4200bb93ea8ee1\"@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#143121}\"@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
|
||||
"runhooks"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/flutter",
|
||||
"env": {
|
||||
"DEPOT_TOOLS_UPDATE": "0",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "gclient runhooks"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/tmp"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs tmp_dir"
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,134 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/work"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs checkout_path"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"remove",
|
||||
"[START_DIR]/cache/work/.gclient_entries"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "remove [START_DIR]/cache/work/.gclient_entries"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
|
||||
"--spec-path",
|
||||
"cache_dir = '[START_DIR]/cache/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'src', 'url': 'https://chromium.googlesource.com/chromium/src.git'}, {'deps_file': '.DEPS.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]",
|
||||
"--patch_root",
|
||||
"skia",
|
||||
"--revision_mapping_file",
|
||||
"{\"got_revision\": \"skia\"}",
|
||||
"--git-cache-dir",
|
||||
"[START_DIR]/cache/git",
|
||||
"--cleanup-dir",
|
||||
"[CLEANUP]/bot_update",
|
||||
"--output_json",
|
||||
"/path/to/tmp/json",
|
||||
"--revision",
|
||||
"skia@abc123",
|
||||
"--revision",
|
||||
"src@origin/master"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work",
|
||||
"env_prefixes": {
|
||||
"PATH": [
|
||||
"RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
]
|
||||
},
|
||||
"infra_step": true,
|
||||
"name": "bot_update",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@Some step text@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@{@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": \"abc123\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"src\": \"origin/master\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/skia.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"skia\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#164710}\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"root\": \"src\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"directories\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/skia.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@}@@@",
|
||||
"@@@STEP_LOG_END@json.output@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_revision@\"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#164710}\"@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
|
||||
"runhooks"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work",
|
||||
"env": {
|
||||
"DEPOT_TOOLS_UPDATE": "0",
|
||||
"GYP_CHROMIUM_NO_ACTION": "0",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "gclient runhooks"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/tmp"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs tmp_dir"
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -15,13 +15,18 @@ DEPS = [
|
||||
|
||||
def RunSteps(api):
|
||||
api.vars.setup()
|
||||
|
||||
bot_update = True
|
||||
if 'NoDEPS' in api.properties['buildername']:
|
||||
bot_update = False
|
||||
|
||||
if bot_update:
|
||||
api.core.checkout_bot_update()
|
||||
checkout_root = api.core.default_checkout_root
|
||||
if 'Flutter' in api.vars.builder_name:
|
||||
checkout_root = checkout_root.join('flutter')
|
||||
api.core.checkout_bot_update(checkout_root=checkout_root)
|
||||
else:
|
||||
api.core.checkout_git()
|
||||
api.core.checkout_git(checkout_root=api.path['start_dir'])
|
||||
api.file.ensure_directory('makedirs tmp_dir', api.vars.tmp_dir)
|
||||
|
||||
|
||||
@ -139,3 +144,23 @@ def GenTests(api):
|
||||
api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
|
||||
)
|
||||
)
|
||||
|
||||
buildername = 'Build-Mac-Clang-x86_64-Debug-CommandBuffer'
|
||||
yield (
|
||||
api.test(buildername) +
|
||||
api.properties(buildername=buildername,
|
||||
repository='https://skia.googlesource.com/skia.git',
|
||||
revision='abc123',
|
||||
path_config='kitchen',
|
||||
swarm_out_dir='[SWARM_OUT_DIR]')
|
||||
)
|
||||
|
||||
buildername = 'Build-Debian9-GCC-x86_64-Release-Flutter_Android'
|
||||
yield (
|
||||
api.test(buildername) +
|
||||
api.properties(buildername=buildername,
|
||||
repository='https://skia.googlesource.com/skia.git',
|
||||
revision='abc123',
|
||||
path_config='kitchen',
|
||||
swarm_out_dir='[SWARM_OUT_DIR]')
|
||||
)
|
||||
|
@ -64,6 +64,9 @@ class SkiaFlavorApi(recipe_api.RecipeApi):
|
||||
|
||||
def setup(self):
|
||||
self._f = self.get_flavor(self.m.vars)
|
||||
self.device_dirs = self._f.device_dirs
|
||||
self.host_dirs = self._f.host_dirs
|
||||
self._skia_dir = self.m.path['start_dir'].join('skia')
|
||||
|
||||
def step(self, name, cmd, **kwargs):
|
||||
return self._f.step(name, cmd, **kwargs)
|
||||
@ -97,12 +100,11 @@ class SkiaFlavorApi(recipe_api.RecipeApi):
|
||||
|
||||
def install(self, skps=False, images=False, svgs=False, resources=False):
|
||||
self._f.install()
|
||||
self.device_dirs = self._f.device_dirs
|
||||
|
||||
# TODO(borenet): Only copy files which have changed.
|
||||
if resources:
|
||||
self.copy_directory_contents_to_device(
|
||||
self.m.vars.resource_dir,
|
||||
self.m.path['start_dir'].join('skia', 'resources'),
|
||||
self.device_dirs.resource_dir)
|
||||
|
||||
if skps:
|
||||
@ -138,7 +140,7 @@ class SkiaFlavorApi(recipe_api.RecipeApi):
|
||||
|
||||
def _copy_images(self):
|
||||
"""Download and copy test images if needed."""
|
||||
version = self.m.run.asset_version('skimage')
|
||||
version = self.m.run.asset_version('skimage', self._skia_dir)
|
||||
self.m.run.writefile(
|
||||
self.m.path.join(self.m.vars.tmp_dir, VERSION_FILE_SK_IMAGE),
|
||||
version)
|
||||
@ -146,13 +148,13 @@ class SkiaFlavorApi(recipe_api.RecipeApi):
|
||||
version,
|
||||
VERSION_FILE_SK_IMAGE,
|
||||
self.m.vars.tmp_dir,
|
||||
self.m.vars.images_dir,
|
||||
self.host_dirs.images_dir,
|
||||
self.device_dirs.images_dir)
|
||||
return version
|
||||
|
||||
def _copy_skps(self):
|
||||
"""Download and copy the SKPs if needed."""
|
||||
version = self.m.run.asset_version('skp')
|
||||
version = self.m.run.asset_version('skp', self._skia_dir)
|
||||
self.m.run.writefile(
|
||||
self.m.path.join(self.m.vars.tmp_dir, VERSION_FILE_SKP),
|
||||
version)
|
||||
@ -160,13 +162,13 @@ class SkiaFlavorApi(recipe_api.RecipeApi):
|
||||
version,
|
||||
VERSION_FILE_SKP,
|
||||
self.m.vars.tmp_dir,
|
||||
self.m.vars.local_skp_dir,
|
||||
self.host_dirs.skp_dir,
|
||||
self.device_dirs.skp_dir)
|
||||
return version
|
||||
|
||||
def _copy_svgs(self):
|
||||
"""Download and copy the SVGs if needed."""
|
||||
version = self.m.run.asset_version('svg')
|
||||
version = self.m.run.asset_version('svg', self._skia_dir)
|
||||
self.m.run.writefile(
|
||||
self.m.path.join(self.m.vars.tmp_dir, VERSION_FILE_SVG),
|
||||
version)
|
||||
@ -174,6 +176,6 @@ class SkiaFlavorApi(recipe_api.RecipeApi):
|
||||
version,
|
||||
VERSION_FILE_SVG,
|
||||
self.m.vars.tmp_dir,
|
||||
self.m.vars.local_svg_dir,
|
||||
self.host_dirs.svg_dir,
|
||||
self.device_dirs.svg_dir)
|
||||
return version
|
||||
|
@ -17,6 +17,7 @@ WIN_TOOLCHAIN_DIR = 't'
|
||||
|
||||
class DeviceDirs(object):
|
||||
def __init__(self,
|
||||
bin_dir,
|
||||
dm_dir,
|
||||
perf_data_dir,
|
||||
resource_dir,
|
||||
@ -24,6 +25,7 @@ class DeviceDirs(object):
|
||||
skp_dir,
|
||||
svg_dir,
|
||||
tmp_dir):
|
||||
self._bin_dir = bin_dir
|
||||
self._dm_dir = dm_dir
|
||||
self._perf_data_dir = perf_data_dir
|
||||
self._resource_dir = resource_dir
|
||||
@ -32,6 +34,10 @@ class DeviceDirs(object):
|
||||
self._svg_dir = svg_dir
|
||||
self._tmp_dir = tmp_dir
|
||||
|
||||
@property
|
||||
def bin_dir(self):
|
||||
return self._bin_dir
|
||||
|
||||
@property
|
||||
def dm_dir(self):
|
||||
"""Where DM writes."""
|
||||
@ -85,11 +91,18 @@ class DefaultFlavorUtils(object):
|
||||
# syntax as regular recipe modules to run steps, eg: self.m.step(...)
|
||||
self.m = module.m
|
||||
self._chrome_path = None
|
||||
self._win_toolchain_dir = self.m.vars.slave_dir.join(WIN_TOOLCHAIN_DIR)
|
||||
win_toolchain_asset_path = self.m.vars.infrabots_dir.join(
|
||||
'assets', 'win_toolchain', 'VERSION')
|
||||
if not self.m.path.exists(win_toolchain_asset_path):
|
||||
self._win_toolchain_dir = self.m.vars.slave_dir
|
||||
self.device_dirs = DeviceDirs(
|
||||
bin_dir=self.m.vars.build_dir.join('out', self.m.vars.configuration),
|
||||
dm_dir=self.m.path.join(self.m.vars.swarming_out_dir, 'dm'),
|
||||
perf_data_dir=self.m.path.join(
|
||||
self.m.vars.swarming_out_dir,
|
||||
'perfdata', self.m.vars.builder_name, 'data'),
|
||||
resource_dir=self.m.path['start_dir'].join('skia', 'resources'),
|
||||
images_dir=self.m.path['start_dir'].join('skimage'),
|
||||
skp_dir=self.m.path['start_dir'].join('skp'),
|
||||
svg_dir=self.m.path['start_dir'].join('svg'),
|
||||
tmp_dir=self.m.vars.tmp_dir)
|
||||
self.host_dirs = self.device_dirs
|
||||
|
||||
def device_path_join(self, *args):
|
||||
"""Like os.path.join(), but for paths on a connected device."""
|
||||
@ -137,14 +150,7 @@ class DefaultFlavorUtils(object):
|
||||
|
||||
def install(self):
|
||||
"""Run device-specific installation steps."""
|
||||
self.device_dirs = DeviceDirs(
|
||||
dm_dir=self.m.vars.dm_dir,
|
||||
perf_data_dir=self.m.vars.perf_data_dir,
|
||||
resource_dir=self.m.vars.resource_dir,
|
||||
images_dir=self.m.vars.images_dir,
|
||||
skp_dir=self.m.vars.local_skp_dir,
|
||||
svg_dir=self.m.vars.local_svg_dir,
|
||||
tmp_dir=self.m.vars.tmp_dir)
|
||||
pass
|
||||
|
||||
def cleanup_steps(self):
|
||||
"""Run any device-specific cleanup steps."""
|
||||
|
@ -1,164 +0,0 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"rmtree",
|
||||
"results_dir"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "rmtree results_dir"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"results_dir"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs results_dir"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"rmtree",
|
||||
"device_results_dir"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "rmtree device_results_dir"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"device_results_dir"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs device_results_dir"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"[START_DIR]/cache/work/skia/infra/bots/assets/skp/VERSION",
|
||||
"/path/to/tmp/"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "Get skp VERSION"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"42",
|
||||
"[START_DIR]/tmp/SKP_VERSION"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "write SKP_VERSION"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"[START_DIR]/cache/work/skia/infra/bots/assets/skimage/VERSION",
|
||||
"/path/to/tmp/"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "Get skimage VERSION"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"42",
|
||||
"[START_DIR]/tmp/SK_IMAGE_VERSION"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "write SK_IMAGE_VERSION"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"[START_DIR]/cache/work/skia/infra/bots/assets/svg/VERSION",
|
||||
"/path/to/tmp/"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "Get svg VERSION"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"42",
|
||||
"[START_DIR]/tmp/SVG_VERSION"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "write SVG_VERSION"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[skia::flavor]/resources/symbolize_stack_trace.py",
|
||||
"[START_DIR]",
|
||||
"catchsegv",
|
||||
"[START_DIR]/build/out/Release/nanobench",
|
||||
"--some-flag"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "symbolized nanobench"
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -43,11 +43,12 @@ def RunSteps(api):
|
||||
if 'Test' in api.properties['buildername']:
|
||||
api.flavor.step('dm', ['dm', '--some-flag'])
|
||||
api.flavor.copy_directory_contents_to_host(
|
||||
api.flavor.device_dirs.dm_dir, api.vars.dm_dir)
|
||||
api.flavor.device_dirs.dm_dir, api.flavor.host_dirs.dm_dir)
|
||||
elif 'Perf' in api.properties['buildername']:
|
||||
api.flavor.step('nanobench', ['nanobench', '--some-flag'])
|
||||
api.flavor.copy_directory_contents_to_host(
|
||||
api.flavor.device_dirs.perf_data_dir, api.vars.perf_data_dir)
|
||||
api.flavor.device_dirs.perf_data_dir,
|
||||
api.flavor.host_dirs.perf_data_dir)
|
||||
finally:
|
||||
api.flavor.cleanup_steps()
|
||||
api.run.check_failure()
|
||||
@ -62,7 +63,6 @@ TEST_BUILDERS = [
|
||||
'Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release-All',
|
||||
'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN',
|
||||
'Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN',
|
||||
'Perf-Ubuntu14-Clang-GCE-CPU-AVX2-x86_64-Release-All-CT_BENCH_1k_SKPs',
|
||||
'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android',
|
||||
'Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android',
|
||||
'Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android',
|
||||
|
@ -22,14 +22,17 @@ class GNAndroidFlavorUtils(default_flavor.DefaultFlavorUtils):
|
||||
self.ADB_PUB_KEY = ('/home/chrome-bot/.android/'
|
||||
'chrome_infrastructure_adbkey')
|
||||
|
||||
# Data should go in android_data_dir, which may be preserved across runs.
|
||||
android_data_dir = '/sdcard/revenge_of_the_skiabot/'
|
||||
self.device_dirs = default_flavor.DeviceDirs(
|
||||
dm_dir = self.m.vars.android_data_dir + 'dm_out',
|
||||
perf_data_dir = self.m.vars.android_data_dir + 'perf',
|
||||
resource_dir = self.m.vars.android_data_dir + 'resources',
|
||||
images_dir = self.m.vars.android_data_dir + 'images',
|
||||
skp_dir = self.m.vars.android_data_dir + 'skps',
|
||||
svg_dir = self.m.vars.android_data_dir + 'svgs',
|
||||
tmp_dir = self.m.vars.android_data_dir)
|
||||
bin_dir = '/data/local/tmp/',
|
||||
dm_dir = android_data_dir + 'dm_out',
|
||||
perf_data_dir = android_data_dir + 'perf',
|
||||
resource_dir = android_data_dir + 'resources',
|
||||
images_dir = android_data_dir + 'images',
|
||||
skp_dir = android_data_dir + 'skps',
|
||||
svg_dir = android_data_dir + 'svgs',
|
||||
tmp_dir = android_data_dir)
|
||||
|
||||
# A list of devices we can't root. If rooting fails and a device is not
|
||||
# on the list, we fail the task to avoid perf inconsistencies.
|
||||
@ -71,7 +74,7 @@ class GNAndroidFlavorUtils(default_flavor.DefaultFlavorUtils):
|
||||
}
|
||||
|
||||
def _run(self, title, *cmd, **kwargs):
|
||||
with self.m.context(cwd=self.m.vars.skia_dir):
|
||||
with self.m.context(cwd=self.m.path['start_dir'].join('skia')):
|
||||
return self.m.run(self.m.step, title, cmd=list(cmd), **kwargs)
|
||||
|
||||
def _adb(self, title, *cmd, **kwargs):
|
||||
@ -99,7 +102,7 @@ class GNAndroidFlavorUtils(default_flavor.DefaultFlavorUtils):
|
||||
timeout=180, abort_on_failure=False,
|
||||
fail_build_on_failure=False)
|
||||
|
||||
with self.m.context(cwd=self.m.vars.skia_dir):
|
||||
with self.m.context(cwd=self.m.path['start_dir'].join('skia')):
|
||||
with self.m.env({'ADB_VENDOR_KEYS': self.ADB_PUB_KEY}):
|
||||
return self.m.run.with_retry(self.m.step, title, attempts,
|
||||
cmd=[self.ADB_BINARY]+list(cmd),
|
||||
@ -427,7 +430,7 @@ wait_for_device()
|
||||
line = line.replace(addr, addr + ' ' + sym.strip())
|
||||
print line
|
||||
""" % self.ADB_BINARY,
|
||||
args=[self.m.vars.skia_out.join(self.m.vars.configuration)],
|
||||
args=[self.m.vars.skia_out],
|
||||
infra_step=True,
|
||||
timeout=300,
|
||||
abort_on_failure=False)
|
||||
@ -453,17 +456,17 @@ wait_for_device()
|
||||
self._scale_for_nanobench()
|
||||
else:
|
||||
self._scale_for_dm()
|
||||
app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0])
|
||||
app = self.m.vars.skia_out.join(cmd[0])
|
||||
self._adb('push %s' % cmd[0],
|
||||
'push', app, self.m.vars.android_bin_dir)
|
||||
'push', app, self.device_dirs.bin_dir)
|
||||
|
||||
sh = '%s.sh' % cmd[0]
|
||||
self.m.run.writefile(self.m.vars.tmp_dir.join(sh),
|
||||
'set -x; %s%s; echo $? >%src' %
|
||||
(self.m.vars.android_bin_dir, subprocess.list2cmdline(map(str, cmd)),
|
||||
self.m.vars.android_bin_dir))
|
||||
'set -x; %s%s; echo $? >%src' % (
|
||||
self.device_dirs.bin_dir, subprocess.list2cmdline(map(str, cmd)),
|
||||
self.device_dirs.bin_dir))
|
||||
self._adb('push %s' % sh,
|
||||
'push', self.m.vars.tmp_dir.join(sh), self.m.vars.android_bin_dir)
|
||||
'push', self.m.vars.tmp_dir.join(sh), self.device_dirs.bin_dir)
|
||||
|
||||
self._adb('clear log', 'logcat', '-c')
|
||||
self.m.python.inline('%s' % cmd[0], """
|
||||
@ -479,7 +482,7 @@ wait_for_device()
|
||||
print "Couldn't read the return code. Probably killed for OOM."
|
||||
sys.exit(1)
|
||||
""" % (self.ADB_BINARY, self.ADB_BINARY),
|
||||
args=[self.m.vars.android_bin_dir, sh])
|
||||
args=[self.device_dirs.bin_dir, sh])
|
||||
|
||||
def copy_file_to_device(self, host, device):
|
||||
self._adb('push %s %s' % (host, device), 'push', host, device)
|
||||
|
@ -21,16 +21,16 @@ class GNChromebookFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
super(GNChromebookFlavorUtils, self).__init__(m)
|
||||
self._user_ip = ''
|
||||
|
||||
self.chromeos_homedir = '/home/chronos/user/'
|
||||
self.device_dirs = default_flavor.DeviceDirs(
|
||||
dm_dir = self.m.vars.chromeos_homedir + 'dm_out',
|
||||
perf_data_dir = self.m.vars.chromeos_homedir + 'perf',
|
||||
resource_dir = self.m.vars.chromeos_homedir + 'resources',
|
||||
images_dir = self.m.vars.chromeos_homedir + 'images',
|
||||
skp_dir = self.m.vars.chromeos_homedir + 'skps',
|
||||
svg_dir = self.m.vars.chromeos_homedir + 'svgs',
|
||||
tmp_dir = self.m.vars.chromeos_homedir)
|
||||
|
||||
self._bin_dir = self.m.vars.chromeos_homedir + 'bin'
|
||||
bin_dir = self.chromeos_homedir + 'bin',
|
||||
dm_dir = self.chromeos_homedir + 'dm_out',
|
||||
perf_data_dir = self.chromeos_homedir + 'perf',
|
||||
resource_dir = self.chromeos_homedir + 'resources',
|
||||
images_dir = self.chromeos_homedir + 'images',
|
||||
skp_dir = self.chromeos_homedir + 'skps',
|
||||
svg_dir = self.chromeos_homedir + 'svgs',
|
||||
tmp_dir = self.chromeos_homedir)
|
||||
|
||||
@property
|
||||
def user_ip(self):
|
||||
@ -62,10 +62,10 @@ class GNChromebookFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
self.device_dirs.resource_dir)
|
||||
|
||||
# Ensure the home dir is marked executable
|
||||
self._ssh('remount %s as exec' % self.m.vars.chromeos_homedir,
|
||||
self._ssh('remount %s as exec' % self.chromeos_homedir,
|
||||
'sudo', 'mount', '-i', '-o', 'remount,exec', '/home/chronos')
|
||||
|
||||
self.create_clean_device_dir(self._bin_dir)
|
||||
self.create_clean_device_dir(self.device_dirs.bin_dir)
|
||||
|
||||
def create_clean_device_dir(self, path):
|
||||
# use -f to silently return if path doesn't exist
|
||||
@ -121,13 +121,13 @@ class GNChromebookFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
name = cmd[0]
|
||||
|
||||
if name == 'dm':
|
||||
self.create_clean_host_dir(self.m.vars.dm_dir)
|
||||
self.create_clean_host_dir(self.host_dirs.dm_dir)
|
||||
if name == 'nanobench':
|
||||
self.create_clean_host_dir(self.m.vars.perf_data_dir)
|
||||
self.create_clean_host_dir(self.host_dirs.perf_data_dir)
|
||||
|
||||
app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0])
|
||||
app = self.m.vars.skia_out.join(cmd[0])
|
||||
|
||||
cmd[0] = '%s/%s' % (self._bin_dir, cmd[0])
|
||||
cmd[0] = '%s/%s' % (self.device_dirs.bin_dir, cmd[0])
|
||||
self.copy_file_to_device(app, cmd[0])
|
||||
|
||||
self._ssh('chmod %s' % name, 'chmod', '+x', cmd[0])
|
||||
|
@ -15,22 +15,21 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
|
||||
super(GNChromecastFlavorUtils, self).__init__(m)
|
||||
self._ever_ran_adb = False
|
||||
self._user_ip = ''
|
||||
self.m.vars.android_bin_dir = self.m.path.join(self.m.vars.android_bin_dir,
|
||||
'bin')
|
||||
|
||||
# Disk space is extremely tight on the Chromecasts (~100M) There is not
|
||||
# enough space on the android_data_dir (/cache/skia) to fit the images,
|
||||
# resources, executable and output the dm images. So, we have dm_out be
|
||||
# on the tempfs (i.e. RAM) /dev/shm. (which is about 140M)
|
||||
|
||||
data_dir = '/cache/skia/'
|
||||
self.device_dirs = default_flavor.DeviceDirs(
|
||||
bin_dir = '/cache/skia/bin',
|
||||
dm_dir = '/dev/shm/skia/dm_out',
|
||||
perf_data_dir = self.m.vars.android_data_dir + 'perf',
|
||||
resource_dir = self.m.vars.android_data_dir + 'resources',
|
||||
images_dir = self.m.vars.android_data_dir + 'images',
|
||||
skp_dir = self.m.vars.android_data_dir + 'skps',
|
||||
svg_dir = self.m.vars.android_data_dir + 'svgs',
|
||||
tmp_dir = self.m.vars.android_data_dir)
|
||||
perf_data_dir = data_dir + 'perf',
|
||||
resource_dir = data_dir + 'resources',
|
||||
images_dir = data_dir + 'images',
|
||||
skp_dir = data_dir + 'skps',
|
||||
svg_dir = data_dir + 'svgs',
|
||||
tmp_dir = data_dir)
|
||||
|
||||
@property
|
||||
def user_ip_host(self):
|
||||
@ -53,8 +52,8 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
|
||||
|
||||
def install(self):
|
||||
super(GNChromecastFlavorUtils, self).install()
|
||||
self._adb('mkdir ' + self.m.vars.android_bin_dir,
|
||||
'shell', 'mkdir', '-p', self.m.vars.android_bin_dir)
|
||||
self._adb('mkdir ' + self.device_dirs.bin_dir,
|
||||
'shell', 'mkdir', '-p', self.device_dirs.bin_dir)
|
||||
|
||||
def _adb(self, title, *cmd, **kwargs):
|
||||
if not self._ever_ran_adb:
|
||||
@ -104,7 +103,7 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
|
||||
def cleanup_steps(self):
|
||||
if self._ever_ran_adb:
|
||||
# To clean up disk space for next time
|
||||
self._ssh('Delete executables', 'rm', '-r', self.m.vars.android_bin_dir,
|
||||
self._ssh('Delete executables', 'rm', '-r', self.device_dirs.bin_dir,
|
||||
abort_on_failure=False, infra_step=True)
|
||||
# Reconnect if was disconnected
|
||||
self._adb('disconnect', 'disconnect')
|
||||
@ -125,7 +124,7 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
|
||||
line = line.replace(addr, addr + ' ' + sym.strip())
|
||||
print line
|
||||
""",
|
||||
args=[self.m.vars.skia_out.join(self.m.vars.configuration)],
|
||||
args=[self.m.vars.skia_out],
|
||||
infra_step=True,
|
||||
abort_on_failure=False)
|
||||
|
||||
@ -145,10 +144,10 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
|
||||
return self.m.run(self.m.step, title, cmd=ssh_cmd, **kwargs)
|
||||
|
||||
def step(self, name, cmd, **kwargs):
|
||||
app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0])
|
||||
app = self.m.vars.skia_out.join(cmd[0])
|
||||
|
||||
self._adb('push %s' % cmd[0],
|
||||
'push', app, self.m.vars.android_bin_dir)
|
||||
'push', app, self.device_dirs.bin_dir)
|
||||
|
||||
cmd[0] = '%s/%s' % (self.m.vars.android_bin_dir, cmd[0])
|
||||
cmd[0] = '%s/%s' % (self.device_dirs.bin_dir, cmd[0])
|
||||
self._ssh(str(name), *cmd, infra_step=False)
|
||||
|
@ -16,7 +16,7 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils):
|
||||
infra_step=infra_step)
|
||||
|
||||
def step(self, name, cmd):
|
||||
app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0])
|
||||
app = self.device_dirs.bin_dir.join(cmd[0])
|
||||
cmd = [app] + cmd[1:]
|
||||
env = self.m.context.env
|
||||
path = []
|
||||
@ -43,7 +43,8 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils):
|
||||
ld_library_path.append(slave_dir.join('linux_vulkan_sdk', 'lib'))
|
||||
|
||||
if 'SwiftShader' in extra_tokens:
|
||||
ld_library_path.append(self.m.vars.skia_out.join('swiftshader_out'))
|
||||
ld_library_path.append(
|
||||
self.m.vars.build_dir.join('out', 'swiftshader_out'))
|
||||
|
||||
if 'MSAN' in extra_tokens:
|
||||
# Find the MSAN-built libc++.
|
||||
@ -60,7 +61,8 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils):
|
||||
elif self.m.vars.is_linux:
|
||||
cmd = ['catchsegv'] + cmd
|
||||
elif 'ProcDump' in extra_tokens:
|
||||
self.m.file.ensure_directory('makedirs dumps', self.m.vars.dumps_dir)
|
||||
dumps_dir = self.m.path.join(self.m.vars.swarming_out_dir, 'dumps')
|
||||
self.m.file.ensure_directory('makedirs dumps', dumps_dir)
|
||||
procdump = str(self.m.vars.slave_dir.join('procdump_win',
|
||||
'procdump64.exe'))
|
||||
# Full docs for ProcDump here:
|
||||
@ -70,8 +72,7 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils):
|
||||
# -e 1 tells procdump to dump once
|
||||
# -x <dump dir> <exe> <args> launches exe and writes dumps to the
|
||||
# specified dir
|
||||
cmd = [procdump, '-accepteula', '-mp', '-e', '1',
|
||||
'-x', self.m.vars.dumps_dir] + cmd
|
||||
cmd = [procdump, '-accepteula', '-mp', '-e', '1', '-x', dumps_dir] + cmd
|
||||
|
||||
if 'ASAN' in extra_tokens or 'UBSAN' in extra_tokens:
|
||||
if 'Mac' in self.m.vars.builder_cfg.get('os', ''):
|
||||
@ -104,7 +105,7 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils):
|
||||
# Convert path objects or placeholders into strings such that they can
|
||||
# be passed to symbolize_stack_trace.py
|
||||
args = [slave_dir] + [str(x) for x in cmd]
|
||||
with self.m.context(cwd=self.m.vars.skia_dir, env=env):
|
||||
with self.m.context(cwd=self.m.path['start_dir'].join('skia'), env=env):
|
||||
self._py('symbolized %s' % name,
|
||||
self.module.resource('symbolize_stack_trace.py'),
|
||||
args=args,
|
||||
|
@ -10,6 +10,17 @@ import gn_flavor
|
||||
import os
|
||||
|
||||
class iOSFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
def __init__(self, m):
|
||||
super(iOSFlavorUtils, self).__init__(m)
|
||||
self.device_dirs = default_flavor.DeviceDirs(
|
||||
bin_dir='[unused]',
|
||||
dm_dir='dm',
|
||||
perf_data_dir='perf',
|
||||
resource_dir='resources',
|
||||
images_dir='images',
|
||||
skp_dir='skps',
|
||||
svg_dir='svgs',
|
||||
tmp_dir='tmp')
|
||||
|
||||
def install(self):
|
||||
# Set up the device
|
||||
@ -17,8 +28,7 @@ class iOSFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
|
||||
# Install the app.
|
||||
for app_name in ['dm', 'nanobench']:
|
||||
app_package = self.m.vars.skia_out.join(self.m.vars.configuration,
|
||||
'%s.app' % app_name)
|
||||
app_package = self.m.vars.skia_out.join('%s.app' % app_name)
|
||||
|
||||
def uninstall_app(attempt):
|
||||
# If app ID changes, upgrade will fail, so try uninstalling.
|
||||
@ -35,15 +45,6 @@ class iOSFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
between_attempts_fn=uninstall_app,
|
||||
infra_step=True)
|
||||
|
||||
self.device_dirs = default_flavor.DeviceDirs(
|
||||
dm_dir='dm',
|
||||
perf_data_dir='perf',
|
||||
resource_dir='resources',
|
||||
images_dir='images',
|
||||
skp_dir='skps',
|
||||
svg_dir='svgs',
|
||||
tmp_dir='tmp')
|
||||
|
||||
def step(self, name, cmd, env=None, **kwargs):
|
||||
bundle_id = 'com.google.%s' % cmd[0]
|
||||
self.m.run(self.m.step, name,
|
||||
@ -51,7 +52,8 @@ class iOSFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
map(str, cmd[1:]))
|
||||
|
||||
def _run_ios_script(self, script, first, *rest):
|
||||
full = self.m.vars.skia_dir.join('platform_tools/ios/bin/ios_' + script)
|
||||
full = self.m.path['start_dir'].join(
|
||||
'skia', 'platform_tools', 'ios', 'bin', 'ios_' + script)
|
||||
self.m.run(self.m.step,
|
||||
name = '%s %s' % (script, first),
|
||||
cmd = [full, first] + list(rest),
|
||||
@ -74,7 +76,8 @@ class iOSFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
self._run_ios_script('mkdir', path)
|
||||
|
||||
def read_file_on_device(self, path, **kwargs):
|
||||
full = self.m.vars.skia_dir.join('platform_tools/ios/bin/ios_cat_file')
|
||||
full = self.m.path['start_dir'].join(
|
||||
'skia', 'platform_tools', 'ios', 'bin', 'ios_cat_file')
|
||||
rv = self.m.run(self.m.step,
|
||||
name = 'cat_file %s' % path,
|
||||
cmd = [full, path],
|
||||
|
@ -12,8 +12,8 @@ import gn_flavor
|
||||
class ValgrindFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
def __init__(self, m):
|
||||
super(ValgrindFlavorUtils, self).__init__(m)
|
||||
self._suppressions_file = self.m.vars.skia_dir.join(
|
||||
'tools', 'valgrind.supp')
|
||||
self._suppressions_file = self.m.path['start_dir'].join(
|
||||
'skia', 'tools', 'valgrind.supp')
|
||||
self._valgrind_cipd_dir = self.m.vars.slave_dir.join('valgrind')
|
||||
self._valgrind_fake_dir = self._valgrind_cipd_dir
|
||||
self._valgrind = self._valgrind_fake_dir.join('bin', 'valgrind')
|
||||
@ -23,7 +23,7 @@ class ValgrindFlavorUtils(gn_flavor.GNFlavorUtils):
|
||||
new_cmd = [self._valgrind, '--gen-suppressions=all', '--leak-check=full',
|
||||
'--track-origins=yes', '--error-exitcode=1', '--num-callers=40',
|
||||
'--suppressions=%s' % self._suppressions_file]
|
||||
path_to_app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0])
|
||||
path_to_app = self.m.vars.skia_out.join(cmd[0])
|
||||
new_cmd.append(path_to_app)
|
||||
new_cmd.extend(cmd[1:])
|
||||
with self.m.env({'VALGRIND_LIB': self._lib_dir}):
|
||||
|
@ -51,14 +51,14 @@ class SkiaStepApi(recipe_api.RecipeApi):
|
||||
"""Wrapper around api.file.rmtree."""
|
||||
self.m.file.rmtree('rmtree %s' % self.m.path.basename(path), path)
|
||||
|
||||
def asset_version(self, asset_name, test_data=None):
|
||||
def asset_version(self, asset_name, skia_dir, test_data=None):
|
||||
"""Return the contents of VERSION for the given asset as a string.
|
||||
|
||||
If test_data is not specified, reads the property
|
||||
'test_<asset_name>_version' or if not present, uses
|
||||
TEST_DEFAULT_ASSET_VERSION."""
|
||||
version_file = self.m.vars.infrabots_dir.join(
|
||||
'assets', asset_name, 'VERSION')
|
||||
version_file = skia_dir.join(
|
||||
'infra', 'bots', 'assets', asset_name, 'VERSION')
|
||||
if not test_data:
|
||||
test_data = self.m.properties.get(
|
||||
'test_%s_version' % asset_name, TEST_DEFAULT_ASSET_VERSION)
|
||||
|
@ -35,7 +35,7 @@ def RunSteps(api):
|
||||
api.run.readfile('myfile.txt')
|
||||
api.run.writefile('myfile.txt', 'contents')
|
||||
api.run.rmtree('mydir')
|
||||
api.run.asset_version('my_asset')
|
||||
api.run.asset_version('my_asset', api.vars.cache_dir.join('work', 'skia'))
|
||||
|
||||
# Merge PATHs.
|
||||
with api.context(env={'PATH': 'mydir:%(PATH)s'}):
|
||||
|
@ -15,9 +15,6 @@ CONFIG_RELEASE = 'Release'
|
||||
|
||||
class SkiaVarsApi(recipe_api.RecipeApi):
|
||||
|
||||
override_checkout_root = None
|
||||
override_gclient_cache = None
|
||||
|
||||
def setup(self):
|
||||
"""Prepare the variables."""
|
||||
# Setup
|
||||
@ -27,87 +24,19 @@ class SkiaVarsApi(recipe_api.RecipeApi):
|
||||
|
||||
# Special input/output directories.
|
||||
self.build_dir = self.slave_dir.join('build')
|
||||
self.test_dir = self.slave_dir.join('test')
|
||||
self.perf_dir = self.slave_dir.join('perf')
|
||||
|
||||
self.checkout_root = self.slave_dir
|
||||
self.default_env = self.m.context.env
|
||||
self.default_env['CHROME_HEADLESS'] = '1'
|
||||
self.default_env['PATH'] = self.m.path.pathsep.join([
|
||||
self.default_env.get('PATH', '%(PATH)s'),
|
||||
str(self.m.bot_update._module.PACKAGE_REPO_ROOT),
|
||||
])
|
||||
self.gclient_env = {'DEPOT_TOOLS_UPDATE': '0'}
|
||||
self.is_compile_bot = self.builder_name.startswith('Build-')
|
||||
|
||||
self.persistent_checkout = False
|
||||
# Compile bots keep a persistent checkout.
|
||||
if self.is_compile_bot and 'NoDEPS' not in self.builder_name:
|
||||
self.persistent_checkout = True
|
||||
if 'Housekeeper' in self.builder_name:
|
||||
self.persistent_checkout = True
|
||||
if '-CT_' in self.builder_name:
|
||||
self.persistent_checkout = True
|
||||
# We need the source code for the Coverage's Upload step to be in the
|
||||
# same absolute location as when we compiled it so we can map the
|
||||
# coverage data to actual line numbers. We ensure this by making sure
|
||||
# we have a checkout on the Coverage's Upload step and that the Upload
|
||||
# step runs on the same bots that Compile.
|
||||
if 'Coverage' in self.builder_name and 'Upload' in self.builder_name:
|
||||
self.persistent_checkout = True
|
||||
|
||||
self.cache_dir = self.slave_dir.join('cache')
|
||||
if self.persistent_checkout:
|
||||
self.checkout_root = self.cache_dir.join('work')
|
||||
self.gclient_cache = self.cache_dir.join('git')
|
||||
if self.override_checkout_root:
|
||||
self.checkout_root = self.override_checkout_root
|
||||
self.gclient_cache = self.override_gclient_cache
|
||||
# got_revision is filled in after checkout steps.
|
||||
self.got_revision = None
|
||||
else:
|
||||
# If there's no persistent checkout, then we have to assume we got the
|
||||
# correct revision of the files from isolate.
|
||||
self.got_revision = self.m.properties['revision']
|
||||
|
||||
# Some bots also require a checkout of Flutter; in this case we use the
|
||||
# checkout of Skia obtained through DEPS in src/third_party/skia.
|
||||
self.need_flutter_checkout = 'Flutter' in self.builder_name
|
||||
|
||||
self.skia_dir = self.checkout_root.join('skia')
|
||||
if self.need_flutter_checkout:
|
||||
self.checkout_root = self.checkout_root.join('flutter')
|
||||
self.skia_dir = self.checkout_root.join('src', 'third_party', 'skia')
|
||||
|
||||
if not self.persistent_checkout:
|
||||
self.m.path['checkout'] = self.skia_dir
|
||||
|
||||
self.infrabots_dir = self.skia_dir.join('infra', 'bots')
|
||||
self.resource_dir = self.skia_dir.join('resources')
|
||||
self.images_dir = self.slave_dir.join('skimage')
|
||||
self.skia_out = self.skia_dir.join('out', self.builder_name)
|
||||
self.swarming_out_dir = self.slave_dir.join(
|
||||
self.m.properties['swarm_out_dir'])
|
||||
if 'ParentRevision' in self.builder_name:
|
||||
# Tasks that depend on ParentRevision builds usually also depend on a
|
||||
# second build task. Use a different path for build results so that the
|
||||
# binaries end up in different directories in the isolate.
|
||||
self.swarming_out_dir = self.swarming_out_dir.join('ParentRevision')
|
||||
self.local_skp_dir = self.slave_dir.join('skp')
|
||||
self.local_svg_dir = self.slave_dir.join('svg')
|
||||
if not self.is_compile_bot:
|
||||
self.skia_out = self.build_dir.join('out')
|
||||
self.tmp_dir = self.m.path['start_dir'].join('tmp')
|
||||
|
||||
# Some bots also require a checkout of chromium.
|
||||
self.need_chromium_checkout = False
|
||||
if 'CommandBuffer' in self.builder_name:
|
||||
self.need_chromium_checkout = True
|
||||
self.gclient_env['GYP_CHROMIUM_NO_ACTION'] = '0'
|
||||
if 'RecreateSKPs' in self.builder_name:
|
||||
self.need_chromium_checkout = True
|
||||
self.gclient_env['CPPFLAGS'] = (
|
||||
'-DSK_ALLOW_CROSSPROCESS_PICTUREIMAGEFILTERS=1')
|
||||
self.tmp_dir = self.m.path['start_dir'].join('tmp')
|
||||
|
||||
self.builder_cfg = self.m.builder_name_schema.DictForBuilderName(
|
||||
self.builder_name)
|
||||
@ -120,6 +49,9 @@ class SkiaVarsApi(recipe_api.RecipeApi):
|
||||
arch = (self.builder_cfg.get('arch') or self.builder_cfg.get('target_arch'))
|
||||
if ('Win' in self.builder_cfg.get('os', '') and arch == 'x86_64'):
|
||||
self.configuration += '_x64'
|
||||
|
||||
self.skia_out = self.build_dir.join('out', self.configuration)
|
||||
|
||||
self.extra_tokens = []
|
||||
if len(self.builder_cfg.get('extra_config', '')) > 0:
|
||||
if self.builder_cfg['extra_config'].startswith('SK'):
|
||||
@ -138,27 +70,9 @@ class SkiaVarsApi(recipe_api.RecipeApi):
|
||||
self.issue = self.m.properties['patch_issue']
|
||||
self.patchset = self.m.properties['patch_set']
|
||||
|
||||
self.dm_dir = self.m.path.join(
|
||||
self.swarming_out_dir, 'dm')
|
||||
self.perf_data_dir = self.m.path.join(self.swarming_out_dir,
|
||||
'perfdata', self.builder_name, 'data')
|
||||
self.dumps_dir = self.m.path.join(
|
||||
self.swarming_out_dir, 'dumps')
|
||||
self._swarming_bot_id = None
|
||||
self._swarming_task_id = None
|
||||
|
||||
# Data should go under in _data_dir, which may be preserved across runs.
|
||||
self.android_data_dir = '/sdcard/revenge_of_the_skiabot/'
|
||||
# Executables go under _bin_dir, which, well, allows executable files.
|
||||
self.android_bin_dir = '/data/local/tmp/'
|
||||
|
||||
if self.builder_cfg.get('os', '') == 'Chromecast':
|
||||
# On the Chromecast, everything goes in the (~110M) /cache/skia
|
||||
self.android_bin_dir = '/cache/skia/'
|
||||
self.android_data_dir = '/cache/skia/'
|
||||
|
||||
self.chromeos_homedir = '/home/chronos/user/'
|
||||
|
||||
# Internal bot support.
|
||||
self.internal_hardware_label = (
|
||||
self.m.properties.get('internal_hardware_label'))
|
||||
@ -168,44 +82,6 @@ class SkiaVarsApi(recipe_api.RecipeApi):
|
||||
def is_linux(self):
|
||||
return 'Ubuntu' in self.builder_name or 'Debian' in self.builder_name
|
||||
|
||||
@property
|
||||
def upload_dm_results(self):
|
||||
# TODO(borenet): Move this into the swarm_test recipe.
|
||||
skip_upload_bots = [
|
||||
'ASAN',
|
||||
'Coverage',
|
||||
'MSAN',
|
||||
'TSAN',
|
||||
'UBSAN',
|
||||
'Valgrind',
|
||||
]
|
||||
upload_dm_results = True
|
||||
for s in skip_upload_bots:
|
||||
if s in self.m.properties['buildername']:
|
||||
upload_dm_results = False
|
||||
break
|
||||
return upload_dm_results
|
||||
|
||||
@property
|
||||
def upload_perf_results(self):
|
||||
# TODO(borenet): Move this into the swarm_perf recipe.
|
||||
if 'Release' not in self.m.properties['buildername']:
|
||||
return False
|
||||
skip_upload_bots = [
|
||||
'ASAN',
|
||||
'Coverage',
|
||||
'MSAN',
|
||||
'TSAN',
|
||||
'UBSAN',
|
||||
'Valgrind',
|
||||
]
|
||||
upload_perf_results = True
|
||||
for s in skip_upload_bots:
|
||||
if s in self.m.properties['buildername']:
|
||||
upload_perf_results = False
|
||||
break
|
||||
return upload_perf_results
|
||||
|
||||
@property
|
||||
def swarming_bot_id(self):
|
||||
if not self._swarming_bot_id:
|
||||
|
@ -1,35 +0,0 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
|
||||
],
|
||||
"name": "get swarming bot id",
|
||||
"stdout": "/path/to/tmp/",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
|
||||
],
|
||||
"name": "get swarming task id",
|
||||
"stdout": "/path/to/tmp/",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -1,35 +0,0 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
|
||||
],
|
||||
"name": "get swarming bot id",
|
||||
"stdout": "/path/to/tmp/",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
|
||||
],
|
||||
"name": "get swarming task id",
|
||||
"stdout": "/path/to/tmp/",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -1,35 +0,0 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
|
||||
],
|
||||
"name": "get swarming bot id",
|
||||
"stdout": "/path/to/tmp/",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
|
||||
],
|
||||
"name": "get swarming task id",
|
||||
"stdout": "/path/to/tmp/",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -16,22 +16,17 @@ def RunSteps(api):
|
||||
api.vars.override_gclient_cache = api.path['start_dir']
|
||||
api.vars.setup()
|
||||
info = [
|
||||
api.vars.upload_dm_results,
|
||||
api.vars.upload_perf_results,
|
||||
api.vars.swarming_bot_id,
|
||||
api.vars.swarming_task_id,
|
||||
]
|
||||
if api.vars.is_linux:
|
||||
assert len(info) == 4 # Make pylint happy.
|
||||
assert len(info) == 2 # Make pylint happy.
|
||||
|
||||
|
||||
TEST_BUILDERS = [
|
||||
'Build-Debian9-Clang-x86_64-Release-NoDEPS',
|
||||
'Build-Debian9-Clang-x86_64-Release-Override',
|
||||
'Build-Debian9-Clang-x86_64-Release-ParentRevision',
|
||||
'Build-Debian9-Clang-x86_64-Release-SKNX_NO_SIMD',
|
||||
'Build-Debian9-GCC-x86_64-Release-Flutter_Android',
|
||||
'Build-Mac-Clang-x86_64-Debug-CommandBuffer',
|
||||
'Build-Win-Clang-x86_64-Release-Vulkan',
|
||||
'Housekeeper-Weekly-RecreateSKPs',
|
||||
'Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug-All',
|
||||
|
@ -39,13 +39,14 @@ def go_get_fiddlecli(api):
|
||||
|
||||
def RunSteps(api):
|
||||
api.vars.setup()
|
||||
api.core.checkout_bot_update()
|
||||
checkout_root = api.core.default_checkout_root
|
||||
api.core.checkout_bot_update(checkout_root=checkout_root)
|
||||
api.infra.go_version()
|
||||
go_get_fiddlecli(api)
|
||||
|
||||
with api.context(cwd=api.vars.skia_dir, env=api.infra.go_env):
|
||||
bookmaker_binary = api.path.join(api.vars.skia_out, api.vars.configuration,
|
||||
'bookmaker')
|
||||
skia_dir = checkout_root.join('skia')
|
||||
with api.context(cwd=skia_dir, env=api.infra.go_env):
|
||||
bookmaker_binary = api.vars.skia_out.join('bookmaker')
|
||||
buildername = api.vars.builder_name
|
||||
|
||||
if 'PerCommit' in buildername:
|
||||
@ -125,10 +126,10 @@ def RunSteps(api):
|
||||
# Step 4: Update docs in site/user/api/ with the output of fiddlecli.
|
||||
# If there are any new changes then upload and commit the changes.
|
||||
cmd = ['python',
|
||||
api.vars.skia_dir.join('infra', 'bots', 'upload_md.py'),
|
||||
skia_dir.join('infra', 'bots', 'upload_md.py'),
|
||||
'--bookmaker_binary', bookmaker_binary,
|
||||
'--fiddlecli_output', fiddlecli_output]
|
||||
with api.context(cwd=api.vars.skia_dir, env=api.infra.go_env):
|
||||
with api.context(cwd=skia_dir, env=api.infra.go_env):
|
||||
api.run(api.step, 'Generate and Upload Markdown files', cmd=cmd)
|
||||
|
||||
|
||||
|
@ -28,7 +28,8 @@ def RunSteps(api):
|
||||
api.flavor.install(skps=True, svgs=True)
|
||||
api.file.ensure_directory('makedirs perf', api.vars.swarming_out_dir)
|
||||
|
||||
with api.context(cwd=api.vars.skia_dir):
|
||||
skia_dir = api.path['start_dir'].join('skia')
|
||||
with api.context(cwd=skia_dir):
|
||||
extra_arg = '--svgs %s --skps %s' % (api.flavor.device_dirs.svg_dir,
|
||||
api.flavor.device_dirs.skp_dir)
|
||||
|
||||
@ -41,7 +42,7 @@ def RunSteps(api):
|
||||
|
||||
command = [
|
||||
'python',
|
||||
api.vars.skia_dir.join('tools', 'calmbench', 'ab.py'),
|
||||
skia_dir.join('tools', 'calmbench', 'ab.py'),
|
||||
api.vars.swarming_out_dir,
|
||||
'modified', 'master',
|
||||
api.vars.build_dir.join("out", api.vars.configuration, 'nanobench'),
|
||||
@ -53,7 +54,7 @@ def RunSteps(api):
|
||||
config,
|
||||
-1, # threads; let ab.py decide the threads
|
||||
"false", # noinit
|
||||
"--githash", api.vars.got_revision,
|
||||
"--githash", api.properties['revision'],
|
||||
"--concise"
|
||||
]
|
||||
|
||||
|
@ -24,7 +24,8 @@ DEPS = [
|
||||
def RunSteps(api):
|
||||
# Checkout, compile, etc.
|
||||
api.vars.setup()
|
||||
api.core.checkout_bot_update()
|
||||
checkout_root = api.core.default_checkout_root
|
||||
api.core.checkout_bot_update(checkout_root=checkout_root)
|
||||
api.file.ensure_directory('makedirs tmp_dir', api.vars.tmp_dir)
|
||||
api.flavor.setup()
|
||||
|
||||
@ -55,7 +56,8 @@ for r, d, files in os.walk('%s'):
|
||||
""" % cwd)
|
||||
|
||||
# Regenerate the SKSL files.
|
||||
api.build()
|
||||
api.build(checkout_root=checkout_root,
|
||||
out_dir=api.vars.build_dir.join('out', 'Release'))
|
||||
|
||||
# Get a second diff. If this doesn't match the first, then there have been
|
||||
# modifications to the generated files.
|
||||
|
@ -0,0 +1,272 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/work"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs checkout_path"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"remove",
|
||||
"[START_DIR]/cache/work/.gclient_entries"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "remove [START_DIR]/cache/work/.gclient_entries"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
|
||||
"--spec-path",
|
||||
"cache_dir = '[START_DIR]/cache/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]",
|
||||
"--patch_root",
|
||||
"skia",
|
||||
"--revision_mapping_file",
|
||||
"{\"got_revision\": \"skia\"}",
|
||||
"--git-cache-dir",
|
||||
"[START_DIR]/cache/git",
|
||||
"--cleanup-dir",
|
||||
"[CLEANUP]/bot_update",
|
||||
"--output_json",
|
||||
"/path/to/tmp/json",
|
||||
"--revision",
|
||||
"skia@abc123"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work",
|
||||
"env_prefixes": {
|
||||
"PATH": [
|
||||
"RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
]
|
||||
},
|
||||
"infra_step": true,
|
||||
"name": "bot_update",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@Some step text@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@{@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": \"abc123\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/skia.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"skia\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#164710}\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"root\": \"skia\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"directories\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/skia.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@}@@@",
|
||||
"@@@STEP_LOG_END@json.output@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_revision@\"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#164710}\"@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/tmp"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs tmp_dir"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"[START_DIR]/cache/work/skia/infra/bots/assets/android_ndk_linux/VERSION",
|
||||
"/path/to/tmp/"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "Get android_ndk_linux VERSION"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"[START_DIR]/cache/work/skia/bin/fetch-gn"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"infra_step": true,
|
||||
"name": "fetch-gn"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"[START_DIR]/go/go/bin/go",
|
||||
"version"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"GOPATH": "[START_DIR]/gopath",
|
||||
"GOROOT": "[START_DIR]/go/go",
|
||||
"PATH": "[START_DIR]/go/go/bin:[START_DIR]/gopath:<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "go version"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"go",
|
||||
"version"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"GOPATH": "[START_DIR]/gopath",
|
||||
"GOROOT": "[START_DIR]/go/go",
|
||||
"PATH": "[START_DIR]/go/go/bin:[START_DIR]/gopath:<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "env go version"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"[START_DIR]/go/go/bin/go",
|
||||
"get",
|
||||
"-u",
|
||||
"-t",
|
||||
"go.skia.org/infra/..."
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"GOPATH": "[START_DIR]/gopath",
|
||||
"GOROOT": "[START_DIR]/go/go",
|
||||
"PATH": "[START_DIR]/go/go/bin:[START_DIR]/gopath:<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "update go pkgs"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"go",
|
||||
"build",
|
||||
"-o",
|
||||
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-universal-devrel-Android_SKQP/devrel/run_testlab",
|
||||
"[START_DIR]/cache/work/skia/infra/cts/run_testlab.go"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"GOPATH": "[START_DIR]/gopath",
|
||||
"GOROOT": "[START_DIR]/go/go",
|
||||
"PATH": "[START_DIR]/go/go/bin:[START_DIR]/gopath:<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "build firebase runner"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"[START_DIR]/cache/work/skia/tools/skqp/make_universal_apk"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"ANDROID_HOME": "[START_DIR]/android_sdk_linux/android-sdk",
|
||||
"ANDROID_NDK": "[START_DIR]/android_ndk_linux",
|
||||
"APK_OUTPUT_DIR": "[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-universal-devrel-Android_SKQP/devrel",
|
||||
"CHROME_HEADLESS": "1",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "make_universal"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
|
||||
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-universal-devrel-Android_SKQP/devrel",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/devrel"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "copy build products",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@try:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"[START_DIR]/cache/work/skia/infra/cts/whitelist_devices.json",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/devrel"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "copy whitelist"
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,211 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/work"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs checkout_path"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"remove",
|
||||
"[START_DIR]/cache/work/.gclient_entries"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "remove [START_DIR]/cache/work/.gclient_entries"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
|
||||
"--spec-path",
|
||||
"cache_dir = '[START_DIR]/cache/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]",
|
||||
"--patch_root",
|
||||
"skia",
|
||||
"--revision_mapping_file",
|
||||
"{\"got_revision\": \"skia\"}",
|
||||
"--git-cache-dir",
|
||||
"[START_DIR]/cache/git",
|
||||
"--cleanup-dir",
|
||||
"[CLEANUP]/bot_update",
|
||||
"--output_json",
|
||||
"/path/to/tmp/json",
|
||||
"--revision",
|
||||
"skia@abc123^"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work",
|
||||
"env_prefixes": {
|
||||
"PATH": [
|
||||
"RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
]
|
||||
},
|
||||
"infra_step": true,
|
||||
"name": "bot_update",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@Some step text@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@{@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": \"abc123^\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/skia.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"skia\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#164710}\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"root\": \"skia\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"directories\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/skia.git\", @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||
"@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
|
||||
"@@@STEP_LOG_LINE@json.output@}@@@",
|
||||
"@@@STEP_LOG_END@json.output@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_revision@\"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
|
||||
"@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#164710}\"@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/tmp"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "makedirs tmp_dir"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"copy",
|
||||
"[START_DIR]/cache/work/skia/infra/bots/assets/clang_linux/VERSION",
|
||||
"/path/to/tmp/"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "Get clang_linux VERSION"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"[START_DIR]/cache/work/skia/bin/fetch-gn"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"infra_step": true,
|
||||
"name": "fetch-gn"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"[START_DIR]/cache/work/skia/bin/gn",
|
||||
"gen",
|
||||
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Release-ParentRevision/Release",
|
||||
"--args=cc=\"[START_DIR]/clang_linux/bin/clang\" cxx=\"[START_DIR]/clang_linux/bin/clang++\" extra_cflags=[\"-B[START_DIR]/clang_linux/bin\", \"-DDUMMY_clang_linux_version=42\"] extra_ldflags=[\"-B[START_DIR]/clang_linux/bin\", \"-fuse-ld=lld\"] is_debug=false target_cpu=\"x86_64\""
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "gn gen"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"ninja",
|
||||
"-k",
|
||||
"0",
|
||||
"-C",
|
||||
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Release-ParentRevision/Release"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/skia",
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "ninja"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
|
||||
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Release-ParentRevision/Release",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/ParentRevision/out/Release"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "copy build products",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@try:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -170,7 +170,7 @@
|
||||
"cmd": [
|
||||
"ninja",
|
||||
"-C",
|
||||
"out/android_release",
|
||||
"[START_DIR]/cache/work/flutter/src/out/android_release",
|
||||
"-j100"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/flutter/src",
|
||||
@ -185,7 +185,7 @@
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
|
||||
"[START_DIR]/cache/work/flutter/src/third_party/skia/out/Build-Debian9-GCC-x86_64-Release-Flutter_Android/Release",
|
||||
"[START_DIR]/cache/work/flutter/src/out/android_release",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Release"
|
||||
],
|
||||
"infra_step": true,
|
||||
|
@ -174,7 +174,7 @@
|
||||
"cmd": [
|
||||
"ninja",
|
||||
"-C",
|
||||
"out/android_release",
|
||||
"[START_DIR]/cache/work/flutter/src/out/android_release",
|
||||
"-j100"
|
||||
],
|
||||
"cwd": "[START_DIR]/cache/work/flutter/src",
|
||||
@ -189,7 +189,7 @@
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
|
||||
"[START_DIR]/cache/work/flutter/src/third_party/skia/out/Build-Debian9-GCC-x86_64-Release-Flutter_Android/Release",
|
||||
"[START_DIR]/cache/work/flutter/src/out/android_release",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Release"
|
||||
],
|
||||
"infra_step": true,
|
||||
|
@ -27,16 +27,35 @@ def RunSteps(api):
|
||||
|
||||
# Check out code.
|
||||
if 'NoDEPS' in api.properties['buildername']:
|
||||
api.core.checkout_git()
|
||||
checkout_root = api.path['start_dir']
|
||||
api.core.checkout_git(checkout_root=checkout_root)
|
||||
else:
|
||||
api.core.checkout_bot_update()
|
||||
checkout_root = api.core.default_checkout_root
|
||||
if 'Flutter' in api.vars.builder_name:
|
||||
checkout_root = checkout_root.join('flutter')
|
||||
api.core.checkout_bot_update(checkout_root=checkout_root)
|
||||
|
||||
api.file.ensure_directory('makedirs tmp_dir', api.vars.tmp_dir)
|
||||
|
||||
out_dir = checkout_root.join(
|
||||
'skia', 'out', api.vars.builder_name, api.vars.configuration)
|
||||
if 'Flutter' in api.vars.builder_name:
|
||||
out_dir = checkout_root.join('src', 'out', 'android_release')
|
||||
|
||||
try:
|
||||
api.build()
|
||||
api.build.copy_build_products(
|
||||
api.vars.swarming_out_dir.join(
|
||||
'out', api.vars.configuration))
|
||||
api.build(checkout_root=checkout_root, out_dir=out_dir)
|
||||
|
||||
# TODO(borenet): Move this out of the try/finally.
|
||||
dst = api.vars.swarming_out_dir.join('out', api.vars.configuration)
|
||||
if 'ParentRevision' in api.vars.builder_name:
|
||||
dst = api.vars.swarming_out_dir.join(
|
||||
'ParentRevision', 'out', api.vars.configuration)
|
||||
api.build.copy_build_products(out_dir=out_dir, dst=dst)
|
||||
if 'SKQP' in api.vars.extra_tokens:
|
||||
wlist = checkout_root.join(
|
||||
'skia', 'infra','cts', 'whitelist_devices.json')
|
||||
api.file.copy('copy whitelist', wlist, dst)
|
||||
|
||||
finally:
|
||||
if 'Win' in api.vars.builder_cfg.get('os', ''):
|
||||
api.python.inline(
|
||||
@ -57,8 +76,9 @@ for p in psutil.process_iter():
|
||||
TEST_BUILDERS = [
|
||||
'Build-Debian9-Clang-arm-Release-Chromebook_GLES',
|
||||
'Build-Debian9-Clang-arm64-Release-Android',
|
||||
'Build-Debian9-Clang-arm64-Release-Android_Vulkan',
|
||||
'Build-Debian9-Clang-arm64-Release-Android_ASAN',
|
||||
'Build-Debian9-Clang-arm64-Release-Android_Vulkan',
|
||||
'Build-Debian9-Clang-universal-devrel-Android_SKQP',
|
||||
'Build-Debian9-Clang-x86_64-Debug',
|
||||
'Build-Debian9-Clang-x86_64-Debug-ASAN',
|
||||
'Build-Debian9-Clang-x86_64-Debug-Coverage',
|
||||
@ -68,6 +88,7 @@ TEST_BUILDERS = [
|
||||
'Build-Debian9-Clang-x86_64-Release-Fast',
|
||||
'Build-Debian9-Clang-x86_64-Release-Mini',
|
||||
'Build-Debian9-Clang-x86_64-Release-NoDEPS',
|
||||
'Build-Debian9-Clang-x86_64-Release-ParentRevision',
|
||||
'Build-Debian9-Clang-x86_64-Release-Vulkan',
|
||||
'Build-Debian9-Clang-x86_64-Release-Vulkan_Coverage',
|
||||
'Build-Debian9-EMCC-wasm-Release',
|
||||
|
@ -75,21 +75,22 @@ def RunSteps(api):
|
||||
else:
|
||||
raise Exception('Do not recognise the buildername %s.' % buildername)
|
||||
|
||||
api.vars.override_checkout_root = make_path(api, '/', 'b', 'work')
|
||||
api.vars.override_gclient_cache = make_path(api, '/', 'b', 'cache')
|
||||
|
||||
api.vars.setup()
|
||||
api.core.checkout_bot_update()
|
||||
checkout_root = make_path(api, '/', 'b', 'work')
|
||||
gclient_cache = make_path(api, '/', 'b', 'cache')
|
||||
got_revision = api.core.checkout_bot_update(checkout_root=checkout_root,
|
||||
gclient_cache=gclient_cache)
|
||||
api.file.ensure_directory('makedirs tmp_dir', api.vars.tmp_dir)
|
||||
|
||||
api.build()
|
||||
out_dir = api.vars.build_dir.join('out', api.vars.configuration)
|
||||
api.build(checkout_root=checkout_root, out_dir=out_dir)
|
||||
|
||||
# Required paths.
|
||||
infrabots_dir = api.vars.skia_dir.join('infra', 'bots')
|
||||
infrabots_dir = checkout_root.join('skia', 'infra', 'bots')
|
||||
isolate_dir = infrabots_dir.join('ct')
|
||||
isolate_path = isolate_dir.join(CT_SKPS_ISOLATE)
|
||||
|
||||
api.build.copy_build_products(isolate_dir)
|
||||
api.build.copy_build_products(out_dir=out_dir, dst=isolate_dir)
|
||||
api.skia_swarming.setup(
|
||||
infrabots_dir.join('tools', 'luci-go'),
|
||||
swarming_rev='')
|
||||
@ -131,8 +132,8 @@ def RunSteps(api):
|
||||
# referenced also needs to change. As of 8/8/17 the other places are:
|
||||
# * infra/bots/ct/ct_skps.isolate
|
||||
# * infra/bots/ct/run_ct_skps.py
|
||||
skps_dir = api.vars.checkout_root.join('skps', skps_chromium_build,
|
||||
ct_page_type, str(ct_num_slaves))
|
||||
skps_dir = checkout_root.join('skps', skps_chromium_build,
|
||||
ct_page_type, str(ct_num_slaves))
|
||||
version_file = skps_dir.join(SKPS_VERSION_FILE)
|
||||
if api.path.exists(version_file): # pragma: nocover
|
||||
version_file_contents = api.file.read_text(
|
||||
@ -150,7 +151,7 @@ def RunSteps(api):
|
||||
'makedirs %s' % api.path.basename(skps_dir), skps_dir)
|
||||
|
||||
# If a blacklist file exists then specify SKPs to be blacklisted.
|
||||
blacklists_dir = api.vars.skia_dir.join('infra', 'bots', 'ct', 'blacklists')
|
||||
blacklists_dir = infrabots_dir.join('ct', 'blacklists')
|
||||
blacklist_file = blacklists_dir.join(
|
||||
'%s_%s_%s.json' % (skia_tool, ct_page_type, skps_chromium_build))
|
||||
blacklist_skps = []
|
||||
@ -173,7 +174,7 @@ def RunSteps(api):
|
||||
extra_variables = {
|
||||
'SLAVE_NUM': str(slave_num),
|
||||
'TOOL_NAME': skia_tool,
|
||||
'GIT_HASH': api.vars.got_revision,
|
||||
'GIT_HASH': got_revision,
|
||||
'CONFIGURATION': api.vars.configuration,
|
||||
'BUILDER': buildername,
|
||||
'CHROMIUM_BUILD': skps_chromium_build,
|
||||
|
@ -28,15 +28,14 @@ DEPS = [
|
||||
def RunSteps(api):
|
||||
# Checkout, compile, etc.
|
||||
api.vars.setup()
|
||||
api.core.checkout_bot_update()
|
||||
checkout_root = api.core.default_checkout_root
|
||||
got_revision = api.core.checkout_bot_update(checkout_root=checkout_root)
|
||||
api.file.ensure_directory('makedirs tmp_dir', api.vars.tmp_dir)
|
||||
api.flavor.setup()
|
||||
|
||||
cwd = api.path['checkout']
|
||||
|
||||
# TODO(borenet): Detect static initializers?
|
||||
|
||||
with api.context(cwd=cwd):
|
||||
with api.context(cwd=checkout_root.join('skia')):
|
||||
if not api.vars.is_trybot:
|
||||
api.run(
|
||||
api.step,
|
||||
@ -46,12 +45,12 @@ def RunSteps(api):
|
||||
|
||||
now = api.time.utcnow()
|
||||
ts = int(calendar.timegm(now.utctimetuple()))
|
||||
filename = 'nanobench_%s_%d.json' % (api.vars.got_revision, ts)
|
||||
dest_dir = api.vars.perf_data_dir
|
||||
filename = 'nanobench_%s_%d.json' % (got_revision, ts)
|
||||
dest_dir = api.flavor.host_dirs.perf_data_dir
|
||||
dest_file = dest_dir + '/' + filename
|
||||
api.file.ensure_directory('makedirs perf_dir', dest_dir)
|
||||
cmd = ['python', api.core.resource('run_binary_size_analysis.py'),
|
||||
'--library', api.vars.skia_out.join('Release', 'libskia.so'),
|
||||
'--library', api.vars.skia_out.join('libskia.so'),
|
||||
'--githash', api.properties['revision'],
|
||||
'--dest', dest_file]
|
||||
if api.vars.is_trybot:
|
||||
|
@ -20,14 +20,15 @@ DEPS = [
|
||||
|
||||
def RunSteps(api):
|
||||
api.vars.setup()
|
||||
api.core.checkout_bot_update()
|
||||
checkout_root = api.core.default_checkout_root
|
||||
api.core.checkout_bot_update(checkout_root=checkout_root)
|
||||
api.infra.update_go_deps()
|
||||
|
||||
# Run the infra tests.
|
||||
repo_name = api.properties['repository'].split('/')[-1]
|
||||
if repo_name.endswith('.git'):
|
||||
repo_name = repo_name[:-len('.git')]
|
||||
with api.context(cwd=api.vars.checkout_root.join(repo_name),
|
||||
with api.context(cwd=checkout_root.join(repo_name),
|
||||
env=api.infra.go_env):
|
||||
api.step('infra_tests', cmd=['make', '-C', 'infra/bots', 'test'])
|
||||
|
||||
|
@ -27,6 +27,23 @@ DEPS = [
|
||||
]
|
||||
|
||||
|
||||
def upload_perf_results(buildername):
|
||||
if 'Release' not in buildername:
|
||||
return False
|
||||
skip_upload_bots = [
|
||||
'ASAN',
|
||||
'Coverage',
|
||||
'MSAN',
|
||||
'TSAN',
|
||||
'UBSAN',
|
||||
'Valgrind',
|
||||
]
|
||||
for s in skip_upload_bots:
|
||||
if s in buildername:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def nanobench_flags(api, bot):
|
||||
args = ['--pre_log']
|
||||
|
||||
@ -240,14 +257,15 @@ def nanobench_flags(api, bot):
|
||||
|
||||
def perf_steps(api):
|
||||
"""Run Skia benchmarks."""
|
||||
if api.vars.upload_perf_results:
|
||||
b = api.properties['buildername']
|
||||
if upload_perf_results(b):
|
||||
api.flavor.create_clean_device_dir(
|
||||
api.flavor.device_dirs.perf_data_dir)
|
||||
|
||||
# Run nanobench.
|
||||
properties = [
|
||||
'--properties',
|
||||
'gitHash', api.vars.got_revision,
|
||||
'gitHash', api.properties['revision'],
|
||||
]
|
||||
if api.vars.is_trybot:
|
||||
properties.extend([
|
||||
@ -297,12 +315,12 @@ def perf_steps(api):
|
||||
'~shapes_rrect_inner_rrect_50_500x500', # skia:7551
|
||||
])
|
||||
|
||||
if api.vars.upload_perf_results:
|
||||
if upload_perf_results(b):
|
||||
now = api.time.utcnow()
|
||||
ts = int(calendar.timegm(now.utctimetuple()))
|
||||
json_path = api.flavor.device_path_join(
|
||||
api.flavor.device_dirs.perf_data_dir,
|
||||
'nanobench_%s_%d.json' % (api.vars.got_revision, ts))
|
||||
'nanobench_%s_%d.json' % (api.properties['revision'], ts))
|
||||
args.extend(['--outResultsFile', json_path])
|
||||
args.extend(properties)
|
||||
|
||||
@ -320,12 +338,13 @@ def perf_steps(api):
|
||||
abort_on_failure=False)
|
||||
|
||||
# Copy results to swarming out dir.
|
||||
if api.vars.upload_perf_results:
|
||||
api.file.ensure_directory('makedirs perf_dir',
|
||||
api.path.dirname(api.vars.perf_data_dir))
|
||||
if upload_perf_results(b):
|
||||
api.file.ensure_directory(
|
||||
'makedirs perf_dir',
|
||||
api.path.dirname(api.flavor.host_dirs.perf_data_dir))
|
||||
api.flavor.copy_directory_contents_to_host(
|
||||
api.flavor.device_dirs.perf_data_dir,
|
||||
api.vars.perf_data_dir)
|
||||
api.flavor.host_dirs.perf_data_dir)
|
||||
|
||||
|
||||
def RunSteps(api):
|
||||
|
@ -36,11 +36,13 @@ TEST_BUILDERS = {
|
||||
def RunSteps(api):
|
||||
# Check out Chrome.
|
||||
api.vars.setup()
|
||||
api.core.checkout_bot_update()
|
||||
checkout_root = api.core.default_checkout_root
|
||||
api.core.checkout_bot_update(checkout_root=checkout_root)
|
||||
api.file.ensure_directory('makedirs tmp_dir', api.vars.tmp_dir)
|
||||
api.flavor.setup()
|
||||
|
||||
src_dir = api.vars.checkout_root.join('src')
|
||||
src_dir = checkout_root.join('src')
|
||||
skia_dir = checkout_root.join('skia')
|
||||
out_dir = src_dir.join('out', 'Release')
|
||||
|
||||
with api.context(cwd=src_dir):
|
||||
@ -62,7 +64,7 @@ def RunSteps(api):
|
||||
api.file.ensure_directory('makedirs skp_output', output_dir)
|
||||
|
||||
# Capture the SKPs.
|
||||
asset_dir = api.vars.infrabots_dir.join('assets', 'skp')
|
||||
asset_dir = skia_dir.join('infra', 'bots', 'assets', 'skp')
|
||||
cmd = ['python', asset_dir.join('create.py'),
|
||||
'--chrome_src_path', src_dir,
|
||||
'--browser_executable', src_dir.join('out', 'Release', 'chrome'),
|
||||
@ -70,16 +72,16 @@ def RunSteps(api):
|
||||
# TODO(rmistry): Uncomment the below after skbug.com/6797 is fixed.
|
||||
# if 'Canary' not in api.properties['buildername']:
|
||||
# cmd.append('--upload_to_partner_bucket')
|
||||
with api.context(cwd=api.vars.skia_dir):
|
||||
with api.context(cwd=skia_dir):
|
||||
api.run(api.step, 'Recreate SKPs', cmd=cmd)
|
||||
|
||||
# Upload the SKPs.
|
||||
if 'Canary' not in api.properties['buildername']:
|
||||
api.infra.update_go_deps()
|
||||
cmd = ['python',
|
||||
api.vars.skia_dir.join('infra', 'bots', 'upload_skps.py'),
|
||||
skia_dir.join('infra', 'bots', 'upload_skps.py'),
|
||||
'--target_dir', output_dir]
|
||||
with api.context(cwd=api.vars.skia_dir, env=api.infra.go_env):
|
||||
with api.context(cwd=skia_dir, env=api.infra.go_env):
|
||||
api.run(api.step, 'Upload SKPs', cmd=cmd)
|
||||
|
||||
|
||||
|
@ -10,7 +10,6 @@ import calendar
|
||||
|
||||
|
||||
DEPS = [
|
||||
'core',
|
||||
'flavor',
|
||||
'recipe_engine/context',
|
||||
'recipe_engine/file',
|
||||
@ -28,7 +27,7 @@ ADB_BINARY = 'adb.1.0.35'
|
||||
|
||||
|
||||
def _run(api, title, *cmd, **kwargs):
|
||||
with api.context(cwd=api.vars.skia_dir):
|
||||
with api.context(cwd=api.path['start_dir'].join('skia')):
|
||||
return api.run(api.step, title, cmd=list(cmd), **kwargs)
|
||||
|
||||
|
||||
@ -40,10 +39,11 @@ def _adb(api, title, *cmd, **kwargs):
|
||||
|
||||
def skpbench_steps(api):
|
||||
"""benchmark Skia using skpbench."""
|
||||
api.file.ensure_directory('makedirs perf_dir', api.vars.perf_data_dir)
|
||||
api.file.ensure_directory(
|
||||
'makedirs perf_dir', api.flavor.host_dirs.perf_data_dir)
|
||||
|
||||
app = api.vars.skia_out.join(api.vars.configuration, 'skpbench')
|
||||
_adb(api, 'push skpbench', 'push', app, api.vars.android_bin_dir)
|
||||
app = api.vars.skia_out.join('skpbench')
|
||||
_adb(api, 'push skpbench', 'push', app, api.flavor.device_dirs.bin_dir)
|
||||
|
||||
skpbench_dir = api.vars.slave_dir.join('skia', 'tools', 'skpbench')
|
||||
table = api.path.join(api.vars.swarming_out_dir, 'table')
|
||||
@ -54,7 +54,7 @@ def skpbench_steps(api):
|
||||
config = 'gles'
|
||||
|
||||
skpbench_args = [
|
||||
api.path.join(api.vars.android_bin_dir, 'skpbench'),
|
||||
api.path.join(api.flavor.device_dirs.bin_dir, 'skpbench'),
|
||||
'--adb',
|
||||
'--adb_binary', ADB_BINARY,
|
||||
'--resultsfile', table,
|
||||
@ -65,11 +65,10 @@ def skpbench_steps(api):
|
||||
skpbench_args += [
|
||||
'--pr', 'ccpr',
|
||||
'--nocache',
|
||||
api.path.join(api.vars.android_data_dir, 'skps/desk_*svg.skp'),
|
||||
api.path.join(api.vars.android_data_dir, 'skps/desk_chalkboard.skp')]
|
||||
api.path.join(api.flavor.device_dirs.skp_dir, 'desk_*svg.skp'),
|
||||
api.path.join(api.flavor.device_dirs.skp_dir, 'desk_chalkboard.skp')]
|
||||
else:
|
||||
skpbench_args += [
|
||||
api.path.join(api.vars.android_data_dir, 'skps')]
|
||||
skpbench_args += [api.flavor.device_dirs.skp_dir]
|
||||
|
||||
api.run(api.python, 'skpbench',
|
||||
script=skpbench_dir.join('skpbench.py'),
|
||||
@ -78,7 +77,7 @@ def skpbench_steps(api):
|
||||
skiaperf_args = [
|
||||
table,
|
||||
'--properties',
|
||||
'gitHash', api.vars.got_revision,
|
||||
'gitHash', api.properties['revision'],
|
||||
]
|
||||
if api.vars.is_trybot:
|
||||
skiaperf_args.extend([
|
||||
@ -93,8 +92,8 @@ def skpbench_steps(api):
|
||||
now = api.time.utcnow()
|
||||
ts = int(calendar.timegm(now.utctimetuple()))
|
||||
json_path = api.path.join(
|
||||
api.vars.perf_data_dir,
|
||||
'skpbench_%s_%d.json' % (api.vars.got_revision, ts))
|
||||
api.flavor.host_dirs.perf_data_dir,
|
||||
'skpbench_%s_%d.json' % (api.properties['revision'], ts))
|
||||
|
||||
skiaperf_args.extend([
|
||||
'--outfile', json_path
|
||||
|
@ -24,6 +24,21 @@ DEPS = [
|
||||
]
|
||||
|
||||
|
||||
def upload_dm_results(buildername):
|
||||
skip_upload_bots = [
|
||||
'ASAN',
|
||||
'Coverage',
|
||||
'MSAN',
|
||||
'TSAN',
|
||||
'UBSAN',
|
||||
'Valgrind',
|
||||
]
|
||||
for s in skip_upload_bots:
|
||||
if s in buildername:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def dm_flags(api, bot):
|
||||
args = []
|
||||
configs = []
|
||||
@ -828,10 +843,11 @@ def key_params(api):
|
||||
|
||||
def test_steps(api):
|
||||
"""Run the DM test."""
|
||||
b = api.properties['buildername']
|
||||
use_hash_file = False
|
||||
if api.vars.upload_dm_results:
|
||||
host_dm_dir = str(api.vars.dm_dir)
|
||||
api.flavor.create_clean_host_dir(api.vars.test_dir)
|
||||
if upload_dm_results(b):
|
||||
host_dm_dir = str(api.flavor.host_dirs.dm_dir)
|
||||
api.flavor.create_clean_host_dir(api.path['start_dir'].join('test'))
|
||||
device_dm_dir = str(api.flavor.device_dirs.dm_dir)
|
||||
if host_dm_dir != device_dm_dir:
|
||||
api.flavor.create_clean_device_dir(device_dm_dir)
|
||||
@ -887,7 +903,7 @@ def test_steps(api):
|
||||
|
||||
# Run DM.
|
||||
properties = [
|
||||
'gitHash', api.vars.got_revision,
|
||||
'gitHash', api.properties['revision'],
|
||||
'builder', api.vars.builder_name,
|
||||
'buildbucket_build_id', api.properties.get('buildbucket_build_id', ''),
|
||||
]
|
||||
@ -931,7 +947,7 @@ def test_steps(api):
|
||||
|
||||
if use_hash_file:
|
||||
args.extend(['--uninterestingHashesFile', hashes_file])
|
||||
if api.vars.upload_dm_results:
|
||||
if upload_dm_results(b):
|
||||
args.extend(['--writePath', api.flavor.device_dirs.dm_dir])
|
||||
|
||||
args.extend(dm_flags(api, api.vars.builder_name))
|
||||
@ -946,10 +962,10 @@ def test_steps(api):
|
||||
|
||||
api.run(api.flavor.step, 'dm', cmd=args, abort_on_failure=False)
|
||||
|
||||
if api.vars.upload_dm_results:
|
||||
if upload_dm_results(b):
|
||||
# Copy images and JSON to host machine if needed.
|
||||
api.flavor.copy_directory_contents_to_host(
|
||||
api.flavor.device_dirs.dm_dir, api.vars.dm_dir)
|
||||
api.flavor.device_dirs.dm_dir, api.flavor.host_dirs.dm_dir)
|
||||
|
||||
|
||||
def RunSteps(api):
|
||||
|
@ -27,7 +27,7 @@ def FindFile(api, suffix):
|
||||
with api.context(cwd=api.path['start_dir']):
|
||||
results = api.file.glob_paths(
|
||||
'find %s results' % suffix,
|
||||
api.vars.perf_dir,
|
||||
api.path['start_dir'].join('perf'),
|
||||
'*.%s' % suffix,
|
||||
test_data=['bench_modified_master.%s' % suffix])
|
||||
if len(results) != 1: # pragma: nocover
|
||||
@ -48,7 +48,7 @@ def RunSteps(api):
|
||||
csv_src = FindFile(api, "csv")
|
||||
|
||||
ts = int(calendar.timegm(now.utctimetuple()))
|
||||
basename = "bench_modified_master_%s_%d" % (api.vars.got_revision, ts)
|
||||
basename = "bench_modified_master_%s_%d" % (api.properties['revision'], ts)
|
||||
|
||||
gs_path = '/'.join((
|
||||
'calmbench-v1', str(now.year).zfill(4),
|
||||
|
Loading…
Reference in New Issue
Block a user