1[ 2 { 3 "cmd": [ 4 "python", 5 "-u", 6 "import os\nprint(os.environ.get('SWARMING_BOT_ID', ''))\n" 7 ], 8 "name": "get swarming bot id", 9 "~followup_annotations": [ 10 "@@@STEP_LOG_LINE@python.inline@import os@@@", 11 "@@@STEP_LOG_LINE@python.inline@print(os.environ.get('SWARMING_BOT_ID', ''))@@@", 12 "@@@STEP_LOG_END@python.inline@@@" 13 ] 14 }, 15 { 16 "cmd": [ 17 "/opt/infra-android/tools/adb", 18 "push", 19 "file.txt", 20 "file.txt" 21 ], 22 "cwd": "[START_DIR]/skia", 23 "env": { 24 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 25 "CHROME_HEADLESS": "1", 26 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 27 }, 28 "infra_step": true, 29 "name": "push file.txt file.txt" 30 }, 31 { 32 "cmd": [ 33 "/opt/infra-android/tools/adb", 34 "shell", 35 "cat", 36 "file.txt" 37 ], 38 "cwd": "[START_DIR]/skia", 39 "env": { 40 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 41 "CHROME_HEADLESS": "1", 42 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 43 }, 44 "infra_step": true, 45 "name": "read file.txt" 46 }, 47 { 48 "cmd": [ 49 "python", 50 "-u", 51 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 52 "/opt/infra-android/tools/adb", 53 "file.txt" 54 ], 55 "env": { 56 "CHROME_HEADLESS": "1", 57 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 58 }, 59 "infra_step": true, 60 "name": "rm file.txt", 61 "~followup_annotations": [ 62 "@@@STEP_LOG_LINE@python.inline@@@@", 63 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 64 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 65 "@@@STEP_LOG_LINE@python.inline@@@@", 66 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 67 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 68 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 69 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 70 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 71 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 72 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 73 "@@@STEP_LOG_LINE@python.inline@@@@", 74 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 75 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 76 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 77 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 78 "@@@STEP_LOG_LINE@python.inline@try:@@@", 79 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 80 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 81 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 82 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 83 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 84 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 85 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 86 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 87 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 88 "@@@STEP_LOG_END@python.inline@@@" 89 ] 90 }, 91 { 92 "cmd": [ 93 "vpython", 94 "-u", 95 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 96 "--json-output", 97 "/path/to/tmp/json", 98 "rmtree", 99 "results_dir" 100 ], 101 "infra_step": true, 102 "name": "rmtree results_dir" 103 }, 104 { 105 "cmd": [ 106 "vpython", 107 "-u", 108 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 109 "--json-output", 110 "/path/to/tmp/json", 111 "ensure-directory", 112 "--mode", 113 "0777", 114 "results_dir" 115 ], 116 "infra_step": true, 117 "name": "makedirs results_dir" 118 }, 119 { 120 "cmd": [ 121 "python", 122 "-u", 123 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 124 "/opt/infra-android/tools/adb", 125 "device_results_dir" 126 ], 127 "env": { 128 "CHROME_HEADLESS": "1", 129 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 130 }, 131 "infra_step": true, 132 "name": "rm device_results_dir", 133 "~followup_annotations": [ 134 "@@@STEP_LOG_LINE@python.inline@@@@", 135 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 136 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 137 "@@@STEP_LOG_LINE@python.inline@@@@", 138 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 139 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 140 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 141 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 142 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 143 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 144 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 145 "@@@STEP_LOG_LINE@python.inline@@@@", 146 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 147 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 148 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 149 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 150 "@@@STEP_LOG_LINE@python.inline@try:@@@", 151 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 152 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 153 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 154 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 155 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 156 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 157 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 158 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 159 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 160 "@@@STEP_LOG_END@python.inline@@@" 161 ] 162 }, 163 { 164 "cmd": [ 165 "/opt/infra-android/tools/adb", 166 "shell", 167 "mkdir", 168 "-p", 169 "device_results_dir" 170 ], 171 "cwd": "[START_DIR]/skia", 172 "env": { 173 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 174 "CHROME_HEADLESS": "1", 175 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 176 }, 177 "infra_step": true, 178 "name": "mkdir device_results_dir" 179 }, 180 { 181 "cmd": [ 182 "/opt/infra-android/tools/adb", 183 "shell", 184 "mkdir", 185 "-p", 186 "/sdcard/revenge_of_the_skiabot/resources" 187 ], 188 "cwd": "[START_DIR]/skia", 189 "env": { 190 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 191 "CHROME_HEADLESS": "1", 192 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 193 }, 194 "infra_step": true, 195 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 196 }, 197 { 198 "cmd": [ 199 "python", 200 "-u", 201 "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\ncpu = int(sys.argv[2])\ngov = sys.argv[3]\n\nlog = subprocess.check_output([ADB, 'root'])\n# check for message like 'adbd cannot run as root in production builds'\nprint(log)\nif 'cannot' in log:\n raise Exception('adb root failed')\n\nsubprocess.check_output([ADB, 'shell', 'echo \"%s\" > '\n '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])\nactual_gov = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()\nif actual_gov != gov:\n raise Exception('(actual, expected) (%s, %s)'\n % (actual_gov, gov))\n", 202 "/opt/infra-android/tools/adb", 203 "0", 204 "hotplug" 205 ], 206 "env": { 207 "CHROME_HEADLESS": "1", 208 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 209 }, 210 "infra_step": true, 211 "name": "Set CPU 0's governor to hotplug", 212 "timeout": 30, 213 "~followup_annotations": [ 214 "@@@STEP_LOG_LINE@python.inline@@@@", 215 "@@@STEP_LOG_LINE@python.inline@import os@@@", 216 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 217 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 218 "@@@STEP_LOG_LINE@python.inline@import time@@@", 219 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@", 220 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@", 221 "@@@STEP_LOG_LINE@python.inline@gov = sys.argv[3]@@@", 222 "@@@STEP_LOG_LINE@python.inline@@@@", 223 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 224 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 225 "@@@STEP_LOG_LINE@python.inline@print(log)@@@", 226 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", 227 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", 228 "@@@STEP_LOG_LINE@python.inline@@@@", 229 "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo \"%s\" > '@@@", 230 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])@@@", 231 "@@@STEP_LOG_LINE@python.inline@actual_gov = subprocess.check_output([ADB, 'shell', 'cat '@@@", 232 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()@@@", 233 "@@@STEP_LOG_LINE@python.inline@if actual_gov != gov:@@@", 234 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %s)'@@@", 235 "@@@STEP_LOG_LINE@python.inline@ % (actual_gov, gov))@@@", 236 "@@@STEP_LOG_END@python.inline@@@" 237 ] 238 }, 239 { 240 "cmd": [ 241 "/opt/infra-android/tools/adb", 242 "push", 243 "[START_DIR]/build/dm", 244 "/data/local/tmp/" 245 ], 246 "cwd": "[START_DIR]/skia", 247 "env": { 248 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 249 "CHROME_HEADLESS": "1", 250 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 251 }, 252 "infra_step": true, 253 "name": "push dm" 254 }, 255 { 256 "cmd": [ 257 "vpython", 258 "-u", 259 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 260 "--json-output", 261 "/path/to/tmp/json", 262 "glob", 263 "[START_DIR]/skia/resources", 264 "*" 265 ], 266 "infra_step": true, 267 "name": "ls [START_DIR]/skia/resources/*", 268 "~followup_annotations": [ 269 "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/bar.jpg@@@", 270 "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/foo.png@@@", 271 "@@@STEP_LOG_END@glob@@@" 272 ] 273 }, 274 { 275 "cmd": [ 276 "/opt/infra-android/tools/adb", 277 "push", 278 "[START_DIR]/skia/resources/bar.jpg", 279 "[START_DIR]/skia/resources/foo.png", 280 "/sdcard/revenge_of_the_skiabot/resources" 281 ], 282 "cwd": "[START_DIR]/skia", 283 "env": { 284 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 285 "CHROME_HEADLESS": "1", 286 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 287 }, 288 "infra_step": true, 289 "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" 290 }, 291 { 292 "cmd": [ 293 "vpython", 294 "-u", 295 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 296 "--json-output", 297 "/path/to/tmp/json", 298 "copy", 299 "[START_DIR]/skia/infra/bots/assets/skp/VERSION", 300 "/path/to/tmp/" 301 ], 302 "infra_step": true, 303 "name": "Get skp VERSION", 304 "~followup_annotations": [ 305 "@@@STEP_LOG_LINE@VERSION@42@@@", 306 "@@@STEP_LOG_END@VERSION@@@" 307 ] 308 }, 309 { 310 "cmd": [ 311 "vpython", 312 "-u", 313 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 314 "--json-output", 315 "/path/to/tmp/json", 316 "copy", 317 "42", 318 "[START_DIR]/tmp/SKP_VERSION" 319 ], 320 "infra_step": true, 321 "name": "write SKP_VERSION", 322 "~followup_annotations": [ 323 "@@@STEP_LOG_LINE@SKP_VERSION@42@@@", 324 "@@@STEP_LOG_END@SKP_VERSION@@@" 325 ] 326 }, 327 { 328 "cmd": [ 329 "/opt/infra-android/tools/adb", 330 "shell", 331 "cat", 332 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 333 ], 334 "cwd": "[START_DIR]/skia", 335 "env": { 336 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 337 "CHROME_HEADLESS": "1", 338 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 339 }, 340 "infra_step": true, 341 "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION" 342 }, 343 { 344 "cmd": [ 345 "python", 346 "-u", 347 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 348 "/opt/infra-android/tools/adb", 349 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 350 ], 351 "env": { 352 "CHROME_HEADLESS": "1", 353 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 354 }, 355 "infra_step": true, 356 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION", 357 "~followup_annotations": [ 358 "@@@STEP_LOG_LINE@python.inline@@@@", 359 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 360 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 361 "@@@STEP_LOG_LINE@python.inline@@@@", 362 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 363 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 364 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 365 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 366 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 367 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 368 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 369 "@@@STEP_LOG_LINE@python.inline@@@@", 370 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 371 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 372 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 373 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 374 "@@@STEP_LOG_LINE@python.inline@try:@@@", 375 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 376 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 377 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 378 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 379 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 380 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 381 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 382 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 383 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 384 "@@@STEP_LOG_END@python.inline@@@" 385 ] 386 }, 387 { 388 "cmd": [ 389 "python", 390 "-u", 391 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 392 "/opt/infra-android/tools/adb", 393 "/sdcard/revenge_of_the_skiabot/skps" 394 ], 395 "env": { 396 "CHROME_HEADLESS": "1", 397 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 398 }, 399 "infra_step": true, 400 "name": "rm /sdcard/revenge_of_the_skiabot/skps", 401 "~followup_annotations": [ 402 "@@@STEP_LOG_LINE@python.inline@@@@", 403 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 404 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 405 "@@@STEP_LOG_LINE@python.inline@@@@", 406 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 407 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 408 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 409 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 410 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 411 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 412 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 413 "@@@STEP_LOG_LINE@python.inline@@@@", 414 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 415 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 416 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 417 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 418 "@@@STEP_LOG_LINE@python.inline@try:@@@", 419 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 420 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 421 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 422 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 423 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 424 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 425 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 426 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 427 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 428 "@@@STEP_LOG_END@python.inline@@@" 429 ] 430 }, 431 { 432 "cmd": [ 433 "/opt/infra-android/tools/adb", 434 "shell", 435 "mkdir", 436 "-p", 437 "/sdcard/revenge_of_the_skiabot/skps" 438 ], 439 "cwd": "[START_DIR]/skia", 440 "env": { 441 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 442 "CHROME_HEADLESS": "1", 443 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 444 }, 445 "infra_step": true, 446 "name": "mkdir /sdcard/revenge_of_the_skiabot/skps" 447 }, 448 { 449 "cmd": [ 450 "vpython", 451 "-u", 452 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 453 "--json-output", 454 "/path/to/tmp/json", 455 "glob", 456 "[START_DIR]/skp", 457 "*" 458 ], 459 "infra_step": true, 460 "name": "ls [START_DIR]/skp/*", 461 "~followup_annotations": [ 462 "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/bar.jpg@@@", 463 "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/foo.png@@@", 464 "@@@STEP_LOG_END@glob@@@" 465 ] 466 }, 467 { 468 "cmd": [ 469 "/opt/infra-android/tools/adb", 470 "push", 471 "[START_DIR]/skp/bar.jpg", 472 "[START_DIR]/skp/foo.png", 473 "/sdcard/revenge_of_the_skiabot/skps" 474 ], 475 "cwd": "[START_DIR]/skia", 476 "env": { 477 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 478 "CHROME_HEADLESS": "1", 479 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 480 }, 481 "infra_step": true, 482 "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" 483 }, 484 { 485 "cmd": [ 486 "/opt/infra-android/tools/adb", 487 "push", 488 "[START_DIR]/tmp/SKP_VERSION", 489 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 490 ], 491 "cwd": "[START_DIR]/skia", 492 "env": { 493 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 494 "CHROME_HEADLESS": "1", 495 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 496 }, 497 "infra_step": true, 498 "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION" 499 }, 500 { 501 "cmd": [ 502 "vpython", 503 "-u", 504 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 505 "--json-output", 506 "/path/to/tmp/json", 507 "copy", 508 "[START_DIR]/skia/infra/bots/assets/skimage/VERSION", 509 "/path/to/tmp/" 510 ], 511 "infra_step": true, 512 "name": "Get skimage VERSION", 513 "~followup_annotations": [ 514 "@@@STEP_LOG_LINE@VERSION@42@@@", 515 "@@@STEP_LOG_END@VERSION@@@" 516 ] 517 }, 518 { 519 "cmd": [ 520 "vpython", 521 "-u", 522 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 523 "--json-output", 524 "/path/to/tmp/json", 525 "copy", 526 "42", 527 "[START_DIR]/tmp/SK_IMAGE_VERSION" 528 ], 529 "infra_step": true, 530 "name": "write SK_IMAGE_VERSION", 531 "~followup_annotations": [ 532 "@@@STEP_LOG_LINE@SK_IMAGE_VERSION@42@@@", 533 "@@@STEP_LOG_END@SK_IMAGE_VERSION@@@" 534 ] 535 }, 536 { 537 "cmd": [ 538 "/opt/infra-android/tools/adb", 539 "shell", 540 "cat", 541 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 542 ], 543 "cwd": "[START_DIR]/skia", 544 "env": { 545 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 546 "CHROME_HEADLESS": "1", 547 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 548 }, 549 "infra_step": true, 550 "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 551 }, 552 { 553 "cmd": [ 554 "python", 555 "-u", 556 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 557 "/opt/infra-android/tools/adb", 558 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 559 ], 560 "env": { 561 "CHROME_HEADLESS": "1", 562 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 563 }, 564 "infra_step": true, 565 "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION", 566 "~followup_annotations": [ 567 "@@@STEP_LOG_LINE@python.inline@@@@", 568 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 569 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 570 "@@@STEP_LOG_LINE@python.inline@@@@", 571 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 572 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 573 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 574 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 575 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 576 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 577 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 578 "@@@STEP_LOG_LINE@python.inline@@@@", 579 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 580 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 581 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 582 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 583 "@@@STEP_LOG_LINE@python.inline@try:@@@", 584 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 585 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 586 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 587 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 588 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 589 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 590 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 591 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 592 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 593 "@@@STEP_LOG_END@python.inline@@@" 594 ] 595 }, 596 { 597 "cmd": [ 598 "python", 599 "-u", 600 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 601 "/opt/infra-android/tools/adb", 602 "/sdcard/revenge_of_the_skiabot/images" 603 ], 604 "env": { 605 "CHROME_HEADLESS": "1", 606 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 607 }, 608 "infra_step": true, 609 "name": "rm /sdcard/revenge_of_the_skiabot/images", 610 "~followup_annotations": [ 611 "@@@STEP_LOG_LINE@python.inline@@@@", 612 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 613 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 614 "@@@STEP_LOG_LINE@python.inline@@@@", 615 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 616 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 617 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 618 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 619 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 620 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 621 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 622 "@@@STEP_LOG_LINE@python.inline@@@@", 623 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 624 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 625 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 626 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 627 "@@@STEP_LOG_LINE@python.inline@try:@@@", 628 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 629 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 630 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 631 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 632 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 633 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 634 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 635 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 636 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 637 "@@@STEP_LOG_END@python.inline@@@" 638 ] 639 }, 640 { 641 "cmd": [ 642 "/opt/infra-android/tools/adb", 643 "shell", 644 "mkdir", 645 "-p", 646 "/sdcard/revenge_of_the_skiabot/images" 647 ], 648 "cwd": "[START_DIR]/skia", 649 "env": { 650 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 651 "CHROME_HEADLESS": "1", 652 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 653 }, 654 "infra_step": true, 655 "name": "mkdir /sdcard/revenge_of_the_skiabot/images" 656 }, 657 { 658 "cmd": [ 659 "vpython", 660 "-u", 661 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 662 "--json-output", 663 "/path/to/tmp/json", 664 "glob", 665 "[START_DIR]/skimage", 666 "*" 667 ], 668 "infra_step": true, 669 "name": "ls [START_DIR]/skimage/*", 670 "~followup_annotations": [ 671 "@@@STEP_LOG_LINE@glob@[START_DIR]/skimage/bar.jpg@@@", 672 "@@@STEP_LOG_LINE@glob@[START_DIR]/skimage/foo.png@@@", 673 "@@@STEP_LOG_END@glob@@@" 674 ] 675 }, 676 { 677 "cmd": [ 678 "/opt/infra-android/tools/adb", 679 "push", 680 "[START_DIR]/skimage/bar.jpg", 681 "[START_DIR]/skimage/foo.png", 682 "/sdcard/revenge_of_the_skiabot/images" 683 ], 684 "cwd": "[START_DIR]/skia", 685 "env": { 686 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 687 "CHROME_HEADLESS": "1", 688 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 689 }, 690 "infra_step": true, 691 "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" 692 }, 693 { 694 "cmd": [ 695 "/opt/infra-android/tools/adb", 696 "push", 697 "[START_DIR]/tmp/SK_IMAGE_VERSION", 698 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 699 ], 700 "cwd": "[START_DIR]/skia", 701 "env": { 702 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 703 "CHROME_HEADLESS": "1", 704 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 705 }, 706 "infra_step": true, 707 "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 708 }, 709 { 710 "cmd": [ 711 "vpython", 712 "-u", 713 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 714 "--json-output", 715 "/path/to/tmp/json", 716 "copy", 717 "[START_DIR]/skia/infra/bots/assets/svg/VERSION", 718 "/path/to/tmp/" 719 ], 720 "infra_step": true, 721 "name": "Get svg VERSION", 722 "~followup_annotations": [ 723 "@@@STEP_LOG_LINE@VERSION@42@@@", 724 "@@@STEP_LOG_END@VERSION@@@" 725 ] 726 }, 727 { 728 "cmd": [ 729 "vpython", 730 "-u", 731 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 732 "--json-output", 733 "/path/to/tmp/json", 734 "copy", 735 "42", 736 "[START_DIR]/tmp/SVG_VERSION" 737 ], 738 "infra_step": true, 739 "name": "write SVG_VERSION", 740 "~followup_annotations": [ 741 "@@@STEP_LOG_LINE@SVG_VERSION@42@@@", 742 "@@@STEP_LOG_END@SVG_VERSION@@@" 743 ] 744 }, 745 { 746 "cmd": [ 747 "/opt/infra-android/tools/adb", 748 "shell", 749 "cat", 750 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 751 ], 752 "cwd": "[START_DIR]/skia", 753 "env": { 754 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 755 "CHROME_HEADLESS": "1", 756 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 757 }, 758 "infra_step": true, 759 "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION" 760 }, 761 { 762 "cmd": [ 763 "python", 764 "-u", 765 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 766 "/opt/infra-android/tools/adb", 767 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 768 ], 769 "env": { 770 "CHROME_HEADLESS": "1", 771 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 772 }, 773 "infra_step": true, 774 "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION", 775 "~followup_annotations": [ 776 "@@@STEP_LOG_LINE@python.inline@@@@", 777 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 778 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 779 "@@@STEP_LOG_LINE@python.inline@@@@", 780 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 781 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 782 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 783 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 784 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 785 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 786 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 787 "@@@STEP_LOG_LINE@python.inline@@@@", 788 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 789 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 790 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 791 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 792 "@@@STEP_LOG_LINE@python.inline@try:@@@", 793 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 794 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 795 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 796 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 797 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 798 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 799 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 800 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 801 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 802 "@@@STEP_LOG_END@python.inline@@@" 803 ] 804 }, 805 { 806 "cmd": [ 807 "python", 808 "-u", 809 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n", 810 "/opt/infra-android/tools/adb", 811 "/sdcard/revenge_of_the_skiabot/svgs" 812 ], 813 "env": { 814 "CHROME_HEADLESS": "1", 815 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 816 }, 817 "infra_step": true, 818 "name": "rm /sdcard/revenge_of_the_skiabot/svgs", 819 "~followup_annotations": [ 820 "@@@STEP_LOG_LINE@python.inline@@@@", 821 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 822 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 823 "@@@STEP_LOG_LINE@python.inline@@@@", 824 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 825 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 826 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 827 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 828 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 829 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 830 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 831 "@@@STEP_LOG_LINE@python.inline@@@@", 832 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 833 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 834 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 835 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 836 "@@@STEP_LOG_LINE@python.inline@try:@@@", 837 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 838 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 839 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 840 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 841 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 842 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 843 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 844 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 845 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 846 "@@@STEP_LOG_END@python.inline@@@" 847 ] 848 }, 849 { 850 "cmd": [ 851 "/opt/infra-android/tools/adb", 852 "shell", 853 "mkdir", 854 "-p", 855 "/sdcard/revenge_of_the_skiabot/svgs" 856 ], 857 "cwd": "[START_DIR]/skia", 858 "env": { 859 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 860 "CHROME_HEADLESS": "1", 861 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 862 }, 863 "infra_step": true, 864 "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs" 865 }, 866 { 867 "cmd": [ 868 "vpython", 869 "-u", 870 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 871 "--json-output", 872 "/path/to/tmp/json", 873 "glob", 874 "[START_DIR]/svg", 875 "*" 876 ], 877 "infra_step": true, 878 "name": "ls [START_DIR]/svg/*", 879 "~followup_annotations": [ 880 "@@@STEP_LOG_LINE@glob@[START_DIR]/svg/bar.jpg@@@", 881 "@@@STEP_LOG_LINE@glob@[START_DIR]/svg/foo.png@@@", 882 "@@@STEP_LOG_END@glob@@@" 883 ] 884 }, 885 { 886 "cmd": [ 887 "/opt/infra-android/tools/adb", 888 "push", 889 "[START_DIR]/svg/bar.jpg", 890 "[START_DIR]/svg/foo.png", 891 "/sdcard/revenge_of_the_skiabot/svgs" 892 ], 893 "cwd": "[START_DIR]/skia", 894 "env": { 895 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 896 "CHROME_HEADLESS": "1", 897 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 898 }, 899 "infra_step": true, 900 "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" 901 }, 902 { 903 "cmd": [ 904 "/opt/infra-android/tools/adb", 905 "push", 906 "[START_DIR]/tmp/SVG_VERSION", 907 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 908 ], 909 "cwd": "[START_DIR]/skia", 910 "env": { 911 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 912 "CHROME_HEADLESS": "1", 913 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 914 }, 915 "infra_step": true, 916 "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION" 917 }, 918 { 919 "cmd": [ 920 "vpython", 921 "-u", 922 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 923 "--json-output", 924 "/path/to/tmp/json", 925 "copy", 926 "set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --some-flag; echo $? >/data/local/tmp/rc", 927 "[START_DIR]/tmp/dm.sh" 928 ], 929 "infra_step": true, 930 "name": "write dm.sh", 931 "~followup_annotations": [ 932 "@@@STEP_LOG_LINE@dm.sh@set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --some-flag; echo $? >/data/local/tmp/rc@@@", 933 "@@@STEP_LOG_END@dm.sh@@@" 934 ] 935 }, 936 { 937 "cmd": [ 938 "/opt/infra-android/tools/adb", 939 "push", 940 "[START_DIR]/tmp/dm.sh", 941 "/data/local/tmp/" 942 ], 943 "cwd": "[START_DIR]/skia", 944 "env": { 945 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 946 "CHROME_HEADLESS": "1", 947 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 948 }, 949 "infra_step": true, 950 "name": "push dm.sh" 951 }, 952 { 953 "cmd": [ 954 "/opt/infra-android/tools/adb", 955 "logcat", 956 "-c" 957 ], 958 "cwd": "[START_DIR]/skia", 959 "env": { 960 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 961 "CHROME_HEADLESS": "1", 962 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 963 }, 964 "infra_step": true, 965 "name": "clear log" 966 }, 967 { 968 "cmd": [ 969 "python", 970 "-u", 971 "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh = sys.argv[2]\nsubprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])\ntry:\n sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',\n bin_dir + 'rc'])))\nexcept ValueError:\n print(\"Couldn't read the return code. Probably killed for OOM.\")\n sys.exit(1)\n", 972 "/data/local/tmp/", 973 "dm.sh" 974 ], 975 "name": "dm", 976 "~followup_annotations": [ 977 "@@@STEP_LOG_LINE@python.inline@@@@", 978 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 979 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 980 "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@", 981 "@@@STEP_LOG_LINE@python.inline@sh = sys.argv[2]@@@", 982 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@", 983 "@@@STEP_LOG_LINE@python.inline@try:@@@", 984 "@@@STEP_LOG_LINE@python.inline@ sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',@@@", 985 "@@@STEP_LOG_LINE@python.inline@ bin_dir + 'rc'])))@@@", 986 "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@", 987 "@@@STEP_LOG_LINE@python.inline@ print(\"Couldn't read the return code. Probably killed for OOM.\")@@@", 988 "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", 989 "@@@STEP_LOG_END@python.inline@@@" 990 ] 991 }, 992 { 993 "cmd": [], 994 "name": "adb pull" 995 }, 996 { 997 "cmd": [ 998 "/opt/infra-android/tools/adb", 999 "pull", 1000 "/sdcard/revenge_of_the_skiabot/dm_out", 1001 "[CLEANUP]/adb_pull_tmp_1" 1002 ], 1003 "cwd": "[START_DIR]/skia", 1004 "env": { 1005 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1006 "CHROME_HEADLESS": "1", 1007 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1008 }, 1009 "infra_step": true, 1010 "name": "adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out", 1011 "~followup_annotations": [ 1012 "@@@STEP_NEST_LEVEL@1@@@" 1013 ] 1014 }, 1015 { 1016 "cmd": [ 1017 "vpython", 1018 "-u", 1019 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1020 "--json-output", 1021 "/path/to/tmp/json", 1022 "glob", 1023 "[CLEANUP]/adb_pull_tmp_1", 1024 "dm_out/*" 1025 ], 1026 "infra_step": true, 1027 "name": "adb pull.list pulled files", 1028 "~followup_annotations": [ 1029 "@@@STEP_NEST_LEVEL@1@@@", 1030 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/1.png@@@", 1031 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/2.png@@@", 1032 "@@@STEP_LOG_END@glob@@@" 1033 ] 1034 }, 1035 { 1036 "cmd": [ 1037 "vpython", 1038 "-u", 1039 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1040 "--json-output", 1041 "/path/to/tmp/json", 1042 "copy", 1043 "[CLEANUP]/adb_pull_tmp_1/1.png", 1044 "[START_DIR]/[SWARM_OUT_DIR]" 1045 ], 1046 "infra_step": true, 1047 "name": "adb pull.copy 1.png", 1048 "~followup_annotations": [ 1049 "@@@STEP_NEST_LEVEL@1@@@" 1050 ] 1051 }, 1052 { 1053 "cmd": [ 1054 "vpython", 1055 "-u", 1056 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1057 "--json-output", 1058 "/path/to/tmp/json", 1059 "copy", 1060 "[CLEANUP]/adb_pull_tmp_1/2.png", 1061 "[START_DIR]/[SWARM_OUT_DIR]" 1062 ], 1063 "infra_step": true, 1064 "name": "adb pull.copy 2.png", 1065 "~followup_annotations": [ 1066 "@@@STEP_NEST_LEVEL@1@@@" 1067 ] 1068 }, 1069 { 1070 "cmd": [ 1071 "python", 1072 "-u", 1073 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n try:\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n except subprocess.CalledProcessError:\n pass\n print(line)\n", 1074 "[START_DIR]/build" 1075 ], 1076 "env": { 1077 "CHROME_HEADLESS": "1", 1078 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1079 }, 1080 "infra_step": true, 1081 "name": "dump log", 1082 "timeout": 300, 1083 "~followup_annotations": [ 1084 "@@@STEP_LOG_LINE@python.inline@@@@", 1085 "@@@STEP_LOG_LINE@python.inline@import os@@@", 1086 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 1087 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 1088 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 1089 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])@@@", 1090 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 1091 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 1092 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 1093 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 1094 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 1095 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 1096 "@@@STEP_LOG_LINE@python.inline@ try:@@@", 1097 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 1098 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 1099 "@@@STEP_LOG_LINE@python.inline@ except subprocess.CalledProcessError:@@@", 1100 "@@@STEP_LOG_LINE@python.inline@ pass@@@", 1101 "@@@STEP_LOG_LINE@python.inline@ print(line)@@@", 1102 "@@@STEP_LOG_END@python.inline@@@" 1103 ] 1104 }, 1105 { 1106 "cmd": [ 1107 "/opt/infra-android/tools/adb", 1108 "kill-server" 1109 ], 1110 "cwd": "[START_DIR]/skia", 1111 "env": { 1112 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1113 "CHROME_HEADLESS": "1", 1114 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1115 }, 1116 "infra_step": true, 1117 "name": "kill adb server" 1118 }, 1119 { 1120 "name": "$result" 1121 } 1122]