| [ | 
 |   { | 
 |     "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\": \"Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release\", \"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", | 
 |       "Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release" | 
 |     ], | 
 |     "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@    \"iOSShell\"@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  ], @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"builder_cfg\": {@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"arch\": \"Arm7\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"compiler\": \"Clang\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"configuration\": \"Release\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"cpu_or_gpu\": \"GPU\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"cpu_or_gpu_value\": \"SGX554\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"is_trybot\": false, @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"model\": \"iPad4\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"os\": \"iOS\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"role\": \"Test\"@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  }, @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"configuration\": \"Release\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"device_cfg\": \"iPad4,1\", @@@", | 
 |       "@@@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\": true, @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"env\": {@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"CC\": \"/usr/bin/clang\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"CXX\": \"/usr/bin/clang++\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"GYP_DEFINES\": \"skia_arch_type=arm skia_clang_build=1 skia_os=ios skia_warnings_as_errors=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": [ | 
 |       "python", | 
 |       "-u", | 
 |       "[SLAVE_BUILD]/skia/tools/buildbot_spec.py", | 
 |       "/path/to/tmp/json", | 
 |       "Build-Mac-Clang-Arm7-Release-iOS" | 
 |     ], | 
 |     "cwd": "[SLAVE_BUILD]/skia", | 
 |     "name": "exec buildbot_spec.py (2)", | 
 |     "~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\": \"Clang\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"configuration\": \"Release\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"extra_config\": \"iOS\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"is_trybot\": false, @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"os\": \"Mac\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"role\": \"Build\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"target_arch\": \"Arm7\"@@@", | 
 |       "@@@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@    \"CC\": \"/usr/bin/clang\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"CXX\": \"/usr/bin/clang++\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"GYP_DEFINES\": \"skia_arch_type=arm skia_clang_build=1 skia_os=ios 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        \"Mac\", \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/Mac/[dummy has/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/5", | 
 |       "--dump-json", | 
 |       "/path/to/tmp/json", | 
 |       "--expiration", | 
 |       "72000", | 
 |       "--io-timeout", | 
 |       "2400", | 
 |       "--hard-timeout", | 
 |       "14400", | 
 |       "--dimension", | 
 |       "gpu", | 
 |       "none", | 
 |       "--dimension", | 
 |       "os", | 
 |       "Mac", | 
 |       "--dimension", | 
 |       "pool", | 
 |       "Skia", | 
 |       "--tag", | 
 |       "allow_milo:1", | 
 |       "--tag", | 
 |       "buildername:Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release", | 
 |       "--tag", | 
 |       "buildnumber:5", | 
 |       "--tag", | 
 |       "data:[dummy hash for compile_skia]", | 
 |       "--tag", | 
 |       "master:client.skia", | 
 |       "--tag", | 
 |       "name:compile_skia", | 
 |       "--tag", | 
 |       "os:Mac", | 
 |       "--tag", | 
 |       "revision:abc123", | 
 |       "--tag", | 
 |       "slavename:skiabot-linux-swarm-000", | 
 |       "--tag", | 
 |       "stepname:compile_skia on Mac", | 
 |       "--idempotent", | 
 |       "[dummy hash for compile_skia]", | 
 |       "--", | 
 |       "--workdir", | 
 |       "../../..", | 
 |       "swarm_compile", | 
 |       "buildername=Build-Mac-Clang-Arm7-Release-iOS", | 
 |       "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 Mac", | 
 |     "~followup_annotations": [ | 
 |       "@@@STEP_LOG_LINE@json.output@{@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"base_task_name\": \"compile_skia/Mac/[dummy has/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/5\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"tasks\": {@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"compile_skia/Mac/[dummy has/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/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/Mac/[dummy has/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/5\", \"tasks\": {\"compile_skia/Mac/[dummy has/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/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 Mac", | 
 |     "~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@@@" | 
 |     ] | 
 |   }, | 
 |   { | 
 |     "cmd": [ | 
 |       "python", | 
 |       "-u", | 
 |       "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", | 
 |       "[SLAVE_BUILD]/skia/infra/bots/assets/skp/VERSION", | 
 |       "/path/to/tmp/" | 
 |     ], | 
 |     "name": "read skp VERSION" | 
 |   }, | 
 |   { | 
 |     "cmd": [ | 
 |       "python", | 
 |       "-u", | 
 |       "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", | 
 |       "[SLAVE_BUILD]/skia/infra/bots/assets/skimage/VERSION", | 
 |       "/path/to/tmp/" | 
 |     ], | 
 |     "name": "read skimage VERSION" | 
 |   }, | 
 |   { | 
 |     "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 (2)", | 
 |     "~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/test_skia.isolate\", \n        \"--isolated\", \n        \"[SLAVE_BUILD]/swarming_temp_dir/skia-task-test_skia.isolated\", \n        \"--config-variable\", \n        \"OS\", \n        \"iOS-9.2\", \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/test_skia.isolated.gen.json" | 
 |     ], | 
 |     "name": "Write test_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/test_skia.isolated.gen.json" | 
 |     ], | 
 |     "name": "isolate tests (2)", | 
 |     "~followup_annotations": [ | 
 |       "@@@STEP_LOG_LINE@json.output@{@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"test_skia\": \"[dummy hash for test_skia]\"@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@}@@@", | 
 |       "@@@STEP_LOG_END@json.output@@@", | 
 |       "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test_skia\": \"[dummy hash for test_skia]\"}@@@" | 
 |     ] | 
 |   }, | 
 |   { | 
 |     "cmd": [ | 
 |       "python", | 
 |       "-u", | 
 |       "\nimport json\nimport sys\nwith open(sys.argv[1]) as f:\n  isolated = json.load(f)\nif not isolated.get('includes'):\n  isolated['includes'] = []\nfor h in sys.argv[2:]:\n  isolated['includes'].append(h)\nwith open(sys.argv[1], 'w') as f:\n  json.dump(isolated, f, sort_keys=True)\n", | 
 |       "[SLAVE_BUILD]/swarming_temp_dir/skia-task-test_skia.isolated", | 
 |       "abc123" | 
 |     ], | 
 |     "name": "add_isolated_input", | 
 |     "~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@with open(sys.argv[1]) as f:@@@", | 
 |       "@@@STEP_LOG_LINE@python.inline@  isolated = json.load(f)@@@", | 
 |       "@@@STEP_LOG_LINE@python.inline@if not isolated.get('includes'):@@@", | 
 |       "@@@STEP_LOG_LINE@python.inline@  isolated['includes'] = []@@@", | 
 |       "@@@STEP_LOG_LINE@python.inline@for h in sys.argv[2:]:@@@", | 
 |       "@@@STEP_LOG_LINE@python.inline@  isolated['includes'].append(h)@@@", | 
 |       "@@@STEP_LOG_LINE@python.inline@with open(sys.argv[1], 'w') as f:@@@", | 
 |       "@@@STEP_LOG_LINE@python.inline@  json.dump(isolated, f, sort_keys=True)@@@", | 
 |       "@@@STEP_LOG_END@python.inline@@@" | 
 |     ] | 
 |   }, | 
 |   { | 
 |     "cmd": [ | 
 |       "python", | 
 |       "-u", | 
 |       "[SLAVE_BUILD]/swarming.client/isolateserver.py", | 
 |       "archive", | 
 |       "--isolate-server", | 
 |       "https://isolateserver.appspot.com", | 
 |       "[SLAVE_BUILD]/swarming_temp_dir/skia-task-test_skia.isolated" | 
 |     ], | 
 |     "name": "upload new .isolated file for test_skia", | 
 |     "stdout": "/path/to/tmp/" | 
 |   }, | 
 |   { | 
 |     "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", | 
 |       "test_skia/iOS-9.2/def456/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/5", | 
 |       "--dump-json", | 
 |       "/path/to/tmp/json", | 
 |       "--expiration", | 
 |       "72000", | 
 |       "--io-timeout", | 
 |       "2400", | 
 |       "--hard-timeout", | 
 |       "14400", | 
 |       "--dimension", | 
 |       "device", | 
 |       "iPad4,1", | 
 |       "--dimension", | 
 |       "os", | 
 |       "iOS-9.2", | 
 |       "--dimension", | 
 |       "pool", | 
 |       "Skia", | 
 |       "--tag", | 
 |       "allow_milo:1", | 
 |       "--tag", | 
 |       "buildername:Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release", | 
 |       "--tag", | 
 |       "buildnumber:5", | 
 |       "--tag", | 
 |       "data:def456", | 
 |       "--tag", | 
 |       "master:client.skia", | 
 |       "--tag", | 
 |       "name:test_skia", | 
 |       "--tag", | 
 |       "os:iOS-9.2", | 
 |       "--tag", | 
 |       "revision:abc123", | 
 |       "--tag", | 
 |       "slavename:skiabot-linux-swarm-000", | 
 |       "--tag", | 
 |       "stepname:test_skia on iOS-9.2", | 
 |       "--cipd-package", | 
 |       "skp:skia/bots/skp:version:0", | 
 |       "--cipd-package", | 
 |       "skimage:skia/bots/skimage:version:0", | 
 |       "def456", | 
 |       "--", | 
 |       "--workdir", | 
 |       "../../..", | 
 |       "swarm_test", | 
 |       "buildername=Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release", | 
 |       "mastername=client.skia", | 
 |       "buildnumber=5", | 
 |       "slavename=skiabot-linux-swarm-000", | 
 |       "reason=Triggered by Skia swarm_trigger Recipe", | 
 |       "swarm_out_dir=${ISOLATED_OUTDIR}", | 
 |       "revision=abc123" | 
 |     ], | 
 |     "name": "[trigger] test_skia on iOS-9.2", | 
 |     "~followup_annotations": [ | 
 |       "@@@STEP_LOG_LINE@json.output@{@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"base_task_name\": \"test_skia/iOS-9.2/def456/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/5\", @@@", | 
 |       "@@@STEP_LOG_LINE@json.output@  \"tasks\": {@@@", | 
 |       "@@@STEP_LOG_LINE@json.output@    \"test_skia/iOS-9.2/def456/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/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", | 
 |       "\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]/swarming_temp_dir/outputs/test_skia" | 
 |     ], | 
 |     "env": { | 
 |       "PYTHONPATH": "[SLAVE_BUILD]/skia/infra/bots/.recipe_deps/build/scripts" | 
 |     }, | 
 |     "name": "rmtree test_skia", | 
 |     "~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", | 
 |       "[SLAVE_BUILD]/swarming.client/swarming.py", | 
 |       "collect", | 
 |       "--swarming", | 
 |       "https://chromium-swarm.appspot.com", | 
 |       "--decorate", | 
 |       "--print-status-updates", | 
 |       "--json", | 
 |       "{\"base_task_name\": \"test_skia/iOS-9.2/def456/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/5\", \"tasks\": {\"test_skia/iOS-9.2/def456/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release/5\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}", | 
 |       "--task-summary-json", | 
 |       "/path/to/tmp/json", | 
 |       "--task-output-dir", | 
 |       "[SLAVE_BUILD]/swarming_temp_dir/outputs/test_skia" | 
 |     ], | 
 |     "name": "test_skia on iOS-9.2", | 
 |     "~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@@@" | 
 |     ] | 
 |   }, | 
 |   { | 
 |     "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]/dm" | 
 |     ], | 
 |     "env": { | 
 |       "PYTHONPATH": "[SLAVE_BUILD]/skia/infra/bots/.recipe_deps/build/scripts" | 
 |     }, | 
 |     "name": "rmtree dm", | 
 |     "~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]/swarming_temp_dir/outputs/test_skia/0/dm", | 
 |       "[SLAVE_BUILD]/dm", | 
 |       "0" | 
 |     ], | 
 |     "name": "dm_dir" | 
 |   }, | 
 |   { | 
 |     "cmd": [ | 
 |       "python", | 
 |       "-u", | 
 |       "RECIPE_MODULE[skia::skia]/resources/upload_dm_results.py", | 
 |       "[SLAVE_BUILD]/dm", | 
 |       "abc123", | 
 |       "Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Release", | 
 |       "5", | 
 |       "", | 
 |       "[SLAVE_BUILD]/skia/common/py/utils" | 
 |     ], | 
 |     "cwd": "[SLAVE_BUILD]/skia", | 
 |     "env": { | 
 |       "AWS_CREDENTIAL_FILE": "[HOME]/chromium-skia-gm.boto", | 
 |       "BOTO_CONFIG": "[HOME]/chromium-skia-gm.boto" | 
 |     }, | 
 |     "name": "Upload DM Results" | 
 |   }, | 
 |   { | 
 |     "name": "$result", | 
 |     "recipe_result": null, | 
 |     "status_code": 0 | 
 |   } | 
 | ] |