1[ 2 { 3 "cmd": [ 4 "adb", 5 "shell", 6 "mkdir", 7 "-p", 8 "/sdcard/revenge_of_the_skiabot/resources" 9 ], 10 "cwd": "[START_DIR]/skia", 11 "env": { 12 "BUILDTYPE": "Debug", 13 "CHROME_HEADLESS": "1", 14 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 15 "SKIA_OUT": "[START_DIR]/out" 16 }, 17 "infra_step": true, 18 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 19 }, 20 { 21 "cmd": [ 22 "python", 23 "-u", 24 "\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(['adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 25 "[START_DIR]/skia/resources", 26 "/sdcard/revenge_of_the_skiabot/resources" 27 ], 28 "env": { 29 "BUILDTYPE": "Debug", 30 "CHROME_HEADLESS": "1", 31 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 32 "SKIA_OUT": "[START_DIR]/out" 33 }, 34 "infra_step": true, 35 "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources", 36 "~followup_annotations": [ 37 "@@@STEP_LOG_LINE@python.inline@@@@", 38 "@@@STEP_LOG_LINE@python.inline@import os@@@", 39 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 40 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 41 "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@", 42 "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@", 43 "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@", 44 "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@", 45 "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@", 46 "@@@STEP_LOG_LINE@python.inline@ continue@@@", 47 "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@", 48 "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@", 49 "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@", 50 "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 51 "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@", 52 "@@@STEP_LOG_END@python.inline@@@" 53 ] 54 }, 55 { 56 "cmd": [ 57 "python", 58 "-u", 59 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 60 "--json-output", 61 "/path/to/tmp/json", 62 "copy", 63 "[START_DIR]/skia/infra/bots/assets/skp/VERSION", 64 "/path/to/tmp/" 65 ], 66 "infra_step": true, 67 "name": "Get downloaded SKP VERSION" 68 }, 69 { 70 "cmd": [ 71 "python", 72 "-u", 73 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 74 "--json-output", 75 "/path/to/tmp/json", 76 "copy", 77 "42", 78 "[START_DIR]/tmp/SKP_VERSION" 79 ], 80 "infra_step": true, 81 "name": "write SKP_VERSION" 82 }, 83 { 84 "cmd": [ 85 "adb", 86 "shell", 87 "cat", 88 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 89 ], 90 "cwd": "[START_DIR]/skia", 91 "env": { 92 "BUILDTYPE": "Debug", 93 "CHROME_HEADLESS": "1", 94 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 95 "SKIA_OUT": "[START_DIR]/out" 96 }, 97 "infra_step": true, 98 "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION", 99 "stdout": "/path/to/tmp/" 100 }, 101 { 102 "cmd": [ 103 "adb", 104 "shell", 105 "rm", 106 "-f", 107 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 108 ], 109 "cwd": "[START_DIR]/skia", 110 "env": { 111 "BUILDTYPE": "Debug", 112 "CHROME_HEADLESS": "1", 113 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 114 "SKIA_OUT": "[START_DIR]/out" 115 }, 116 "infra_step": true, 117 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION" 118 }, 119 { 120 "cmd": [ 121 "adb", 122 "shell", 123 "rm", 124 "-rf", 125 "/sdcard/revenge_of_the_skiabot/skps" 126 ], 127 "cwd": "[START_DIR]/skia", 128 "env": { 129 "BUILDTYPE": "Debug", 130 "CHROME_HEADLESS": "1", 131 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 132 "SKIA_OUT": "[START_DIR]/out" 133 }, 134 "infra_step": true, 135 "name": "rm /sdcard/revenge_of_the_skiabot/skps" 136 }, 137 { 138 "cmd": [ 139 "adb", 140 "shell", 141 "mkdir", 142 "-p", 143 "/sdcard/revenge_of_the_skiabot/skps" 144 ], 145 "cwd": "[START_DIR]/skia", 146 "env": { 147 "BUILDTYPE": "Debug", 148 "CHROME_HEADLESS": "1", 149 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 150 "SKIA_OUT": "[START_DIR]/out" 151 }, 152 "infra_step": true, 153 "name": "mkdir /sdcard/revenge_of_the_skiabot/skps" 154 }, 155 { 156 "cmd": [ 157 "python", 158 "-u", 159 "\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(['adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 160 "[START_DIR]/skp", 161 "/sdcard/revenge_of_the_skiabot/skps" 162 ], 163 "env": { 164 "BUILDTYPE": "Debug", 165 "CHROME_HEADLESS": "1", 166 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 167 "SKIA_OUT": "[START_DIR]/out" 168 }, 169 "infra_step": true, 170 "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps", 171 "~followup_annotations": [ 172 "@@@STEP_LOG_LINE@python.inline@@@@", 173 "@@@STEP_LOG_LINE@python.inline@import os@@@", 174 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 175 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 176 "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@", 177 "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@", 178 "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@", 179 "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@", 180 "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@", 181 "@@@STEP_LOG_LINE@python.inline@ continue@@@", 182 "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@", 183 "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@", 184 "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@", 185 "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 186 "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@", 187 "@@@STEP_LOG_END@python.inline@@@" 188 ] 189 }, 190 { 191 "cmd": [ 192 "adb", 193 "push", 194 "[START_DIR]/tmp/SKP_VERSION", 195 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 196 ], 197 "cwd": "[START_DIR]/skia", 198 "env": { 199 "BUILDTYPE": "Debug", 200 "CHROME_HEADLESS": "1", 201 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 202 "SKIA_OUT": "[START_DIR]/out" 203 }, 204 "infra_step": true, 205 "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION" 206 }, 207 { 208 "cmd": [ 209 "python", 210 "-u", 211 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 212 "--json-output", 213 "/path/to/tmp/json", 214 "copy", 215 "[START_DIR]/skia/infra/bots/assets/skimage/VERSION", 216 "/path/to/tmp/" 217 ], 218 "infra_step": true, 219 "name": "Get downloaded skimage VERSION" 220 }, 221 { 222 "cmd": [ 223 "python", 224 "-u", 225 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 226 "--json-output", 227 "/path/to/tmp/json", 228 "copy", 229 "42", 230 "[START_DIR]/tmp/SK_IMAGE_VERSION" 231 ], 232 "infra_step": true, 233 "name": "write SK_IMAGE_VERSION" 234 }, 235 { 236 "cmd": [ 237 "adb", 238 "shell", 239 "cat", 240 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 241 ], 242 "cwd": "[START_DIR]/skia", 243 "env": { 244 "BUILDTYPE": "Debug", 245 "CHROME_HEADLESS": "1", 246 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 247 "SKIA_OUT": "[START_DIR]/out" 248 }, 249 "infra_step": true, 250 "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION", 251 "stdout": "/path/to/tmp/" 252 }, 253 { 254 "cmd": [ 255 "adb", 256 "shell", 257 "rm", 258 "-f", 259 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 260 ], 261 "cwd": "[START_DIR]/skia", 262 "env": { 263 "BUILDTYPE": "Debug", 264 "CHROME_HEADLESS": "1", 265 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 266 "SKIA_OUT": "[START_DIR]/out" 267 }, 268 "infra_step": true, 269 "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 270 }, 271 { 272 "cmd": [ 273 "adb", 274 "shell", 275 "rm", 276 "-rf", 277 "/sdcard/revenge_of_the_skiabot/images" 278 ], 279 "cwd": "[START_DIR]/skia", 280 "env": { 281 "BUILDTYPE": "Debug", 282 "CHROME_HEADLESS": "1", 283 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 284 "SKIA_OUT": "[START_DIR]/out" 285 }, 286 "infra_step": true, 287 "name": "rm /sdcard/revenge_of_the_skiabot/images" 288 }, 289 { 290 "cmd": [ 291 "adb", 292 "shell", 293 "mkdir", 294 "-p", 295 "/sdcard/revenge_of_the_skiabot/images" 296 ], 297 "cwd": "[START_DIR]/skia", 298 "env": { 299 "BUILDTYPE": "Debug", 300 "CHROME_HEADLESS": "1", 301 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 302 "SKIA_OUT": "[START_DIR]/out" 303 }, 304 "infra_step": true, 305 "name": "mkdir /sdcard/revenge_of_the_skiabot/images" 306 }, 307 { 308 "cmd": [ 309 "python", 310 "-u", 311 "\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(['adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 312 "[START_DIR]/skimage", 313 "/sdcard/revenge_of_the_skiabot/images" 314 ], 315 "env": { 316 "BUILDTYPE": "Debug", 317 "CHROME_HEADLESS": "1", 318 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 319 "SKIA_OUT": "[START_DIR]/out" 320 }, 321 "infra_step": true, 322 "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images", 323 "~followup_annotations": [ 324 "@@@STEP_LOG_LINE@python.inline@@@@", 325 "@@@STEP_LOG_LINE@python.inline@import os@@@", 326 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 327 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 328 "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@", 329 "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@", 330 "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@", 331 "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@", 332 "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@", 333 "@@@STEP_LOG_LINE@python.inline@ continue@@@", 334 "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@", 335 "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@", 336 "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@", 337 "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 338 "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@", 339 "@@@STEP_LOG_END@python.inline@@@" 340 ] 341 }, 342 { 343 "cmd": [ 344 "adb", 345 "push", 346 "[START_DIR]/tmp/SK_IMAGE_VERSION", 347 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 348 ], 349 "cwd": "[START_DIR]/skia", 350 "env": { 351 "BUILDTYPE": "Debug", 352 "CHROME_HEADLESS": "1", 353 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 354 "SKIA_OUT": "[START_DIR]/out" 355 }, 356 "infra_step": true, 357 "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 358 }, 359 { 360 "cmd": [ 361 "python", 362 "-u", 363 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 364 "--json-output", 365 "/path/to/tmp/json", 366 "copy", 367 "[START_DIR]/skia/infra/bots/assets/svg/VERSION", 368 "/path/to/tmp/" 369 ], 370 "infra_step": true, 371 "name": "Get downloaded SVG VERSION" 372 }, 373 { 374 "cmd": [ 375 "python", 376 "-u", 377 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 378 "--json-output", 379 "/path/to/tmp/json", 380 "copy", 381 "42", 382 "[START_DIR]/tmp/SVG_VERSION" 383 ], 384 "infra_step": true, 385 "name": "write SVG_VERSION" 386 }, 387 { 388 "cmd": [ 389 "adb", 390 "shell", 391 "cat", 392 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 393 ], 394 "cwd": "[START_DIR]/skia", 395 "env": { 396 "BUILDTYPE": "Debug", 397 "CHROME_HEADLESS": "1", 398 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 399 "SKIA_OUT": "[START_DIR]/out" 400 }, 401 "infra_step": true, 402 "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION", 403 "stdout": "/path/to/tmp/" 404 }, 405 { 406 "cmd": [ 407 "adb", 408 "shell", 409 "rm", 410 "-f", 411 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 412 ], 413 "cwd": "[START_DIR]/skia", 414 "env": { 415 "BUILDTYPE": "Debug", 416 "CHROME_HEADLESS": "1", 417 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 418 "SKIA_OUT": "[START_DIR]/out" 419 }, 420 "infra_step": true, 421 "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION" 422 }, 423 { 424 "cmd": [ 425 "adb", 426 "shell", 427 "rm", 428 "-rf", 429 "/sdcard/revenge_of_the_skiabot/svgs" 430 ], 431 "cwd": "[START_DIR]/skia", 432 "env": { 433 "BUILDTYPE": "Debug", 434 "CHROME_HEADLESS": "1", 435 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 436 "SKIA_OUT": "[START_DIR]/out" 437 }, 438 "infra_step": true, 439 "name": "rm /sdcard/revenge_of_the_skiabot/svgs" 440 }, 441 { 442 "cmd": [ 443 "adb", 444 "shell", 445 "mkdir", 446 "-p", 447 "/sdcard/revenge_of_the_skiabot/svgs" 448 ], 449 "cwd": "[START_DIR]/skia", 450 "env": { 451 "BUILDTYPE": "Debug", 452 "CHROME_HEADLESS": "1", 453 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 454 "SKIA_OUT": "[START_DIR]/out" 455 }, 456 "infra_step": true, 457 "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs" 458 }, 459 { 460 "cmd": [ 461 "python", 462 "-u", 463 "\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(['adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 464 "[START_DIR]/svg", 465 "/sdcard/revenge_of_the_skiabot/svgs" 466 ], 467 "env": { 468 "BUILDTYPE": "Debug", 469 "CHROME_HEADLESS": "1", 470 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 471 "SKIA_OUT": "[START_DIR]/out" 472 }, 473 "infra_step": true, 474 "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs", 475 "~followup_annotations": [ 476 "@@@STEP_LOG_LINE@python.inline@@@@", 477 "@@@STEP_LOG_LINE@python.inline@import os@@@", 478 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 479 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 480 "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@", 481 "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@", 482 "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@", 483 "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@", 484 "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@", 485 "@@@STEP_LOG_LINE@python.inline@ continue@@@", 486 "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@", 487 "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@", 488 "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@", 489 "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 490 "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@", 491 "@@@STEP_LOG_END@python.inline@@@" 492 ] 493 }, 494 { 495 "cmd": [ 496 "adb", 497 "push", 498 "[START_DIR]/tmp/SVG_VERSION", 499 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 500 ], 501 "cwd": "[START_DIR]/skia", 502 "env": { 503 "BUILDTYPE": "Debug", 504 "CHROME_HEADLESS": "1", 505 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 506 "SKIA_OUT": "[START_DIR]/out" 507 }, 508 "infra_step": true, 509 "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION" 510 }, 511 { 512 "cmd": [ 513 "python", 514 "-u", 515 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 516 "--json-output", 517 "/path/to/tmp/json", 518 "rmtree", 519 "[CUSTOM_[SWARM_OUT_DIR]]/dm" 520 ], 521 "infra_step": true, 522 "name": "rmtree dm" 523 }, 524 { 525 "cmd": [ 526 "python", 527 "-u", 528 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 529 "--json-output", 530 "/path/to/tmp/json", 531 "ensure-directory", 532 "--mode", 533 "0777", 534 "[CUSTOM_[SWARM_OUT_DIR]]/dm" 535 ], 536 "infra_step": true, 537 "name": "makedirs dm" 538 }, 539 { 540 "cmd": [ 541 "adb", 542 "shell", 543 "rm", 544 "-rf", 545 "/sdcard/revenge_of_the_skiabot/dm_out" 546 ], 547 "cwd": "[START_DIR]/skia", 548 "env": { 549 "BUILDTYPE": "Debug", 550 "CHROME_HEADLESS": "1", 551 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 552 "SKIA_OUT": "[START_DIR]/out" 553 }, 554 "infra_step": true, 555 "name": "rm /sdcard/revenge_of_the_skiabot/dm_out" 556 }, 557 { 558 "cmd": [ 559 "adb", 560 "shell", 561 "mkdir", 562 "-p", 563 "/sdcard/revenge_of_the_skiabot/dm_out" 564 ], 565 "cwd": "[START_DIR]/skia", 566 "env": { 567 "BUILDTYPE": "Debug", 568 "CHROME_HEADLESS": "1", 569 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 570 "SKIA_OUT": "[START_DIR]/out" 571 }, 572 "infra_step": true, 573 "name": "mkdir /sdcard/revenge_of_the_skiabot/dm_out" 574 }, 575 { 576 "cmd": [ 577 "python", 578 "-u", 579 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 580 "--json-output", 581 "/path/to/tmp/json", 582 "ensure-directory", 583 "--mode", 584 "0777", 585 "[START_DIR]/tmp" 586 ], 587 "infra_step": true, 588 "name": "makedirs tmp_dir" 589 }, 590 { 591 "cmd": [ 592 "python", 593 "-u", 594 "\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", 595 "[START_DIR]/tmp/uninteresting_hashes.txt" 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": "get uninteresting hashes", 605 "~followup_annotations": [ 606 "@@@STEP_LOG_LINE@python.inline@@@@", 607 "@@@STEP_LOG_LINE@python.inline@import contextlib@@@", 608 "@@@STEP_LOG_LINE@python.inline@import math@@@", 609 "@@@STEP_LOG_LINE@python.inline@import socket@@@", 610 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 611 "@@@STEP_LOG_LINE@python.inline@import time@@@", 612 "@@@STEP_LOG_LINE@python.inline@import urllib2@@@", 613 "@@@STEP_LOG_LINE@python.inline@@@@", 614 "@@@STEP_LOG_LINE@python.inline@HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'@@@", 615 "@@@STEP_LOG_LINE@python.inline@RETRIES = 5@@@", 616 "@@@STEP_LOG_LINE@python.inline@TIMEOUT = 60@@@", 617 "@@@STEP_LOG_LINE@python.inline@WAIT_BASE = 15@@@", 618 "@@@STEP_LOG_LINE@python.inline@@@@", 619 "@@@STEP_LOG_LINE@python.inline@socket.setdefaulttimeout(TIMEOUT)@@@", 620 "@@@STEP_LOG_LINE@python.inline@for retry in range(RETRIES):@@@", 621 "@@@STEP_LOG_LINE@python.inline@ try:@@@", 622 "@@@STEP_LOG_LINE@python.inline@ with contextlib.closing(@@@", 623 "@@@STEP_LOG_LINE@python.inline@ urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@", 624 "@@@STEP_LOG_LINE@python.inline@ hashes = w.read()@@@", 625 "@@@STEP_LOG_LINE@python.inline@ with open(sys.argv[1], 'w') as f:@@@", 626 "@@@STEP_LOG_LINE@python.inline@ f.write(hashes)@@@", 627 "@@@STEP_LOG_LINE@python.inline@ break@@@", 628 "@@@STEP_LOG_LINE@python.inline@ except Exception as e:@@@", 629 "@@@STEP_LOG_LINE@python.inline@ print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@", 630 "@@@STEP_LOG_LINE@python.inline@ print e@@@", 631 "@@@STEP_LOG_LINE@python.inline@ if retry == RETRIES:@@@", 632 "@@@STEP_LOG_LINE@python.inline@ raise@@@", 633 "@@@STEP_LOG_LINE@python.inline@ waittime = WAIT_BASE * math.pow(2, retry)@@@", 634 "@@@STEP_LOG_LINE@python.inline@ print 'Retry in %d seconds.' % waittime@@@", 635 "@@@STEP_LOG_LINE@python.inline@ time.sleep(waittime)@@@", 636 "@@@STEP_LOG_END@python.inline@@@" 637 ] 638 }, 639 { 640 "cmd": [ 641 "adb", 642 "push", 643 "[START_DIR]/tmp/uninteresting_hashes.txt", 644 "/sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt" 645 ], 646 "cwd": "[START_DIR]/skia", 647 "env": { 648 "BUILDTYPE": "Debug", 649 "CHROME_HEADLESS": "1", 650 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 651 "SKIA_OUT": "[START_DIR]/out" 652 }, 653 "infra_step": true, 654 "name": "push [START_DIR]/tmp/uninteresting_hashes.txt /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt" 655 }, 656 { 657 "cmd": [ 658 "python", 659 "-u", 660 "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n" 661 ], 662 "name": "get swarming bot id", 663 "stdout": "/path/to/tmp/", 664 "~followup_annotations": [ 665 "@@@STEP_LOG_LINE@python.inline@import os@@@", 666 "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@", 667 "@@@STEP_LOG_END@python.inline@@@" 668 ] 669 }, 670 { 671 "cmd": [ 672 "python", 673 "-u", 674 "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n" 675 ], 676 "name": "get swarming task id", 677 "stdout": "/path/to/tmp/", 678 "~followup_annotations": [ 679 "@@@STEP_LOG_LINE@python.inline@import os@@@", 680 "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@", 681 "@@@STEP_LOG_END@python.inline@@@" 682 ] 683 }, 684 { 685 "cmd": [ 686 "adb", 687 "push", 688 "[START_DIR]/out/Debug/dm", 689 "/data/local/tmp/" 690 ], 691 "cwd": "[START_DIR]/skia", 692 "env": { 693 "BUILDTYPE": "Debug", 694 "CHROME_HEADLESS": "1", 695 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 696 "SKIA_OUT": "[START_DIR]/out" 697 }, 698 "infra_step": true, 699 "name": "push dm" 700 }, 701 { 702 "cmd": [ 703 "python", 704 "-u", 705 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 706 "--json-output", 707 "/path/to/tmp/json", 708 "copy", 709 "set -x; /data/local/tmp/dm --undefok --resourcePath /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/dm --colorImages /sdcard/revenge_of_the_skiabot/images/colorspace --nameByHash --properties gitHash abc123 builder Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-Android swarming_bot_id skia-bot-123 swarming_task_id 123456 --svgs /sdcard/revenge_of_the_skiabot/svgs --key arch arm64 compiler Clang configuration Debug cpu_or_gpu GPU cpu_or_gpu_value MaliT760 extra_config Android model GalaxyS6 os Android --uninterestingHashesFile /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt --writePath /sdcard/revenge_of_the_skiabot/dm_out --nocpu --randomProcessorTest --config 8888 srgb gles glesdft glessrgb glesmsaa4 serialize-8888 tiles_rt-8888 pic-8888 --src tests gm image colorImage svg --blacklist glessrgb image _ _ _ test _ GrShape serialize-8888 gm _ bleed_image serialize-8888 gm _ c_gms serialize-8888 gm _ colortype serialize-8888 gm _ colortype_xfermodes serialize-8888 gm _ drawfilter serialize-8888 gm _ fontmgr_bounds_0.75_0 serialize-8888 gm _ fontmgr_bounds_1_-0.25 serialize-8888 gm _ fontmgr_bounds serialize-8888 gm _ fontmgr_match serialize-8888 gm _ fontmgr_iter serialize-8888 gm _ imagemasksubset serialize-8888 gm _ bitmapfilters serialize-8888 gm _ bitmapshaders serialize-8888 gm _ bleed serialize-8888 gm _ bleed_alpha_bmp serialize-8888 gm _ bleed_alpha_bmp_shader serialize-8888 gm _ convex_poly_clip serialize-8888 gm _ extractalpha serialize-8888 gm _ filterbitmap_checkerboard_32_32_g8 serialize-8888 gm _ filterbitmap_image_mandrill_64 serialize-8888 gm _ shadows serialize-8888 gm _ simpleaaclip_aaclip serialize-8888 gm _ composeshader_bitmap serialize-8888 gm _ scaled_tilemodes_npot serialize-8888 gm _ scaled_tilemodes serialize-8888 gm _ typefacerendering_pfaMac serialize-8888 gm _ parsedpaths serialize-8888 gm _ ImageGeneratorExternal_rect serialize-8888 gm _ ImageGeneratorExternal_shader serialize-8888 gm _ shadow_utils serialize-8888 gm _ makecolorspace serialize-8888 gm _ bleed_alpha_image serialize-8888 gm _ bleed_alpha_image_shader serialize-8888 gm _ verylargebitmap serialize-8888 gm _ verylarge_picture_image pic-8888 gm _ drawfilter pic-8888 gm _ image-cacherator-from-picture serialize-8888 gm _ image-cacherator-from-picture pic-8888 gm _ image-cacherator-from-raster serialize-8888 gm _ image-cacherator-from-raster pic-8888 gm _ image-cacherator-from-ctable serialize-8888 gm _ image-cacherator-from-ctable pic-8888 gm _ gamut serialize-8888 gm _ gamut pic-8888 gm _ complexclip4_bw serialize-8888 gm _ complexclip4_bw pic-8888 gm _ complexclip4_aa serialize-8888 gm _ complexclip4_aa tiles_rt-8888 gm _ complexclip4_bw tiles_rt-8888 gm _ complexclip4_aa _ image _ interlaced1.png _ image _ interlaced2.png _ image _ interlaced3.png _ image _ .arw _ image _ .cr2 _ image _ .dng _ image _ .nef _ image _ .nrw _ image _ .orf _ image _ .raf _ image _ .rw2 _ image _ .pef _ image _ .srw _ image _ .ARW _ image _ .CR2 _ image _ .DNG _ image _ .NEF _ image _ .NRW _ image _ .ORF _ image _ .RAF _ image _ .RW2 _ image _ .PEF _ image _ .SRW --match ~SpecialImage ~skbug6653; echo $? >/data/local/tmp/rc", 710 "[START_DIR]/tmp/dm.sh" 711 ], 712 "env": { 713 "BUILDTYPE": "Debug", 714 "CHROME_HEADLESS": "1", 715 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 716 "SKIA_OUT": "[START_DIR]/out" 717 }, 718 "infra_step": true, 719 "name": "write dm.sh" 720 }, 721 { 722 "cmd": [ 723 "adb", 724 "push", 725 "[START_DIR]/tmp/dm.sh", 726 "/data/local/tmp/" 727 ], 728 "cwd": "[START_DIR]/skia", 729 "env": { 730 "BUILDTYPE": "Debug", 731 "CHROME_HEADLESS": "1", 732 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 733 "SKIA_OUT": "[START_DIR]/out" 734 }, 735 "infra_step": true, 736 "name": "push dm.sh" 737 }, 738 { 739 "cmd": [ 740 "adb", 741 "logcat", 742 "-c" 743 ], 744 "cwd": "[START_DIR]/skia", 745 "env": { 746 "BUILDTYPE": "Debug", 747 "CHROME_HEADLESS": "1", 748 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 749 "SKIA_OUT": "[START_DIR]/out" 750 }, 751 "infra_step": true, 752 "name": "clear log" 753 }, 754 { 755 "cmd": [ 756 "python", 757 "-u", 758 "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh = sys.argv[2]\nsubprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh])\ntry:\n sys.exit(int(subprocess.check_output(['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", 759 "/data/local/tmp/", 760 "dm.sh" 761 ], 762 "env": { 763 "BUILDTYPE": "Debug", 764 "CHROME_HEADLESS": "1", 765 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 766 "SKIA_OUT": "[START_DIR]/out" 767 }, 768 "name": "dm", 769 "~followup_annotations": [ 770 "@@@STEP_LOG_LINE@python.inline@@@@", 771 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 772 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 773 "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@", 774 "@@@STEP_LOG_LINE@python.inline@sh = sys.argv[2]@@@", 775 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh])@@@", 776 "@@@STEP_LOG_LINE@python.inline@try:@@@", 777 "@@@STEP_LOG_LINE@python.inline@ sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat',@@@", 778 "@@@STEP_LOG_LINE@python.inline@ bin_dir + 'rc'])))@@@", 779 "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@", 780 "@@@STEP_LOG_LINE@python.inline@ print \"Couldn't read the return code. Probably killed for OOM.\"@@@", 781 "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", 782 "@@@STEP_LOG_END@python.inline@@@" 783 ] 784 }, 785 { 786 "cmd": [ 787 "adb", 788 "pull", 789 "/sdcard/revenge_of_the_skiabot/dm_out", 790 "[CUSTOM_[SWARM_OUT_DIR]]/dm" 791 ], 792 "cwd": "[START_DIR]/skia", 793 "env": { 794 "BUILDTYPE": "Debug", 795 "CHROME_HEADLESS": "1", 796 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 797 "SKIA_OUT": "[START_DIR]/out" 798 }, 799 "infra_step": true, 800 "name": "pull /sdcard/revenge_of_the_skiabot/dm_out [CUSTOM_[SWARM_OUT_DIR]]/dm" 801 }, 802 { 803 "cmd": [ 804 "python", 805 "-u", 806 "\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", 807 "[START_DIR]/out/Debug" 808 ], 809 "env": { 810 "BUILDTYPE": "Debug", 811 "CHROME_HEADLESS": "1", 812 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 813 "SKIA_OUT": "[START_DIR]/out" 814 }, 815 "infra_step": true, 816 "name": "dump log", 817 "~followup_annotations": [ 818 "@@@STEP_LOG_LINE@python.inline@@@@", 819 "@@@STEP_LOG_LINE@python.inline@import os@@@", 820 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 821 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 822 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 823 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@", 824 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 825 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 826 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 827 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 828 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 829 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 830 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 831 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 832 "@@@STEP_LOG_LINE@python.inline@ print line@@@", 833 "@@@STEP_LOG_END@python.inline@@@" 834 ] 835 }, 836 { 837 "cmd": [ 838 "adb", 839 "kill-server" 840 ], 841 "cwd": "[START_DIR]/skia", 842 "env": { 843 "BUILDTYPE": "Debug", 844 "CHROME_HEADLESS": "1", 845 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", 846 "SKIA_OUT": "[START_DIR]/out" 847 }, 848 "infra_step": true, 849 "name": "kill adb server" 850 }, 851 { 852 "name": "$result", 853 "recipe_result": null, 854 "status_code": 0 855 } 856]