From dcd2a908f424f080170a7d415ea0280d186e5d7f Mon Sep 17 00:00:00 2001 From: Kevin Lubick Date: Wed, 8 Mar 2017 14:01:01 -0500 Subject: [PATCH] Add jobs for building for Chromecast BUG=skia:6345 Change-Id: Iaf09eb7f57ae71687c6804221837a8cc8ef04931 Reviewed-on: https://skia-review.googlesource.com/9419 Commit-Queue: Kevin Lubick Reviewed-by: Eric Boren --- infra/bots/assets/cast_toolchain/README.md | 1 + infra/bots/assets/cast_toolchain/VERSION | 1 + infra/bots/assets/cast_toolchain/common.py | 26 ++++ infra/bots/assets/cast_toolchain/download.py | 16 +++ infra/bots/assets/cast_toolchain/upload.py | 16 +++ infra/bots/gen_tasks.go | 5 + infra/bots/jobs.json | 2 + .../Build-Ubuntu-GCC-arm-Release-Chromecast.json | 160 +++++++++++++++++++++ infra/bots/recipe_modules/compile/example.py | 1 + infra/bots/recipe_modules/flavor/api.py | 6 + .../recipe_modules/flavor/gn_chromecast_flavor.py | 59 ++++++++ infra/bots/tasks.json | 76 ++++++++++ 12 files changed, 369 insertions(+) create mode 100644 infra/bots/assets/cast_toolchain/README.md create mode 100644 infra/bots/assets/cast_toolchain/VERSION create mode 100755 infra/bots/assets/cast_toolchain/common.py create mode 100755 infra/bots/assets/cast_toolchain/download.py create mode 100755 infra/bots/assets/cast_toolchain/upload.py create mode 100644 infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json create mode 100644 infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py diff --git a/infra/bots/assets/cast_toolchain/README.md b/infra/bots/assets/cast_toolchain/README.md new file mode 100644 index 0000000..2b96d18 --- /dev/null +++ b/infra/bots/assets/cast_toolchain/README.md @@ -0,0 +1 @@ +See https://docs.google.com/document/d/1BpyncT9XPmtiHTlJyBpO9vVUIz6g1CRFpLL8rpoxy0M/edit \ No newline at end of file diff --git a/infra/bots/assets/cast_toolchain/VERSION b/infra/bots/assets/cast_toolchain/VERSION new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/infra/bots/assets/cast_toolchain/VERSION @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/infra/bots/assets/cast_toolchain/common.py b/infra/bots/assets/cast_toolchain/common.py new file mode 100755 index 0000000..4920c9b --- /dev/null +++ b/infra/bots/assets/cast_toolchain/common.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# +# Copyright 2016 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Common vars used by scripts in this directory.""" + + +import os +import sys + +FILE_DIR = os.path.dirname(os.path.abspath(__file__)) +INFRA_BOTS_DIR = os.path.realpath(os.path.join(FILE_DIR, os.pardir, os.pardir)) + +sys.path.insert(0, INFRA_BOTS_DIR) +from assets import assets + +ASSET_NAME = os.path.basename(FILE_DIR) + + +def run(cmd): + """Run a command, eg. "upload" or "download". """ + assets.main([cmd, ASSET_NAME] + sys.argv[1:]) diff --git a/infra/bots/assets/cast_toolchain/download.py b/infra/bots/assets/cast_toolchain/download.py new file mode 100755 index 0000000..96cc87d --- /dev/null +++ b/infra/bots/assets/cast_toolchain/download.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# +# Copyright 2016 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Download the current version of the asset.""" + + +import common + + +if __name__ == '__main__': + common.run('download') diff --git a/infra/bots/assets/cast_toolchain/upload.py b/infra/bots/assets/cast_toolchain/upload.py new file mode 100755 index 0000000..ba7fc8b --- /dev/null +++ b/infra/bots/assets/cast_toolchain/upload.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# +# Copyright 2016 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Upload a new version of the asset.""" + + +import common + + +if __name__ == '__main__': + common.run('upload') diff --git a/infra/bots/gen_tasks.go b/infra/bots/gen_tasks.go index ebf2b10..a7353b5 100644 --- a/infra/bots/gen_tasks.go +++ b/infra/bots/gen_tasks.go @@ -97,6 +97,9 @@ func deriveCompileTaskName(jobName string, parts map[string]string) string { ec = "Android_Vulkan" } task_os = "Ubuntu" + } else if task_os == "Chromecast" { + task_os = "Ubuntu" + ec = "Chromecast" } else if task_os == "iOS" { ec = task_os task_os = "Mac" @@ -223,6 +226,8 @@ func compile(b *specs.TasksCfgBuilder, name string, parts map[string]string) str } else { pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("android_ndk_linux")) } + } else if strings.Contains(name, "Chromecast") { + pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("cast_toolchain")) } else if strings.Contains(name, "Ubuntu") { if strings.Contains(name, "Clang") { pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("clang_linux")) diff --git a/infra/bots/jobs.json b/infra/bots/jobs.json index 079c7a6..1623834 100644 --- a/infra/bots/jobs.json +++ b/infra/bots/jobs.json @@ -35,6 +35,8 @@ "Build-Ubuntu-Clang-x86_64-Release-Mini", "Build-Ubuntu-Clang-x86_64-Release-TSAN", "Build-Ubuntu-Clang-x86_64-Release-Vulkan", + "Build-Ubuntu-GCC-arm-Debug-Chromecast", + "Build-Ubuntu-GCC-arm-Release-Chromecast", "Build-Ubuntu-GCC-x86-Debug", "Build-Ubuntu-GCC-x86-Release", "Build-Ubuntu-GCC-x86_64-Debug", diff --git a/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json new file mode 100644 index 0000000..bafdb90 --- /dev/null +++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json @@ -0,0 +1,160 @@ +[ + { + "cmd": [ + "python", + "-u", + "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n", + "[CUSTOM_/_B_WORK]", + "511" + ], + "name": "makedirs checkout_path", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@import sys, os@@@", + "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@", + "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@", + "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py", + "--spec", + "cache_dir = '[CUSTOM_/_B_CACHE]'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]", + "--patch_root", + "skia", + "--revision_mapping_file", + "{\"skia\": \"got_revision\"}", + "--git-cache-dir", + "[CUSTOM_/_B_CACHE]", + "--output_json", + "/path/to/tmp/json", + "--revision", + "skia@abc123", + "--output_manifest" + ], + "cwd": "[CUSTOM_/_B_WORK]", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "GIT_HTTP_LOW_SPEED_LIMIT": "1000", + "GIT_HTTP_LOW_SPEED_TIME": "300", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-arm-Release-Chromecast" + }, + "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@ \"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", + "[CUSTOM_/_B_WORK]/skia/bin/fetch-gn" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "fetch-gn" + }, + { + "cmd": [ + "[CUSTOM_/_B_WORK]/skia/bin/gn", + "gen", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-arm-Release-Chromecast/Release", + "--args=ar=\"[START_DIR]/cast_toolchain/bin/armv7a-cros-linux-gnueabi-ar\" cc=\"[START_DIR]/cast_toolchain/bin/armv7a-cros-linux-gnueabi-gcc\" cxx=\"[START_DIR]/cast_toolchain/bin/armv7a-cros-linux-gnueabi-g++\" extra_cflags=[\"-g0\"] extra_ldflags=[\"-static-libstdc++\", \"-static-libgcc\"] is_debug=false skia_enable_gpu=false skia_use_fontconfig=false skia_use_icu=false skia_use_system_freetype2=false target_cpu=\"arm\"" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gn gen" + }, + { + "cmd": [ + "ninja", + "-C", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-arm-Release-Chromecast/Release", + "nanobench" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "PATH": "%(PATH)s: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 = ['dm', 'dm.exe', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']\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", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-arm-Release-Chromecast/Release", + "[CUSTOM_[SWARM_OUT_DIR]]/out/Release" + ], + "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 = ['dm', 'dm.exe', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']@@@", + "@@@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 + } +] \ No newline at end of file diff --git a/infra/bots/recipe_modules/compile/example.py b/infra/bots/recipe_modules/compile/example.py index 988184e..967637b 100644 --- a/infra/bots/recipe_modules/compile/example.py +++ b/infra/bots/recipe_modules/compile/example.py @@ -29,6 +29,7 @@ TEST_BUILDERS = { 'Build-Ubuntu-Clang-x86_64-Debug-GN', 'Build-Ubuntu-Clang-x86_64-Release-Mini', 'Build-Ubuntu-Clang-x86_64-Release-Vulkan', + 'Build-Ubuntu-GCC-arm-Release-Chromecast', 'Build-Ubuntu-GCC-x86-Debug', 'Build-Ubuntu-GCC-x86_64-Debug-GN', 'Build-Ubuntu-GCC-x86_64-Debug-MSAN', diff --git a/infra/bots/recipe_modules/flavor/api.py b/infra/bots/recipe_modules/flavor/api.py index c90136f..eadaea0 100644 --- a/infra/bots/recipe_modules/flavor/api.py +++ b/infra/bots/recipe_modules/flavor/api.py @@ -11,6 +11,7 @@ from recipe_engine import recipe_api from . import default_flavor from . import flutter_flavor from . import gn_android_flavor +from . import gn_chromecast_flavor from . import gn_flavor from . import ios_flavor from . import pdfium_flavor @@ -30,6 +31,9 @@ VERSION_NONE = -1 def is_android(builder_cfg): return 'Android' in builder_cfg.get('extra_config', '') +def is_chromecast(builder_cfg): + return 'Chromecast' in builder_cfg.get('extra_config', '') + def is_flutter(builder_cfg): return 'Flutter' in builder_cfg.get('extra_config', '') @@ -48,6 +52,8 @@ class SkiaFlavorApi(recipe_api.RecipeApi): """Return a flavor utils object specific to the given builder.""" if is_flutter(builder_cfg): return flutter_flavor.FlutterFlavorUtils(self.m) + if is_chromecast(builder_cfg): + return gn_chromecast_flavor.GNChromecastFlavorUtils(self.m) if is_android(builder_cfg): return gn_android_flavor.GNAndroidFlavorUtils(self.m) elif is_ios(builder_cfg): diff --git a/infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py b/infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py new file mode 100644 index 0000000..e8e516d --- /dev/null +++ b/infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py @@ -0,0 +1,59 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from recipe_engine import recipe_api + +import default_flavor +import gn_android_flavor +import subprocess + + +"""GN Chromecast flavor utils, used for building Skia for Chromecast with GN""" +class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils): + def __init__(self, m): + super(GNChromecastFlavorUtils, self).__init__(m) + + def compile(self, unused_target, **kwargs): + configuration = self.m.vars.builder_cfg.get('configuration') + os = self.m.vars.builder_cfg.get('os') + target_arch = self.m.vars.builder_cfg.get('target_arch') + + # Makes the binary small enough to fit on the small disk. + extra_cflags = ['-g0'] + # Chromecast does not package libstdc++ + extra_ldflags = ['-static-libstdc++', '-static-libgcc'] + + toolchain_dir = self.m.vars.slave_dir.join('cast_toolchain') + + quote = lambda x: '"%s"' % x + args = { + 'cc': quote(toolchain_dir.join('bin','armv7a-cros-linux-gnueabi-gcc')), + 'cxx': quote(toolchain_dir.join('bin','armv7a-cros-linux-gnueabi-g++')), + 'ar': quote(toolchain_dir.join('bin','armv7a-cros-linux-gnueabi-ar')), + 'target_cpu': quote(target_arch), + 'skia_use_fontconfig': 'false', + 'skia_enable_gpu': 'false', + # The toolchain won't allow system libraries to be used + # when cross-compiling + 'skia_use_system_freetype2': 'false', + # Makes the binary smaller + 'skia_use_icu': 'false', + } + + if configuration != 'Debug': + args['is_debug'] = 'false' + args['extra_cflags'] = repr(extra_cflags).replace("'", '"') + args['extra_ldflags'] = repr(extra_ldflags).replace("'", '"') + + 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 = self.m.vars.skia_dir.join('bin', gn) + + self._py('fetch-gn', self.m.vars.skia_dir.join('bin', 'fetch-gn')) + self._run('gn gen', gn, 'gen', self.out_dir, '--args=' + gn_args) + # We only build perf for the chromecasts. + self._run('ninja', ninja, '-C', self.out_dir, 'nanobench') + diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json index 26d4491..5624cf7 100644 --- a/infra/bots/tasks.json +++ b/infra/bots/tasks.json @@ -216,6 +216,18 @@ "Build-Ubuntu-Clang-x86_64-Release-Vulkan" ] }, + "Build-Ubuntu-GCC-arm-Debug-Chromecast": { + "priority": 0.8, + "tasks": [ + "Build-Ubuntu-GCC-arm-Debug-Chromecast" + ] + }, + "Build-Ubuntu-GCC-arm-Release-Chromecast": { + "priority": 0.8, + "tasks": [ + "Build-Ubuntu-GCC-arm-Release-Chromecast" + ] + }, "Build-Ubuntu-GCC-x86-Debug": { "priority": 0.8, "tasks": [ @@ -2815,6 +2827,70 @@ "isolate": "compile_skia.isolate", "priority": 0.8 }, + "Build-Ubuntu-GCC-arm-Debug-Chromecast": { + "cipd_packages": [ + { + "name": "skia/bots/cast_toolchain", + "path": "cast_toolchain", + "version": "version:2" + } + ], + "dimensions": [ + "gpu:none", + "os:Ubuntu-14.04", + "pool:Skia" + ], + "extra_args": [ + "--workdir", + "../../..", + "swarm_compile", + "repository=<(REPO)", + "buildername=Build-Ubuntu-GCC-arm-Debug-Chromecast", + "mastername=fake-master", + "buildnumber=2", + "slavename=fake-buildslave", + "nobuildbot=True", + "swarm_out_dir=${ISOLATED_OUTDIR}", + "revision=<(REVISION)", + "patch_storage=<(PATCH_STORAGE)", + "patch_issue=<(ISSUE)", + "patch_set=<(PATCHSET)" + ], + "isolate": "compile_skia.isolate", + "priority": 0.8 + }, + "Build-Ubuntu-GCC-arm-Release-Chromecast": { + "cipd_packages": [ + { + "name": "skia/bots/cast_toolchain", + "path": "cast_toolchain", + "version": "version:2" + } + ], + "dimensions": [ + "gpu:none", + "os:Ubuntu-14.04", + "pool:Skia" + ], + "extra_args": [ + "--workdir", + "../../..", + "swarm_compile", + "repository=<(REPO)", + "buildername=Build-Ubuntu-GCC-arm-Release-Chromecast", + "mastername=fake-master", + "buildnumber=2", + "slavename=fake-buildslave", + "nobuildbot=True", + "swarm_out_dir=${ISOLATED_OUTDIR}", + "revision=<(REVISION)", + "patch_storage=<(PATCH_STORAGE)", + "patch_issue=<(ISSUE)", + "patch_set=<(PATCHSET)" + ], + "isolate": "compile_skia.isolate", + "priority": 0.8 + }, "Build-Ubuntu-GCC-x86-Debug": { "dimensions": [ "gpu:none", -- 2.7.4