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