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 (a] python.inline@import os@@@", 27 "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@", 28 "@@@STEP_LOG_END (a] python.inline@@@" 29 ] 30 }, 31 { 32 "cmd": [ 33 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 42 "CHROME_HEADLESS": "1", 43 "PATH": "<PATH>:RECIPE_PACKAGE_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(['/opt/infra-android/tools/adb', '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_PACKAGE_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 (a] python.inline@@@@", 64 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 65 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 66 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 67 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 68 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 69 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 70 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 71 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 72 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 73 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 74 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 75 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 76 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 77 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 78 "@@@STEP_LOG_END (a] 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 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 119 "CHROME_HEADLESS": "1", 120 "PATH": "<PATH>:RECIPE_PACKAGE_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 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 137 "CHROME_HEADLESS": "1", 138 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 139 }, 140 "infra_step": true, 141 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION" 142 }, 143 { 144 "cmd": [ 145 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 154 "CHROME_HEADLESS": "1", 155 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 156 }, 157 "infra_step": true, 158 "name": "rm /sdcard/revenge_of_the_skiabot/skps" 159 }, 160 { 161 "cmd": [ 162 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 171 "CHROME_HEADLESS": "1", 172 "PATH": "<PATH>:RECIPE_PACKAGE_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(['/opt/infra-android/tools/adb', '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_PACKAGE_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 (a] python.inline@@@@", 193 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 194 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 195 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 196 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 197 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 198 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 199 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 200 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 201 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 202 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 203 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 204 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 205 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 206 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 207 "@@@STEP_LOG_END (a] python.inline@@@" 208 ] 209 }, 210 { 211 "cmd": [ 212 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 220 "CHROME_HEADLESS": "1", 221 "PATH": "<PATH>:RECIPE_PACKAGE_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 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 264 "CHROME_HEADLESS": "1", 265 "PATH": "<PATH>:RECIPE_PACKAGE_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 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 282 "CHROME_HEADLESS": "1", 283 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 284 }, 285 "infra_step": true, 286 "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 287 }, 288 { 289 "cmd": [ 290 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 299 "CHROME_HEADLESS": "1", 300 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 301 }, 302 "infra_step": true, 303 "name": "rm /sdcard/revenge_of_the_skiabot/images" 304 }, 305 { 306 "cmd": [ 307 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 316 "CHROME_HEADLESS": "1", 317 "PATH": "<PATH>:RECIPE_PACKAGE_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(['/opt/infra-android/tools/adb', '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_PACKAGE_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 (a] python.inline@@@@", 338 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 339 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 340 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 341 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 342 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 343 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 344 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 345 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 346 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 347 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 348 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 349 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 350 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 351 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 352 "@@@STEP_LOG_END (a] python.inline@@@" 353 ] 354 }, 355 { 356 "cmd": [ 357 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 365 "CHROME_HEADLESS": "1", 366 "PATH": "<PATH>:RECIPE_PACKAGE_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 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 409 "CHROME_HEADLESS": "1", 410 "PATH": "<PATH>:RECIPE_PACKAGE_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 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 427 "CHROME_HEADLESS": "1", 428 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 429 }, 430 "infra_step": true, 431 "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION" 432 }, 433 { 434 "cmd": [ 435 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 444 "CHROME_HEADLESS": "1", 445 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 446 }, 447 "infra_step": true, 448 "name": "rm /sdcard/revenge_of_the_skiabot/svgs" 449 }, 450 { 451 "cmd": [ 452 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 461 "CHROME_HEADLESS": "1", 462 "PATH": "<PATH>:RECIPE_PACKAGE_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(['/opt/infra-android/tools/adb', '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_PACKAGE_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 (a] python.inline@@@@", 483 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 484 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 485 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 486 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 487 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 488 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 489 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 490 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 491 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 492 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 493 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 494 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 495 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 496 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 497 "@@@STEP_LOG_END (a] python.inline@@@" 498 ] 499 }, 500 { 501 "cmd": [ 502 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 510 "CHROME_HEADLESS": "1", 511 "PATH": "<PATH>:RECIPE_PACKAGE_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 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 555 "CHROME_HEADLESS": "1", 556 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 557 }, 558 "infra_step": true, 559 "name": "rm /sdcard/revenge_of_the_skiabot/dm_out" 560 }, 561 { 562 "cmd": [ 563 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_adbkey", 572 "CHROME_HEADLESS": "1", 573 "PATH": "<PATH>:RECIPE_PACKAGE_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_PACKAGE_REPO[depot_tools]" 589 }, 590 "infra_step": true, 591 "name": "get uninteresting hashes", 592 "~followup_annotations": [ 593 "step returned non-zero exit code: 1", 594 "@@@STEP_LOG_LINE (a] python.inline@@@@", 595 "@@@STEP_LOG_LINE (a] python.inline@import contextlib@@@", 596 "@@@STEP_LOG_LINE (a] python.inline@import math@@@", 597 "@@@STEP_LOG_LINE (a] python.inline@import socket@@@", 598 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 599 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 600 "@@@STEP_LOG_LINE (a] python.inline@import urllib2@@@", 601 "@@@STEP_LOG_LINE (a] python.inline@@@@", 602 "@@@STEP_LOG_LINE (a] python.inline@HASHES_URL = sys.argv[1]@@@", 603 "@@@STEP_LOG_LINE (a] python.inline@RETRIES = 5@@@", 604 "@@@STEP_LOG_LINE (a] python.inline@TIMEOUT = 60@@@", 605 "@@@STEP_LOG_LINE (a] python.inline@WAIT_BASE = 15@@@", 606 "@@@STEP_LOG_LINE (a] python.inline@@@@", 607 "@@@STEP_LOG_LINE (a] python.inline@socket.setdefaulttimeout(TIMEOUT)@@@", 608 "@@@STEP_LOG_LINE (a] python.inline@for retry in range(RETRIES):@@@", 609 "@@@STEP_LOG_LINE (a] python.inline@ try:@@@", 610 "@@@STEP_LOG_LINE (a] python.inline@ with contextlib.closing(@@@", 611 "@@@STEP_LOG_LINE (a] python.inline@ urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@", 612 "@@@STEP_LOG_LINE (a] python.inline@ hashes = w.read()@@@", 613 "@@@STEP_LOG_LINE (a] python.inline@ with open(sys.argv[2], 'w') as f:@@@", 614 "@@@STEP_LOG_LINE (a] python.inline@ f.write(hashes)@@@", 615 "@@@STEP_LOG_LINE (a] python.inline@ break@@@", 616 "@@@STEP_LOG_LINE (a] python.inline@ except Exception as e:@@@", 617 "@@@STEP_LOG_LINE (a] python.inline@ print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@", 618 "@@@STEP_LOG_LINE (a] python.inline@ print e@@@", 619 "@@@STEP_LOG_LINE (a] python.inline@ if retry == RETRIES:@@@", 620 "@@@STEP_LOG_LINE (a] python.inline@ raise@@@", 621 "@@@STEP_LOG_LINE (a] python.inline@ waittime = WAIT_BASE * math.pow(2, retry)@@@", 622 "@@@STEP_LOG_LINE (a] python.inline@ print 'Retry in %d seconds.' % waittime@@@", 623 "@@@STEP_LOG_LINE (a] python.inline@ time.sleep(waittime)@@@", 624 "@@@STEP_LOG_END (a] python.inline@@@", 625 "@@@STEP_EXCEPTION@@@" 626 ] 627 }, 628 { 629 "cmd": [ 630 "/opt/infra-android/tools/adb", 631 "push", 632 "[START_DIR]/tmp/uninteresting_hashes.txt", 633 "/sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt" 634 ], 635 "cwd": "[START_DIR]/skia", 636 "env": { 637 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 638 "CHROME_HEADLESS": "1", 639 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 640 }, 641 "infra_step": true, 642 "name": "push [START_DIR]/tmp/uninteresting_hashes.txt /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt" 643 }, 644 { 645 "cmd": [ 646 "python", 647 "-u", 648 "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n" 649 ], 650 "name": "get swarming bot id (2)", 651 "stdout": "/path/to/tmp/", 652 "~followup_annotations": [ 653 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 654 "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@", 655 "@@@STEP_LOG_END (a] python.inline@@@" 656 ] 657 }, 658 { 659 "cmd": [ 660 "python", 661 "-u", 662 "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n" 663 ], 664 "name": "get swarming task id", 665 "stdout": "/path/to/tmp/", 666 "~followup_annotations": [ 667 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 668 "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@", 669 "@@@STEP_LOG_END (a] python.inline@@@" 670 ] 671 }, 672 { 673 "cmd": [ 674 "python", 675 "-u", 676 "\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", 677 "/opt/infra-android/tools/adb", 678 "0", 679 "ondemand" 680 ], 681 "env": { 682 "CHROME_HEADLESS": "1", 683 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 684 }, 685 "infra_step": true, 686 "name": "Set CPU 0's governor to ondemand", 687 "timeout": 30, 688 "~followup_annotations": [ 689 "@@@STEP_LOG_LINE (a] python.inline@@@@", 690 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 691 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 692 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 693 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 694 "@@@STEP_LOG_LINE (a] python.inline@ADB = sys.argv[1]@@@", 695 "@@@STEP_LOG_LINE (a] python.inline@cpu = int(sys.argv[2])@@@", 696 "@@@STEP_LOG_LINE (a] python.inline@gov = sys.argv[3]@@@", 697 "@@@STEP_LOG_LINE (a] python.inline@@@@", 698 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 699 "@@@STEP_LOG_LINE (a] python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 700 "@@@STEP_LOG_LINE (a] python.inline@print log@@@", 701 "@@@STEP_LOG_LINE (a] python.inline@if 'cannot' in log:@@@", 702 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('adb root failed')@@@", 703 "@@@STEP_LOG_LINE (a] python.inline@@@@", 704 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_output([ADB, 'shell', 'echo \"%s\" > '@@@", 705 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])@@@", 706 "@@@STEP_LOG_LINE (a] python.inline@actual_gov = subprocess.check_output([ADB, 'shell', 'cat '@@@", 707 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()@@@", 708 "@@@STEP_LOG_LINE (a] python.inline@if actual_gov != gov:@@@", 709 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('(actual, expected) (%s, %s)'@@@", 710 "@@@STEP_LOG_LINE (a] python.inline@ % (actual_gov, gov))@@@", 711 "@@@STEP_LOG_END (a] python.inline@@@" 712 ] 713 }, 714 { 715 "cmd": [ 716 "/opt/infra-android/tools/adb", 717 "push", 718 "[START_DIR]/build/dm", 719 "/data/local/tmp/" 720 ], 721 "cwd": "[START_DIR]/skia", 722 "env": { 723 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 724 "CHROME_HEADLESS": "1", 725 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 726 }, 727 "infra_step": true, 728 "name": "push dm" 729 }, 730 { 731 "cmd": [ 732 "python", 733 "-u", 734 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 735 "--json-output", 736 "/path/to/tmp/json", 737 "copy", 738 "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-Nexus7-GPU-Tegra3-arm-Release-All-Android buildbucket_build_id 123454321 swarming_bot_id \"\" swarming_task_id \"\" --svgs /sdcard/revenge_of_the_skiabot/svgs --key arch arm compiler Clang configuration Release cpu_or_gpu GPU cpu_or_gpu_value Tegra3 extra_config Android model Nexus7 os Android --uninterestingHashesFile /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt --writePath /sdcard/revenge_of_the_skiabot/dm_out --dont_write pdf --nocpu --config gles glesdft glessrgb --src tests gm image colorImage svg --blacklist _ svg _ svgparse_ glessrgb image _ _ _ 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 --nonativeFonts --verbose; echo $? >/data/local/tmp/rc", 739 "[START_DIR]/tmp/dm.sh" 740 ], 741 "env": { 742 "CHROME_HEADLESS": "1", 743 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 744 }, 745 "infra_step": true, 746 "name": "write dm.sh" 747 }, 748 { 749 "cmd": [ 750 "/opt/infra-android/tools/adb", 751 "push", 752 "[START_DIR]/tmp/dm.sh", 753 "/data/local/tmp/" 754 ], 755 "cwd": "[START_DIR]/skia", 756 "env": { 757 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 758 "CHROME_HEADLESS": "1", 759 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 760 }, 761 "infra_step": true, 762 "name": "push dm.sh" 763 }, 764 { 765 "cmd": [ 766 "/opt/infra-android/tools/adb", 767 "logcat", 768 "-c" 769 ], 770 "cwd": "[START_DIR]/skia", 771 "env": { 772 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 773 "CHROME_HEADLESS": "1", 774 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 775 }, 776 "infra_step": true, 777 "name": "clear log" 778 }, 779 { 780 "cmd": [ 781 "python", 782 "-u", 783 "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh = sys.argv[2]\nsubprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])\ntry:\n sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',\n bin_dir + 'rc'])))\nexcept ValueError:\n print \"Couldn't read the return code. Probably killed for OOM.\"\n sys.exit(1)\n", 784 "/data/local/tmp/", 785 "dm.sh" 786 ], 787 "env": { 788 "CHROME_HEADLESS": "1", 789 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 790 }, 791 "name": "dm", 792 "~followup_annotations": [ 793 "@@@STEP_LOG_LINE (a] python.inline@@@@", 794 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 795 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 796 "@@@STEP_LOG_LINE (a] python.inline@bin_dir = sys.argv[1]@@@", 797 "@@@STEP_LOG_LINE (a] python.inline@sh = sys.argv[2]@@@", 798 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@", 799 "@@@STEP_LOG_LINE (a] python.inline@try:@@@", 800 "@@@STEP_LOG_LINE (a] python.inline@ sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',@@@", 801 "@@@STEP_LOG_LINE (a] python.inline@ bin_dir + 'rc'])))@@@", 802 "@@@STEP_LOG_LINE (a] python.inline@except ValueError:@@@", 803 "@@@STEP_LOG_LINE (a] python.inline@ print \"Couldn't read the return code. Probably killed for OOM.\"@@@", 804 "@@@STEP_LOG_LINE (a] python.inline@ sys.exit(1)@@@", 805 "@@@STEP_LOG_END (a] python.inline@@@" 806 ] 807 }, 808 { 809 "cmd": [], 810 "name": "adb pull" 811 }, 812 { 813 "cmd": [ 814 "/opt/infra-android/tools/adb", 815 "pull", 816 "/sdcard/revenge_of_the_skiabot/dm_out", 817 "[CLEANUP]/adb_pull_tmp_1" 818 ], 819 "cwd": "[START_DIR]/skia", 820 "env": { 821 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 822 "CHROME_HEADLESS": "1", 823 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 824 }, 825 "infra_step": true, 826 "name": "adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out", 827 "~followup_annotations": [ 828 "@@@STEP_NEST_LEVEL@1@@@" 829 ] 830 }, 831 { 832 "cmd": [ 833 "python", 834 "-u", 835 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 836 "--json-output", 837 "/path/to/tmp/json", 838 "glob", 839 "[CLEANUP]/adb_pull_tmp_1", 840 "dm_out/*" 841 ], 842 "infra_step": true, 843 "name": "adb pull.list pulled files", 844 "stdout": "/path/to/tmp/", 845 "~followup_annotations": [ 846 "@@@STEP_NEST_LEVEL@1@@@", 847 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/1.png@@@", 848 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/2.png@@@", 849 "@@@STEP_LOG_END@glob@@@" 850 ] 851 }, 852 { 853 "cmd": [ 854 "python", 855 "-u", 856 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 857 "--json-output", 858 "/path/to/tmp/json", 859 "copy", 860 "[CLEANUP]/adb_pull_tmp_1/1.png", 861 "[START_DIR]/[SWARM_OUT_DIR]" 862 ], 863 "infra_step": true, 864 "name": "adb pull.copy 1.png", 865 "~followup_annotations": [ 866 "@@@STEP_NEST_LEVEL@1@@@" 867 ] 868 }, 869 { 870 "cmd": [ 871 "python", 872 "-u", 873 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 874 "--json-output", 875 "/path/to/tmp/json", 876 "copy", 877 "[CLEANUP]/adb_pull_tmp_1/2.png", 878 "[START_DIR]/[SWARM_OUT_DIR]" 879 ], 880 "infra_step": true, 881 "name": "adb pull.copy 2.png", 882 "~followup_annotations": [ 883 "@@@STEP_NEST_LEVEL@1@@@" 884 ] 885 }, 886 { 887 "cmd": [ 888 "python", 889 "-u", 890 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 891 "--json-output", 892 "/path/to/tmp/json", 893 "rmtree", 894 "[CLEANUP]/adb_pull_tmp_1" 895 ], 896 "infra_step": true, 897 "name": "adb pull.rmtree [CLEANUP]/adb_pull_tmp_1", 898 "~followup_annotations": [ 899 "@@@STEP_NEST_LEVEL@1@@@" 900 ] 901 }, 902 { 903 "cmd": [ 904 "python", 905 "-u", 906 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n", 907 "[START_DIR]/build" 908 ], 909 "env": { 910 "CHROME_HEADLESS": "1", 911 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 912 }, 913 "infra_step": true, 914 "name": "dump log", 915 "timeout": 300, 916 "~followup_annotations": [ 917 "@@@STEP_LOG_LINE (a] python.inline@@@@", 918 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 919 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 920 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 921 "@@@STEP_LOG_LINE (a] python.inline@out = sys.argv[1]@@@", 922 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])@@@", 923 "@@@STEP_LOG_LINE (a] python.inline@for line in log.split('\\n'):@@@", 924 "@@@STEP_LOG_LINE (a] python.inline@ tokens = line.split()@@@", 925 "@@@STEP_LOG_LINE (a] python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 926 "@@@STEP_LOG_LINE (a] python.inline@ addr, path = tokens[-2:]@@@", 927 "@@@STEP_LOG_LINE (a] python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 928 "@@@STEP_LOG_LINE (a] python.inline@ if os.path.exists(local):@@@", 929 "@@@STEP_LOG_LINE (a] python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 930 "@@@STEP_LOG_LINE (a] python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 931 "@@@STEP_LOG_LINE (a] python.inline@ print line@@@", 932 "@@@STEP_LOG_END (a] python.inline@@@" 933 ] 934 }, 935 { 936 "cmd": [ 937 "/opt/infra-android/tools/adb", 938 "kill-server" 939 ], 940 "cwd": "[START_DIR]/skia", 941 "env": { 942 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 943 "CHROME_HEADLESS": "1", 944 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 945 }, 946 "infra_step": true, 947 "name": "kill adb server" 948 }, 949 { 950 "jsonResult": null, 951 "name": "$result" 952 } 953 ]