aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--infra/bots/recipe_modules/skia/api.py7
-rw-r--r--infra/bots/recipe_modules/skia/fake_specs.py58
-rw-r--r--infra/bots/recipe_modules/skia/gn_flavor.py33
-rw-r--r--infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json204
-rw-r--r--infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json222
-rw-r--r--infra/bots/recipes/swarm_compile.py2
-rw-r--r--infra/bots/recipes/swarm_trigger.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json494
-rw-r--r--infra/bots/recipes/swarm_trigger.py1
8 files changed, 1021 insertions, 0 deletions
diff --git a/infra/bots/recipe_modules/skia/api.py b/infra/bots/recipe_modules/skia/api.py
index 58d51ec7ec..a173601e64 100644
--- a/infra/bots/recipe_modules/skia/api.py
+++ b/infra/bots/recipe_modules/skia/api.py
@@ -19,6 +19,7 @@ from . import cmake_flavor
from . import coverage_flavor
from . import default_flavor
from . import fake_specs
+from . import gn_flavor
from . import ios_flavor
from . import pdfium_flavor
from . import valgrind_flavor
@@ -66,6 +67,10 @@ def is_cmake(builder_cfg):
return 'CMake' in builder_cfg.get('extra_config', '')
+def is_gn(builder_cfg):
+ return 'GN' == builder_cfg.get('extra_config', '')
+
+
def is_ios(builder_cfg):
return ('iOS' in builder_cfg.get('extra_config', '') or
builder_cfg.get('os') == 'iOS')
@@ -93,6 +98,8 @@ class SkiaApi(recipe_api.RecipeApi):
return android_flavor.AndroidFlavorUtils(self)
elif is_cmake(builder_cfg):
return cmake_flavor.CMakeFlavorUtils(self)
+ elif is_gn(builder_cfg):
+ return gn_flavor.GNFlavorUtils(self)
elif is_ios(builder_cfg):
return ios_flavor.iOSFlavorUtils(self)
elif is_pdfium(builder_cfg):
diff --git a/infra/bots/recipe_modules/skia/fake_specs.py b/infra/bots/recipe_modules/skia/fake_specs.py
index b83063dc3b..f8c07437c9 100644
--- a/infra/bots/recipe_modules/skia/fake_specs.py
+++ b/infra/bots/recipe_modules/skia/fake_specs.py
@@ -332,6 +332,34 @@ FAKE_SPECS = {
'upload_dm_results': True,
'upload_perf_results': False,
},
+ 'Build-Ubuntu-GCC-x86_64-Debug-GN': {
+ 'build_targets': [
+ 'most',
+ ],
+ 'builder_cfg': {
+ 'compiler': 'GCC',
+ 'configuration': 'Debug',
+ 'extra_config': 'GN',
+ 'is_trybot': False,
+ 'os': 'Ubuntu',
+ 'role': 'Build',
+ 'target_arch': 'x86_64',
+ },
+ 'configuration': 'Debug',
+ 'dm_flags': [
+ '--dummy-flags',
+ ],
+ 'do_perf_steps': False,
+ 'do_test_steps': False,
+ 'env': {
+ 'GYP_DEFINES': 'skia_arch_type=x86_64 skia_warnings_as_errors=1',
+ },
+ 'nanobench_flags': [
+ '--dummy-flags',
+ ],
+ 'upload_dm_results': True,
+ 'upload_perf_results': False,
+ },
'Build-Ubuntu-GCC-x86_64-Debug-MSAN': {
'build_targets': [
'dm',
@@ -560,6 +588,36 @@ FAKE_SPECS = {
'upload_dm_results': True,
'upload_perf_results': False,
},
+ 'Build-Win-MSVC-x86-Release-GN': {
+ 'build_targets': [
+ 'most',
+ ],
+ 'builder_cfg': {
+ 'compiler': 'MSVC',
+ 'configuration': 'Release',
+ 'extra_config': 'GN',
+ 'is_trybot': False,
+ 'os': 'Win',
+ 'role': 'Build',
+ 'target_arch': 'x86',
+ },
+ 'configuration': 'Release',
+ 'dm_flags': [
+ '--dummy-flags',
+ ],
+ 'do_perf_steps': False,
+ 'do_test_steps': False,
+ 'env': {
+ 'GYP_DEFINES':
+ ('qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 '
+ 'skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0'),
+ },
+ 'nanobench_flags': [
+ '--dummy-flags',
+ ],
+ 'upload_dm_results': True,
+ 'upload_perf_results': False,
+ },
'Build-Win-MSVC-x86_64-Release': {
'build_targets': [
'most',
diff --git a/infra/bots/recipe_modules/skia/gn_flavor.py b/infra/bots/recipe_modules/skia/gn_flavor.py
new file mode 100644
index 0000000000..d7fa86c77f
--- /dev/null
+++ b/infra/bots/recipe_modules/skia/gn_flavor.py
@@ -0,0 +1,33 @@
+# 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.
+
+import default_flavor
+
+"""GN flavor utils, used for building Skia with GN."""
+class GNFlavorUtils(default_flavor.DefaultFlavorUtils):
+ def compile(self, target):
+ """Build Skia with GN."""
+ # Get the gn executable.
+ fetch_gn = self._skia_api.skia_dir.join('bin', 'fetch-gn')
+ self._skia_api.run(self._skia_api.m.step, 'fetch-gn', cmd=[fetch_gn],
+ cwd=self._skia_api.skia_dir)
+
+ is_debug = 'is_debug=true'
+ if self._skia_api.configuration != 'Debug':
+ is_debug = 'is_debug=false'
+ gn_args = [is_debug]
+
+ # Run gn gen.
+ gn_exe = 'gn'
+ if self._skia_api.m.platform.is_win:
+ gn_exe = 'gn.exe'
+ gn_gen = [gn_exe, 'gen', self.out_dir, '--args=%s' % ' '.join(gn_args)]
+ self._skia_api.run(self._skia_api.m.step, 'gn_gen', cmd=gn_gen,
+ cwd=self._skia_api.skia_dir)
+
+ # Run ninja.
+ ninja_cmd = ['ninja', '-C', self.out_dir]
+ self._skia_api.run(self._skia_api.m.step, 'compile %s' % target,
+ cmd=ninja_cmd,
+ cwd=self._skia_api.skia_dir)
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json b/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json
new file mode 100644
index 0000000000..e6cb1a1d7d
--- /dev/null
+++ b/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json
@@ -0,0 +1,204 @@
+[
+ {
+ "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_PACKAGE_REPO[depot_tools]/gclient.py",
+ "config",
+ "--spec",
+ "cache_dir = '[CUSTOM_/_B_CACHE]'\nsolutions = [{'deps_file': 'DEPS', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]\ntarget_os = ['llvm']"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]"
+ },
+ "name": "gclient setup"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
+ "sync",
+ "--nohooks",
+ "--force",
+ "--verbose",
+ "--delete_unversioned_trees",
+ "--revision",
+ "skia@abc123",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]"
+ },
+ "name": "gclient sync",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"solutions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"skia/\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": 164710@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@164710@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CUSTOM_/_B_WORK]/skia/tools/buildbot_spec.py",
+ "/path/to/tmp/json",
+ "Build-Ubuntu-GCC-x86_64-Debug-GN"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]/skia",
+ "name": "exec buildbot_spec.py",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_targets\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"most\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_cfg\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler\": \"GCC\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"extra_config\": \"GN\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"is_trybot\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"os\": \"Ubuntu\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"role\": \"Build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target_arch\": \"x86_64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dm_flags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"do_perf_steps\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"do_test_steps\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"GYP_DEFINES\": \"skia_arch_type=x86_64 skia_warnings_as_errors=1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"nanobench_flags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"upload_dm_results\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"upload_perf_results\": false@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CUSTOM_/_B_WORK]/skia/bin/fetch-gn"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "GYP_DEFINES": "skia_arch_type=x86_64 skia_warnings_as_errors=1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN"
+ },
+ "name": "fetch-gn"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN/Debug",
+ "--args=is_debug=true"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "GYP_DEFINES": "skia_arch_type=x86_64 skia_warnings_as_errors=1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN"
+ },
+ "name": "gn_gen"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN/Debug"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "GYP_DEFINES": "skia_arch_type=x86_64 skia_warnings_as_errors=1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN"
+ },
+ "name": "compile most"
+ },
+ {
+ "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', 'nanobench', 'nanobench.exe', '*.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-x86_64-Debug-GN/Debug",
+ "[CUSTOM_[SWARM_OUT_DIR]]/out/Debug"
+ ],
+ "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', 'nanobench', 'nanobench.exe', '*.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/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json b/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json
new file mode 100644
index 0000000000..6819581eb6
--- /dev/null
+++ b/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json
@@ -0,0 +1,222 @@
+[
+ {
+ "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_C:\\_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_PACKAGE_REPO[depot_tools]\\gclient.py",
+ "config",
+ "--spec",
+ "cache_dir = '[CUSTOM_C:\\\\_B_CACHE]'\nsolutions = [{'deps_file': 'DEPS', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]\ntarget_os = ['llvm']"
+ ],
+ "cwd": "[CUSTOM_C:\\_B_WORK]",
+ "env": {
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools]"
+ },
+ "name": "gclient setup"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_PACKAGE_REPO[depot_tools]\\gclient.py",
+ "sync",
+ "--nohooks",
+ "--force",
+ "--verbose",
+ "--delete_unversioned_trees",
+ "--revision",
+ "skia@abc123",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CUSTOM_C:\\_B_WORK]",
+ "env": {
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools];RECIPE_PACKAGE_REPO[depot_tools]"
+ },
+ "name": "gclient sync",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"solutions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"skia/\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": 164710@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@164710@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CUSTOM_C:\\_B_WORK]\\skia\\tools\\buildbot_spec.py",
+ "/path/to/tmp/json",
+ "Build-Win-MSVC-x86-Release-GN"
+ ],
+ "cwd": "[CUSTOM_C:\\_B_WORK]\\skia",
+ "name": "exec buildbot_spec.py",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_targets\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"most\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_cfg\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler\": \"MSVC\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Release\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"extra_config\": \"GN\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"is_trybot\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"os\": \"Win\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"role\": \"Build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target_arch\": \"x86\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Release\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dm_flags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"do_perf_steps\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"do_test_steps\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"GYP_DEFINES\": \"qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"nanobench_flags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"upload_dm_results\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"upload_perf_results\": false@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CUSTOM_C:\\_B_WORK]\\skia\\bin\\fetch-gn"
+ ],
+ "cwd": "[CUSTOM_C:\\_B_WORK]\\skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "GYP_DEFINES": "qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0",
+ "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools];RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN"
+ },
+ "name": "fetch-gn"
+ },
+ {
+ "cmd": [
+ "gn.exe",
+ "gen",
+ "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN\\Release",
+ "--args=is_debug=false"
+ ],
+ "cwd": "[CUSTOM_C:\\_B_WORK]\\skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "GYP_DEFINES": "qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0",
+ "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools];RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN"
+ },
+ "name": "gn_gen"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN\\Release"
+ ],
+ "cwd": "[CUSTOM_C:\\_B_WORK]\\skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "GYP_DEFINES": "qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0",
+ "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools];RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN"
+ },
+ "name": "compile most"
+ },
+ {
+ "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', 'nanobench', 'nanobench.exe', '*.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_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN\\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', 'nanobench', 'nanobench.exe', '*.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@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "import psutil\nfor p in psutil.process_iter():\n try:\n if p.name in ('mspdbsrv.exe', 'vctip.exe', 'cl.exe', 'link.exe'):\n p.kill()\n except psutil._error.AccessDenied:\n pass\n"
+ ],
+ "name": "cleanup",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@import psutil@@@",
+ "@@@STEP_LOG_LINE@python.inline@for p in psutil.process_iter():@@@",
+ "@@@STEP_LOG_LINE@python.inline@ try:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if p.name in ('mspdbsrv.exe', 'vctip.exe', 'cl.exe', 'link.exe'):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ p.kill()@@@",
+ "@@@STEP_LOG_LINE@python.inline@ except psutil._error.AccessDenied:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ pass@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/swarm_compile.py b/infra/bots/recipes/swarm_compile.py
index 274ca5af95..e33a0365bf 100644
--- a/infra/bots/recipes/swarm_compile.py
+++ b/infra/bots/recipes/swarm_compile.py
@@ -27,11 +27,13 @@ TEST_BUILDERS = {
'Build-Ubuntu-GCC-Arm7-Release-Android_Vulkan',
'Build-Ubuntu-GCC-x86-Debug',
'Build-Ubuntu-GCC-x86_64-Debug-MSAN',
+ 'Build-Ubuntu-GCC-x86_64-Debug-GN',
'Build-Ubuntu-GCC-x86_64-Release-CMake',
'Build-Ubuntu-GCC-x86_64-Release-PDFium',
'Build-Ubuntu-GCC-x86_64-Release-Shared',
'Build-Ubuntu-GCC-x86_64-Release-Valgrind',
'Build-Win-MSVC-x86-Debug',
+ 'Build-Win-MSVC-x86-Release-GN',
'Build-Win-MSVC-x86_64-Release-Vulkan',
],
},
diff --git a/infra/bots/recipes/swarm_trigger.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json b/infra/bots/recipes/swarm_trigger.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json
new file mode 100644
index 0000000000..022949c92c
--- /dev/null
+++ b/infra/bots/recipes/swarm_trigger.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json
@@ -0,0 +1,494 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport json\nimport sys\n\nwith open(sys.argv[1]) as f:\n content = json.load(f)\n\nprint json.dumps(content, indent=2)\n",
+ "{\"buildername\": \"Build-Ubuntu-GCC-x86_64-Debug\", \"buildnumber\": 5, \"mastername\": \"client.skia\", \"path_config\": \"kitchen\", \"recipe\": \"swarm_trigger\", \"revision\": \"abc123\", \"slavename\": \"skiabot-linux-swarm-000\"}"
+ ],
+ "name": "print properties",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import json@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@with open(sys.argv[1]) as f:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ content = json.load(f)@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@print json.dumps(content, indent=2)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[SLAVE_BUILD]/skia",
+ "name": "git rev-parse",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-c",
+ "\"print 'abc123'\""
+ ],
+ "name": "got_revision",
+ "~followup_annotations": [
+ "@@@SET_BUILD_PROPERTY@got_revision@\"abc123\"@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "",
+ "[SLAVE_BUILD]/.gclient"
+ ],
+ "name": "write .gclient"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "import os\nfor r, _, files in os.walk(os.getcwd()):\n for fname in files:\n f = os.path.join(r, fname)\n if os.path.isfile(f):\n if os.access(f, os.X_OK):\n os.chmod(f, 0755)\n else:\n os.chmod(f, 0644)\n"
+ ],
+ "cwd": "[SLAVE_BUILD]/skia",
+ "name": "fix filemodes",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@for r, _, files in os.walk(os.getcwd()):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ for fname in files:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ f = os.path.join(r, fname)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.isfile(f):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.access(f, os.X_OK):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.chmod(f, 0755)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ else:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.chmod(f, 0644)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[SLAVE_BUILD]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[SLAVE_BUILD]/swarming.client",
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[SLAVE_BUILD]/swarming.client",
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[SLAVE_BUILD]/swarming.client",
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[SLAVE_BUILD]/swarming.client",
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[SLAVE_BUILD]/swarming.client",
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[SLAVE_BUILD]/swarming.client",
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[SLAVE_BUILD]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "download_from_google_storage",
+ "--no_resume",
+ "--platform=linux*",
+ "--no_auth",
+ "--bucket",
+ "chromium-luci",
+ "-d",
+ "[SLAVE_BUILD]/skia/infra/bots/tools/luci-go/linux64"
+ ],
+ "name": "download luci-go linux"
+ },
+ {
+ "cmd": [
+ "download_from_google_storage",
+ "--no_resume",
+ "--platform=darwin",
+ "--no_auth",
+ "--bucket",
+ "chromium-luci",
+ "-d",
+ "[SLAVE_BUILD]/skia/infra/bots/tools/luci-go/mac64"
+ ],
+ "name": "download luci-go mac"
+ },
+ {
+ "cmd": [
+ "download_from_google_storage",
+ "--no_resume",
+ "--platform=win32",
+ "--no_auth",
+ "--bucket",
+ "chromium-luci",
+ "-d",
+ "[SLAVE_BUILD]/skia/infra/bots/tools/luci-go/win64"
+ ],
+ "name": "download luci-go win"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os, sys\nfrom common import chromium_utils # Error? See https://crbug.com/584783.\n\n\nif os.path.exists(sys.argv[1]):\n chromium_utils.RemoveDirectory(sys.argv[1])\n",
+ "[SLAVE_BUILD]/luci-go"
+ ],
+ "env": {
+ "PYTHONPATH": "[SLAVE_BUILD]/skia/infra/bots/.recipe_deps/build/scripts"
+ },
+ "name": "rmtree luci-go",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os, sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@from common import chromium_utils # Error? See https://crbug.com/584783.@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@if os.path.exists(sys.argv[1]):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ chromium_utils.RemoveDirectory(sys.argv[1])@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copytree(sys.argv[1], sys.argv[2], symlinks=bool(sys.argv[3]))\n",
+ "[SLAVE_BUILD]/skia/infra/bots/tools/luci-go",
+ "[SLAVE_BUILD]/luci-go",
+ "0"
+ ],
+ "name": "Copy Go binary"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[build::gsutil]/resources/gsutil_wrapper.py",
+ "--",
+ "RECIPE_PACKAGE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "help"
+ ],
+ "name": "gsutil help"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[SLAVE_BUILD]/skia/tools/buildbot_spec.py",
+ "/path/to/tmp/json",
+ "Build-Ubuntu-GCC-x86_64-Debug-GN"
+ ],
+ "cwd": "[SLAVE_BUILD]/skia",
+ "name": "exec buildbot_spec.py",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_targets\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"most\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_cfg\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler\": \"GCC\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"extra_config\": \"GN\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"is_trybot\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"os\": \"Ubuntu\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"role\": \"Build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target_arch\": \"x86_64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dm_flags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"do_perf_steps\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"do_test_steps\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"GYP_DEFINES\": \"skia_arch_type=x86_64 skia_warnings_as_errors=1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"nanobench_flags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"upload_dm_results\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"upload_perf_results\": false@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "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",
+ "[SLAVE_BUILD]/swarming_temp_dir",
+ "511"
+ ],
+ "name": "makedirs swarming tmp dir",
+ "~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",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "{\n \"args\": [\n \"--isolate\", \n \"[SLAVE_BUILD]/skia/infra/bots/compile_skia.isolate\", \n \"--isolated\", \n \"[SLAVE_BUILD]/swarming_temp_dir/skia-task-compile_skia.isolated\", \n \"--config-variable\", \n \"OS\", \n \"Ubuntu\", \n \"--blacklist\", \n \".git\", \n \"--blacklist\", \n \"out\", \n \"--blacklist\", \n \"*.pyc\", \n \"--blacklist\", \n \".recipe_deps\", \n \"--extra-variable\", \n \"WORKDIR\", \n \"[SLAVE_BUILD]\"\n ], \n \"dir\": \"[SLAVE_BUILD]\", \n \"version\": 1\n}",
+ "[SLAVE_BUILD]/swarming_temp_dir/compile_skia.isolated.gen.json"
+ ],
+ "name": "Write compile_skia.isolated.gen.json"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[build::isolate]/resources/isolate.py",
+ "[SLAVE_BUILD]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver.appspot.com",
+ "--verbose",
+ "[SLAVE_BUILD]/swarming_temp_dir/compile_skia.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compile_skia\": \"[dummy hash for compile_skia]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"compile_skia\": \"[dummy hash for compile_skia]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[SLAVE_BUILD]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm.appspot.com",
+ "--isolate-server",
+ "https://isolateserver.appspot.com",
+ "--priority",
+ "90",
+ "--shards",
+ "1",
+ "--task-name",
+ "compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "72000",
+ "--io-timeout",
+ "2400",
+ "--hard-timeout",
+ "14400",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Ubuntu",
+ "--dimension",
+ "pool",
+ "Skia",
+ "--tag",
+ "allow_milo:1",
+ "--tag",
+ "buildername:Build-Ubuntu-GCC-x86_64-Debug-GN",
+ "--tag",
+ "buildnumber:5",
+ "--tag",
+ "data:[dummy hash for compile_skia]",
+ "--tag",
+ "master:client.skia",
+ "--tag",
+ "name:compile_skia",
+ "--tag",
+ "os:Ubuntu",
+ "--tag",
+ "revision:abc123",
+ "--tag",
+ "slavename:skiabot-linux-swarm-000",
+ "--tag",
+ "stepname:compile_skia on Ubuntu",
+ "--idempotent",
+ "[dummy hash for compile_skia]",
+ "--",
+ "--workdir",
+ "../../..",
+ "swarm_compile",
+ "buildername=Build-Ubuntu-GCC-x86_64-Debug-GN",
+ "mastername=client.skia.compile",
+ "buildnumber=1",
+ "slavename=skiabot-dummy-compile-slave",
+ "reason=Triggered by Skia swarm_trigger Recipe",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=abc123"
+ ],
+ "name": "[trigger] compile_skia on Ubuntu",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shard_index\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"10000\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@shard #0@https://chromium-swarm.appspot.com/user/task/10000@@@",
+ "@@@STEP_LINK@view steps on Milo@https://luci-milo.appspot.com/swarming/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[SLAVE_BUILD]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--json",
+ "{\"base_task_name\": \"compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5\", \"tasks\": {\"compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "compile_skia on Ubuntu",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"abandoned_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"durations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ 5.7, @@@",
+ "@@@STEP_LOG_LINE@json.output@ 31.5@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_codes\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"148aa78d7aa0000\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated_out\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"Heart beat succeeded on win32.\\n\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"Foo\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": 112, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"try_number\": 1, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@shard #0 isolated out@blah@@@",
+ "@@@STEP_LINK@view steps on Milo@https://luci-milo.appspot.com/swarming/task/148aa78d7aa0000@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/swarm_trigger.py b/infra/bots/recipes/swarm_trigger.py
index fe1e98ef1d..6ff27ea929 100644
--- a/infra/bots/recipes/swarm_trigger.py
+++ b/infra/bots/recipes/swarm_trigger.py
@@ -35,6 +35,7 @@ TEST_BUILDERS = {
'Build-Mac-Clang-x86_64-Release',
'Build-Ubuntu-GCC-Arm64-Debug-Android_Vulkan',
'Build-Ubuntu-GCC-x86_64-Debug',
+ 'Build-Ubuntu-GCC-x86_64-Debug-GN',
'Build-Ubuntu-GCC-x86_64-Release-RemoteRun',
'Build-Ubuntu-GCC-x86_64-Release-Trybot',
'Build-Win-MSVC-x86_64-Release',