1 [ 2 { 3 "cmd": [ 4 "python", 5 "-u", 6 "\nimport os\nCHROMECAST_IP_FILE = os.path.expanduser('~/chromecast.txt')\nwith open(CHROMECAST_IP_FILE, 'r') as f:\n print f.read()\n" 7 ], 8 "env": { 9 "BUILDTYPE": "Release", 10 "CHROME_HEADLESS": "1", 11 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 12 "SKIA_OUT": "[START_DIR]/out" 13 }, 14 "infra_step": true, 15 "name": "read chromecast ip", 16 "stdout": "/path/to/tmp/", 17 "~followup_annotations": [ 18 "@@@STEP_LOG_LINE (a] python.inline@@@@", 19 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 20 "@@@STEP_LOG_LINE (a] python.inline@CHROMECAST_IP_FILE = os.path.expanduser('~/chromecast.txt')@@@", 21 "@@@STEP_LOG_LINE (a] python.inline@with open(CHROMECAST_IP_FILE, 'r') as f:@@@", 22 "@@@STEP_LOG_LINE (a] python.inline@ print f.read()@@@", 23 "@@@STEP_LOG_END (a] python.inline@@@" 24 ] 25 }, 26 { 27 "cmd": [ 28 "adb", 29 "connect", 30 "192.168.1.2:5555" 31 ], 32 "env": { 33 "BUILDTYPE": "Release", 34 "CHROME_HEADLESS": "1", 35 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 36 "SKIA_OUT": "[START_DIR]/out" 37 }, 38 "infra_step": true, 39 "name": "adb connect 192.168.1.2:5555" 40 }, 41 { 42 "cmd": [ 43 "adb", 44 "shell", 45 "mkdir", 46 "-p", 47 "/cache/skia/resources" 48 ], 49 "cwd": "[START_DIR]/skia", 50 "env": { 51 "BUILDTYPE": "Release", 52 "CHROME_HEADLESS": "1", 53 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 54 "SKIA_OUT": "[START_DIR]/out" 55 }, 56 "infra_step": true, 57 "name": "mkdir /cache/skia/resources" 58 }, 59 { 60 "cmd": [ 61 "adb", 62 "shell", 63 "mkdir", 64 "-p", 65 "/cache/skia/bin" 66 ], 67 "cwd": "[START_DIR]/skia", 68 "env": { 69 "BUILDTYPE": "Release", 70 "CHROME_HEADLESS": "1", 71 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 72 "SKIA_OUT": "[START_DIR]/out" 73 }, 74 "infra_step": true, 75 "name": "mkdir /cache/skia/bin" 76 }, 77 { 78 "cmd": [ 79 "python", 80 "-u", 81 "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n", 82 "[START_DIR]/skia/resources", 83 "/cache/skia/resources" 84 ], 85 "env": { 86 "BUILDTYPE": "Release", 87 "CHROME_HEADLESS": "1", 88 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 89 "SKIA_OUT": "[START_DIR]/out" 90 }, 91 "infra_step": true, 92 "name": "push [START_DIR]/skia/resources/* /cache/skia/resources", 93 "~followup_annotations": [ 94 "@@@STEP_LOG_LINE (a] python.inline@@@@", 95 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 96 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 97 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 98 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 99 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 100 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 101 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 102 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 103 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 104 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 105 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 106 "@@@STEP_LOG_LINE (a] python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@", 107 "@@@STEP_LOG_LINE (a] python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@", 108 "@@@STEP_LOG_LINE (a] python.inline@ print \"Skipping because it is too big\"@@@", 109 "@@@STEP_LOG_LINE (a] python.inline@ else:@@@", 110 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['adb', 'push',@@@", 111 "@@@STEP_LOG_LINE (a] python.inline@ hp, os.path.join(device, p, f)])@@@", 112 "@@@STEP_LOG_END (a] python.inline@@@" 113 ] 114 }, 115 { 116 "cmd": [ 117 "python", 118 "-u", 119 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 120 "--json-output", 121 "/path/to/tmp/json", 122 "copy", 123 "[START_DIR]/skia/infra/bots/assets/skp/VERSION", 124 "/path/to/tmp/" 125 ], 126 "infra_step": true, 127 "name": "Get downloaded SKP VERSION" 128 }, 129 { 130 "cmd": [ 131 "python", 132 "-u", 133 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 134 "--json-output", 135 "/path/to/tmp/json", 136 "copy", 137 "42", 138 "[START_DIR]/tmp/SKP_VERSION" 139 ], 140 "infra_step": true, 141 "name": "write SKP_VERSION" 142 }, 143 { 144 "cmd": [ 145 "adb", 146 "shell", 147 "cat", 148 "/cache/skia/SKP_VERSION" 149 ], 150 "cwd": "[START_DIR]/skia", 151 "env": { 152 "BUILDTYPE": "Release", 153 "CHROME_HEADLESS": "1", 154 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 155 "SKIA_OUT": "[START_DIR]/out" 156 }, 157 "infra_step": true, 158 "name": "read /cache/skia/SKP_VERSION", 159 "stdout": "/path/to/tmp/" 160 }, 161 { 162 "cmd": [ 163 "adb", 164 "shell", 165 "rm", 166 "-f", 167 "/cache/skia/SKP_VERSION" 168 ], 169 "cwd": "[START_DIR]/skia", 170 "env": { 171 "BUILDTYPE": "Release", 172 "CHROME_HEADLESS": "1", 173 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 174 "SKIA_OUT": "[START_DIR]/out" 175 }, 176 "infra_step": true, 177 "name": "rm /cache/skia/SKP_VERSION" 178 }, 179 { 180 "cmd": [ 181 "adb", 182 "shell", 183 "rm", 184 "-r", 185 "/cache/skia/skps" 186 ], 187 "cwd": "[START_DIR]/skia", 188 "env": { 189 "BUILDTYPE": "Release", 190 "CHROME_HEADLESS": "1", 191 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 192 "SKIA_OUT": "[START_DIR]/out" 193 }, 194 "infra_step": true, 195 "name": "rm /cache/skia/skps" 196 }, 197 { 198 "cmd": [ 199 "adb", 200 "shell", 201 "mkdir", 202 "-p", 203 "/cache/skia/skps" 204 ], 205 "cwd": "[START_DIR]/skia", 206 "env": { 207 "BUILDTYPE": "Release", 208 "CHROME_HEADLESS": "1", 209 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 210 "SKIA_OUT": "[START_DIR]/out" 211 }, 212 "infra_step": true, 213 "name": "mkdir /cache/skia/skps" 214 }, 215 { 216 "cmd": [ 217 "python", 218 "-u", 219 "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n", 220 "[START_DIR]/skp", 221 "/cache/skia/skps" 222 ], 223 "env": { 224 "BUILDTYPE": "Release", 225 "CHROME_HEADLESS": "1", 226 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 227 "SKIA_OUT": "[START_DIR]/out" 228 }, 229 "infra_step": true, 230 "name": "push [START_DIR]/skp/* /cache/skia/skps", 231 "~followup_annotations": [ 232 "@@@STEP_LOG_LINE (a] python.inline@@@@", 233 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 234 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 235 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 236 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 237 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 238 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 239 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 240 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 241 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 242 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 243 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 244 "@@@STEP_LOG_LINE (a] python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@", 245 "@@@STEP_LOG_LINE (a] python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@", 246 "@@@STEP_LOG_LINE (a] python.inline@ print \"Skipping because it is too big\"@@@", 247 "@@@STEP_LOG_LINE (a] python.inline@ else:@@@", 248 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['adb', 'push',@@@", 249 "@@@STEP_LOG_LINE (a] python.inline@ hp, os.path.join(device, p, f)])@@@", 250 "@@@STEP_LOG_END (a] python.inline@@@" 251 ] 252 }, 253 { 254 "cmd": [ 255 "adb", 256 "push", 257 "[START_DIR]/tmp/SKP_VERSION", 258 "/cache/skia/SKP_VERSION" 259 ], 260 "cwd": "[START_DIR]/skia", 261 "env": { 262 "BUILDTYPE": "Release", 263 "CHROME_HEADLESS": "1", 264 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 265 "SKIA_OUT": "[START_DIR]/out" 266 }, 267 "infra_step": true, 268 "name": "push [START_DIR]/tmp/SKP_VERSION /cache/skia/SKP_VERSION" 269 }, 270 { 271 "cmd": [ 272 "adb", 273 "shell", 274 "rm", 275 "-r", 276 "/dev/shm/skia/dm_out" 277 ], 278 "cwd": "[START_DIR]/skia", 279 "env": { 280 "BUILDTYPE": "Release", 281 "CHROME_HEADLESS": "1", 282 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 283 "SKIA_OUT": "[START_DIR]/out" 284 }, 285 "infra_step": true, 286 "name": "rm /dev/shm/skia/dm_out" 287 }, 288 { 289 "cmd": [ 290 "adb", 291 "shell", 292 "mkdir", 293 "-p", 294 "/dev/shm/skia/dm_out" 295 ], 296 "cwd": "[START_DIR]/skia", 297 "env": { 298 "BUILDTYPE": "Release", 299 "CHROME_HEADLESS": "1", 300 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 301 "SKIA_OUT": "[START_DIR]/out" 302 }, 303 "infra_step": true, 304 "name": "mkdir /dev/shm/skia/dm_out" 305 }, 306 { 307 "cmd": [ 308 "python", 309 "-u", 310 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 311 "--json-output", 312 "/path/to/tmp/json", 313 "ensure-directory", 314 "--mode", 315 "0777", 316 "[START_DIR]/tmp" 317 ], 318 "infra_step": true, 319 "name": "makedirs tmp_dir" 320 }, 321 { 322 "cmd": [ 323 "python", 324 "-u", 325 "\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n try:\n with contextlib.closing(\n urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n hashes = w.read()\n with open(sys.argv[1], 'w') as f:\n f.write(hashes)\n break\n except Exception as e:\n print 'Failed to get uninteresting hashes from %s:' % HASHES_URL\n print e\n if retry == RETRIES:\n raise\n waittime = WAIT_BASE * math.pow(2, retry)\n print 'Retry in %d seconds.' % waittime\n time.sleep(waittime)\n", 326 "[START_DIR]/tmp/uninteresting_hashes.txt" 327 ], 328 "env": { 329 "BUILDTYPE": "Release", 330 "CHROME_HEADLESS": "1", 331 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 332 "SKIA_OUT": "[START_DIR]/out" 333 }, 334 "infra_step": true, 335 "name": "get uninteresting hashes", 336 "~followup_annotations": [ 337 "@@@STEP_LOG_LINE (a] python.inline@@@@", 338 "@@@STEP_LOG_LINE (a] python.inline@import contextlib@@@", 339 "@@@STEP_LOG_LINE (a] python.inline@import math@@@", 340 "@@@STEP_LOG_LINE (a] python.inline@import socket@@@", 341 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 342 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 343 "@@@STEP_LOG_LINE (a] python.inline@import urllib2@@@", 344 "@@@STEP_LOG_LINE (a] python.inline@@@@", 345 "@@@STEP_LOG_LINE (a] python.inline@HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'@@@", 346 "@@@STEP_LOG_LINE (a] python.inline@RETRIES = 5@@@", 347 "@@@STEP_LOG_LINE (a] python.inline@TIMEOUT = 60@@@", 348 "@@@STEP_LOG_LINE (a] python.inline@WAIT_BASE = 15@@@", 349 "@@@STEP_LOG_LINE (a] python.inline@@@@", 350 "@@@STEP_LOG_LINE (a] python.inline@socket.setdefaulttimeout(TIMEOUT)@@@", 351 "@@@STEP_LOG_LINE (a] python.inline@for retry in range(RETRIES):@@@", 352 "@@@STEP_LOG_LINE (a] python.inline@ try:@@@", 353 "@@@STEP_LOG_LINE (a] python.inline@ with contextlib.closing(@@@", 354 "@@@STEP_LOG_LINE (a] python.inline@ urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@", 355 "@@@STEP_LOG_LINE (a] python.inline@ hashes = w.read()@@@", 356 "@@@STEP_LOG_LINE (a] python.inline@ with open(sys.argv[1], 'w') as f:@@@", 357 "@@@STEP_LOG_LINE (a] python.inline@ f.write(hashes)@@@", 358 "@@@STEP_LOG_LINE (a] python.inline@ break@@@", 359 "@@@STEP_LOG_LINE (a] python.inline@ except Exception as e:@@@", 360 "@@@STEP_LOG_LINE (a] python.inline@ print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@", 361 "@@@STEP_LOG_LINE (a] python.inline@ print e@@@", 362 "@@@STEP_LOG_LINE (a] python.inline@ if retry == RETRIES:@@@", 363 "@@@STEP_LOG_LINE (a] python.inline@ raise@@@", 364 "@@@STEP_LOG_LINE (a] python.inline@ waittime = WAIT_BASE * math.pow(2, retry)@@@", 365 "@@@STEP_LOG_LINE (a] python.inline@ print 'Retry in %d seconds.' % waittime@@@", 366 "@@@STEP_LOG_LINE (a] python.inline@ time.sleep(waittime)@@@", 367 "@@@STEP_LOG_END (a] python.inline@@@" 368 ] 369 }, 370 { 371 "cmd": [ 372 "adb", 373 "push", 374 "[START_DIR]/tmp/uninteresting_hashes.txt", 375 "/cache/skia/uninteresting_hashes.txt" 376 ], 377 "cwd": "[START_DIR]/skia", 378 "env": { 379 "BUILDTYPE": "Release", 380 "CHROME_HEADLESS": "1", 381 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 382 "SKIA_OUT": "[START_DIR]/out" 383 }, 384 "infra_step": true, 385 "name": "push [START_DIR]/tmp/uninteresting_hashes.txt /cache/skia/uninteresting_hashes.txt" 386 }, 387 { 388 "cmd": [ 389 "python", 390 "-u", 391 "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n" 392 ], 393 "name": "get swarming bot id", 394 "stdout": "/path/to/tmp/", 395 "~followup_annotations": [ 396 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 397 "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@", 398 "@@@STEP_LOG_END (a] python.inline@@@" 399 ] 400 }, 401 { 402 "cmd": [ 403 "python", 404 "-u", 405 "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n" 406 ], 407 "name": "get swarming task id", 408 "stdout": "/path/to/tmp/", 409 "~followup_annotations": [ 410 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 411 "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@", 412 "@@@STEP_LOG_END (a] python.inline@@@" 413 ] 414 }, 415 { 416 "cmd": [ 417 "adb", 418 "push", 419 "[START_DIR]/out/Release/dm", 420 "/cache/skia/bin" 421 ], 422 "cwd": "[START_DIR]/skia", 423 "env": { 424 "BUILDTYPE": "Release", 425 "CHROME_HEADLESS": "1", 426 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 427 "SKIA_OUT": "[START_DIR]/out" 428 }, 429 "infra_step": true, 430 "name": "push dm" 431 }, 432 { 433 "cmd": [ 434 "ssh", 435 "-oConnectTimeout=15", 436 "-oBatchMode=yes", 437 "-t", 438 "-t", 439 "root (a] 192.168.1.2", 440 "/cache/skia/bin/dm", 441 "--resourcePath", 442 "/cache/skia/resources", 443 "--skps", 444 "/cache/skia/skps", 445 "--images", 446 "/cache/skia/resources/images/color_wheel.jpg", 447 "--nameByHash", 448 "--properties", 449 "gitHash", 450 "abc123", 451 "builder", 452 "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release-All", 453 "buildbucket_build_id", 454 "123454321", 455 "swarming_bot_id", 456 "skia-bot-123", 457 "swarming_task_id", 458 "123456", 459 "--key", 460 "arch", 461 "arm", 462 "compiler", 463 "GCC", 464 "configuration", 465 "Release", 466 "cpu_or_gpu", 467 "CPU", 468 "cpu_or_gpu_value", 469 "Cortex_A7", 470 "model", 471 "Chorizo", 472 "os", 473 "Chromecast", 474 "--uninterestingHashesFile", 475 "/cache/skia/uninteresting_hashes.txt", 476 "--writePath", 477 "/dev/shm/skia/dm_out", 478 "--dont_write", 479 "pdf", 480 "--randomProcessorTest", 481 "--threads", 482 "0", 483 "--ignoreSigInt", 484 "--nogpu", 485 "--config", 486 "8888", 487 "--src", 488 "tests", 489 "gm", 490 "image", 491 "colorImage", 492 "--blacklist", 493 "_", 494 "test", 495 "_", 496 "GrShape", 497 "--match", 498 "~bigbitmaprect_", 499 "~DrawBitmapRect", 500 "~drawbitmaprect", 501 "~GM_animated-image-blurs", 502 "~ImageFilterBlurLargeImage", 503 "~savelayer_clipmask", 504 "~TextBlobCache", 505 "~verylarge", 506 "--nonativeFonts", 507 "--verbose" 508 ], 509 "env": { 510 "BUILDTYPE": "Release", 511 "CHROME_HEADLESS": "1", 512 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 513 "SKIA_OUT": "[START_DIR]/out" 514 }, 515 "name": "dm" 516 }, 517 { 518 "cmd": [ 519 "adb", 520 "pull", 521 "/dev/shm/skia/dm_out", 522 "[CUSTOM_[SWARM_OUT_DIR]]/dm" 523 ], 524 "cwd": "[START_DIR]/skia", 525 "env": { 526 "BUILDTYPE": "Release", 527 "CHROME_HEADLESS": "1", 528 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 529 "SKIA_OUT": "[START_DIR]/out" 530 }, 531 "infra_step": true, 532 "name": "pull /dev/shm/skia/dm_out [CUSTOM_[SWARM_OUT_DIR]]/dm" 533 }, 534 { 535 "cmd": [ 536 "ssh", 537 "-oConnectTimeout=15", 538 "-oBatchMode=yes", 539 "-t", 540 "-t", 541 "root (a] 192.168.1.2", 542 "rm", 543 "-r", 544 "/cache/skia/bin" 545 ], 546 "env": { 547 "BUILDTYPE": "Release", 548 "CHROME_HEADLESS": "1", 549 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 550 "SKIA_OUT": "[START_DIR]/out" 551 }, 552 "infra_step": true, 553 "name": "Delete executables" 554 }, 555 { 556 "cmd": [ 557 "adb", 558 "disconnect" 559 ], 560 "cwd": "[START_DIR]/skia", 561 "env": { 562 "BUILDTYPE": "Release", 563 "CHROME_HEADLESS": "1", 564 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 565 "SKIA_OUT": "[START_DIR]/out" 566 }, 567 "infra_step": true, 568 "name": "disconnect" 569 }, 570 { 571 "cmd": [ 572 "adb", 573 "connect", 574 "192.168.1.2:5555" 575 ], 576 "env": { 577 "BUILDTYPE": "Release", 578 "CHROME_HEADLESS": "1", 579 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 580 "SKIA_OUT": "[START_DIR]/out" 581 }, 582 "infra_step": true, 583 "name": "adb connect 192.168.1.2:5555 (2)" 584 }, 585 { 586 "cmd": [ 587 "python", 588 "-u", 589 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['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 sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n", 590 "[START_DIR]/out/Release" 591 ], 592 "env": { 593 "BUILDTYPE": "Release", 594 "CHROME_HEADLESS": "1", 595 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 596 "SKIA_OUT": "[START_DIR]/out" 597 }, 598 "infra_step": true, 599 "name": "dump log", 600 "~followup_annotations": [ 601 "@@@STEP_LOG_LINE (a] python.inline@@@@", 602 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 603 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 604 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 605 "@@@STEP_LOG_LINE (a] python.inline@out = sys.argv[1]@@@", 606 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@", 607 "@@@STEP_LOG_LINE (a] python.inline@for line in log.split('\\n'):@@@", 608 "@@@STEP_LOG_LINE (a] python.inline@ tokens = line.split()@@@", 609 "@@@STEP_LOG_LINE (a] python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 610 "@@@STEP_LOG_LINE (a] python.inline@ addr, path = tokens[-2:]@@@", 611 "@@@STEP_LOG_LINE (a] python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 612 "@@@STEP_LOG_LINE (a] python.inline@ if os.path.exists(local):@@@", 613 "@@@STEP_LOG_LINE (a] python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 614 "@@@STEP_LOG_LINE (a] python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 615 "@@@STEP_LOG_LINE (a] python.inline@ print line@@@", 616 "@@@STEP_LOG_END (a] python.inline@@@" 617 ] 618 }, 619 { 620 "cmd": [ 621 "adb", 622 "disconnect" 623 ], 624 "cwd": "[START_DIR]/skia", 625 "env": { 626 "BUILDTYPE": "Release", 627 "CHROME_HEADLESS": "1", 628 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 629 "SKIA_OUT": "[START_DIR]/out" 630 }, 631 "infra_step": true, 632 "name": "disconnect (2)" 633 }, 634 { 635 "cmd": [ 636 "adb", 637 "kill-server" 638 ], 639 "cwd": "[START_DIR]/skia", 640 "env": { 641 "BUILDTYPE": "Release", 642 "CHROME_HEADLESS": "1", 643 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 644 "SKIA_OUT": "[START_DIR]/out" 645 }, 646 "infra_step": true, 647 "name": "kill adb server" 648 }, 649 { 650 "name": "$result", 651 "recipe_result": null, 652 "status_code": 0 653 } 654 ]