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