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