1[ 2 { 3 "cmd": [ 4 "adb", 5 "reboot" 6 ], 7 "cwd": "[START_DIR]/skia", 8 "env": { 9 "BUILDTYPE": "Debug", 10 "CHROME_HEADLESS": "1", 11 "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]", 12 "SKIA_OUT": "[START_DIR]/out" 13 }, 14 "infra_step": true, 15 "name": "rebooting device" 16 }, 17 { 18 "cmd": [ 19 "python", 20 "-u", 21 "\nimport subprocess\nimport sys\nimport time\n\nkicks = 0\nwhile True:\n\n times = 0\n while times < 30:\n print 'Waiting for the device to be connected and ready.'\n try:\n times += 1\n output = subprocess.check_output(['adb', 'shell',\n 'getprop', 'sys.boot_completed'])\n if '1' in output:\n print 'Connected'\n sys.exit(0)\n except subprocess.CalledProcessError:\n # no device connected/authorized yet\n pass\n time.sleep(5)\n if kicks >= 3:\n break\n print 'Giving the device a \"kick\" by trying to reboot it.'\n kicks += 1\n print subprocess.check_output(['adb', 'reboot'])\n\nprint 'Timed out waiting for device'\nsys.exit(1)\n" 22 ], 23 "env": { 24 "BUILDTYPE": "Debug", 25 "CHROME_HEADLESS": "1", 26 "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]", 27 "SKIA_OUT": "[START_DIR]/out" 28 }, 29 "infra_step": true, 30 "name": "wait for device", 31 "~followup_annotations": [ 32 "@@@STEP_LOG_LINE@python.inline@@@@", 33 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 34 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 35 "@@@STEP_LOG_LINE@python.inline@import time@@@", 36 "@@@STEP_LOG_LINE@python.inline@@@@", 37 "@@@STEP_LOG_LINE@python.inline@kicks = 0@@@", 38 "@@@STEP_LOG_LINE@python.inline@while True:@@@", 39 "@@@STEP_LOG_LINE@python.inline@@@@", 40 "@@@STEP_LOG_LINE@python.inline@ times = 0@@@", 41 "@@@STEP_LOG_LINE@python.inline@ while times < 30:@@@", 42 "@@@STEP_LOG_LINE@python.inline@ print 'Waiting for the device to be connected and ready.'@@@", 43 "@@@STEP_LOG_LINE@python.inline@ try:@@@", 44 "@@@STEP_LOG_LINE@python.inline@ times += 1@@@", 45 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(['adb', 'shell',@@@", 46 "@@@STEP_LOG_LINE@python.inline@ 'getprop', 'sys.boot_completed'])@@@", 47 "@@@STEP_LOG_LINE@python.inline@ if '1' in output:@@@", 48 "@@@STEP_LOG_LINE@python.inline@ print 'Connected'@@@", 49 "@@@STEP_LOG_LINE@python.inline@ sys.exit(0)@@@", 50 "@@@STEP_LOG_LINE@python.inline@ except subprocess.CalledProcessError:@@@", 51 "@@@STEP_LOG_LINE@python.inline@ # no device connected/authorized yet@@@", 52 "@@@STEP_LOG_LINE@python.inline@ pass@@@", 53 "@@@STEP_LOG_LINE@python.inline@ time.sleep(5)@@@", 54 "@@@STEP_LOG_LINE@python.inline@ if kicks >= 3:@@@", 55 "@@@STEP_LOG_LINE@python.inline@ break@@@", 56 "@@@STEP_LOG_LINE@python.inline@ print 'Giving the device a \"kick\" by trying to reboot it.'@@@", 57 "@@@STEP_LOG_LINE@python.inline@ kicks += 1@@@", 58 "@@@STEP_LOG_LINE@python.inline@ print subprocess.check_output(['adb', 'reboot'])@@@", 59 "@@@STEP_LOG_LINE@python.inline@@@@", 60 "@@@STEP_LOG_LINE@python.inline@print 'Timed out waiting for device'@@@", 61 "@@@STEP_LOG_LINE@python.inline@sys.exit(1)@@@", 62 "@@@STEP_LOG_END@python.inline@@@" 63 ] 64 }, 65 { 66 "cmd": [ 67 "adb", 68 "shell", 69 "mkdir", 70 "-p", 71 "/sdcard/revenge_of_the_skiabot/resources" 72 ], 73 "cwd": "[START_DIR]/skia", 74 "env": { 75 "BUILDTYPE": "Debug", 76 "CHROME_HEADLESS": "1", 77 "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]", 78 "SKIA_OUT": "[START_DIR]/out" 79 }, 80 "infra_step": true, 81 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 82 }, 83 { 84 "cmd": [ 85 "python", 86 "-u", 87 "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 88 "[START_DIR]/skia/resources", 89 "/sdcard/revenge_of_the_skiabot/resources" 90 ], 91 "env": { 92 "BUILDTYPE": "Debug", 93 "CHROME_HEADLESS": "1", 94 "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]", 95 "SKIA_OUT": "[START_DIR]/out" 96 }, 97 "infra_step": true, 98 "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources", 99 "~followup_annotations": [ 100 "step returned non-zero exit code: 1", 101 "@@@STEP_LOG_LINE@python.inline@@@@", 102 "@@@STEP_LOG_LINE@python.inline@import os@@@", 103 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 104 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 105 "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@", 106 "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@", 107 "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@", 108 "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@", 109 "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@", 110 "@@@STEP_LOG_LINE@python.inline@ continue@@@", 111 "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@", 112 "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@", 113 "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@", 114 "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 115 "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@", 116 "@@@STEP_LOG_END@python.inline@@@", 117 "@@@STEP_EXCEPTION@@@" 118 ] 119 }, 120 { 121 "cmd": [ 122 "python", 123 "-u", 124 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n", 125 "[START_DIR]/out/Debug" 126 ], 127 "env": { 128 "BUILDTYPE": "Debug", 129 "CHROME_HEADLESS": "1", 130 "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]", 131 "SKIA_OUT": "[START_DIR]/out" 132 }, 133 "infra_step": true, 134 "name": "dump log", 135 "~followup_annotations": [ 136 "@@@STEP_LOG_LINE@python.inline@@@@", 137 "@@@STEP_LOG_LINE@python.inline@import os@@@", 138 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 139 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 140 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 141 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@", 142 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 143 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 144 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 145 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 146 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 147 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 148 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 149 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 150 "@@@STEP_LOG_LINE@python.inline@ print line@@@", 151 "@@@STEP_LOG_END@python.inline@@@" 152 ] 153 }, 154 { 155 "cmd": [ 156 "adb", 157 "shell", 158 "reboot", 159 "-p" 160 ], 161 "cwd": "[START_DIR]/skia", 162 "env": { 163 "BUILDTYPE": "Debug", 164 "CHROME_HEADLESS": "1", 165 "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]", 166 "SKIA_OUT": "[START_DIR]/out" 167 }, 168 "infra_step": true, 169 "name": "shut down device to quarantine bot" 170 }, 171 { 172 "cmd": [ 173 "adb", 174 "kill-server" 175 ], 176 "cwd": "[START_DIR]/skia", 177 "env": { 178 "BUILDTYPE": "Debug", 179 "CHROME_HEADLESS": "1", 180 "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]", 181 "SKIA_OUT": "[START_DIR]/out" 182 }, 183 "infra_step": true, 184 "name": "kill adb server" 185 }, 186 { 187 "name": "$result", 188 "reason": "Infra Failure: Step('push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources') returned 1", 189 "recipe_result": null, 190 "status_code": 1 191 } 192]