1[
2  {
3    "cmd": [
4      "adb",
5      "shell",
6      "mkdir",
7      "-p",
8      "/sdcard/revenge_of_the_skiabot/resources"
9    ],
10    "cwd": "[START_DIR]/skia",
11    "env": {
12      "BUILDTYPE": "Debug",
13      "CHROME_HEADLESS": "1",
14      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
15      "SKIA_OUT": "[START_DIR]/out"
16    },
17    "infra_step": true,
18    "name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
19  },
20  {
21    "cmd": [
22      "python",
23      "-u",
24      "\nimport os\nimport subprocess\nimport sys\nhost   = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n  p = os.path.relpath(d, host)\n  if p != '.' and p.startswith('.'):\n    continue\n  for f in fs:\n    print os.path.join(p,f)\n    subprocess.check_call(['adb', 'push',\n                           os.path.realpath(os.path.join(host, p, f)),\n                           os.path.join(device, p, f)])\n",
25      "[START_DIR]/skia/resources",
26      "/sdcard/revenge_of_the_skiabot/resources"
27    ],
28    "env": {
29      "BUILDTYPE": "Debug",
30      "CHROME_HEADLESS": "1",
31      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
32      "SKIA_OUT": "[START_DIR]/out"
33    },
34    "infra_step": true,
35    "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
36    "~followup_annotations": [
37      "@@@STEP_LOG_LINE@python.inline@@@@",
38      "@@@STEP_LOG_LINE@python.inline@import os@@@",
39      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
40      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
41      "@@@STEP_LOG_LINE@python.inline@host   = sys.argv[1]@@@",
42      "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
43      "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
44      "@@@STEP_LOG_LINE@python.inline@  p = os.path.relpath(d, host)@@@",
45      "@@@STEP_LOG_LINE@python.inline@  if p != '.' and p.startswith('.'):@@@",
46      "@@@STEP_LOG_LINE@python.inline@    continue@@@",
47      "@@@STEP_LOG_LINE@python.inline@  for f in fs:@@@",
48      "@@@STEP_LOG_LINE@python.inline@    print os.path.join(p,f)@@@",
49      "@@@STEP_LOG_LINE@python.inline@    subprocess.check_call(['adb', 'push',@@@",
50      "@@@STEP_LOG_LINE@python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
51      "@@@STEP_LOG_LINE@python.inline@                           os.path.join(device, p, f)])@@@",
52      "@@@STEP_LOG_END@python.inline@@@"
53    ]
54  },
55  {
56    "cmd": [
57      "python",
58      "-u",
59      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
60      "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
61      "/path/to/tmp/"
62    ],
63    "infra_step": true,
64    "name": "Get downloaded SKP VERSION"
65  },
66  {
67    "cmd": [
68      "python",
69      "-u",
70      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
71      "42",
72      "[START_DIR]/tmp/SKP_VERSION"
73    ],
74    "infra_step": true,
75    "name": "write SKP_VERSION"
76  },
77  {
78    "cmd": [
79      "adb",
80      "shell",
81      "cat",
82      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
83    ],
84    "cwd": "[START_DIR]/skia",
85    "env": {
86      "BUILDTYPE": "Debug",
87      "CHROME_HEADLESS": "1",
88      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
89      "SKIA_OUT": "[START_DIR]/out"
90    },
91    "infra_step": true,
92    "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION",
93    "stdout": "/path/to/tmp/"
94  },
95  {
96    "cmd": [
97      "adb",
98      "shell",
99      "rm",
100      "-f",
101      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
102    ],
103    "cwd": "[START_DIR]/skia",
104    "env": {
105      "BUILDTYPE": "Debug",
106      "CHROME_HEADLESS": "1",
107      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
108      "SKIA_OUT": "[START_DIR]/out"
109    },
110    "infra_step": true,
111    "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION"
112  },
113  {
114    "cmd": [
115      "adb",
116      "shell",
117      "rm",
118      "-rf",
119      "/sdcard/revenge_of_the_skiabot/skps"
120    ],
121    "cwd": "[START_DIR]/skia",
122    "env": {
123      "BUILDTYPE": "Debug",
124      "CHROME_HEADLESS": "1",
125      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
126      "SKIA_OUT": "[START_DIR]/out"
127    },
128    "infra_step": true,
129    "name": "rm /sdcard/revenge_of_the_skiabot/skps"
130  },
131  {
132    "cmd": [
133      "adb",
134      "shell",
135      "mkdir",
136      "-p",
137      "/sdcard/revenge_of_the_skiabot/skps"
138    ],
139    "cwd": "[START_DIR]/skia",
140    "env": {
141      "BUILDTYPE": "Debug",
142      "CHROME_HEADLESS": "1",
143      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
144      "SKIA_OUT": "[START_DIR]/out"
145    },
146    "infra_step": true,
147    "name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
148  },
149  {
150    "cmd": [
151      "python",
152      "-u",
153      "\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",
154      "[START_DIR]/skp",
155      "/sdcard/revenge_of_the_skiabot/skps"
156    ],
157    "env": {
158      "BUILDTYPE": "Debug",
159      "CHROME_HEADLESS": "1",
160      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
161      "SKIA_OUT": "[START_DIR]/out"
162    },
163    "infra_step": true,
164    "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
165    "~followup_annotations": [
166      "@@@STEP_LOG_LINE@python.inline@@@@",
167      "@@@STEP_LOG_LINE@python.inline@import os@@@",
168      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
169      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
170      "@@@STEP_LOG_LINE@python.inline@host   = sys.argv[1]@@@",
171      "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
172      "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
173      "@@@STEP_LOG_LINE@python.inline@  p = os.path.relpath(d, host)@@@",
174      "@@@STEP_LOG_LINE@python.inline@  if p != '.' and p.startswith('.'):@@@",
175      "@@@STEP_LOG_LINE@python.inline@    continue@@@",
176      "@@@STEP_LOG_LINE@python.inline@  for f in fs:@@@",
177      "@@@STEP_LOG_LINE@python.inline@    print os.path.join(p,f)@@@",
178      "@@@STEP_LOG_LINE@python.inline@    subprocess.check_call(['adb', 'push',@@@",
179      "@@@STEP_LOG_LINE@python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
180      "@@@STEP_LOG_LINE@python.inline@                           os.path.join(device, p, f)])@@@",
181      "@@@STEP_LOG_END@python.inline@@@"
182    ]
183  },
184  {
185    "cmd": [
186      "adb",
187      "push",
188      "[START_DIR]/tmp/SKP_VERSION",
189      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
190    ],
191    "cwd": "[START_DIR]/skia",
192    "env": {
193      "BUILDTYPE": "Debug",
194      "CHROME_HEADLESS": "1",
195      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
196      "SKIA_OUT": "[START_DIR]/out"
197    },
198    "infra_step": true,
199    "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION"
200  },
201  {
202    "cmd": [
203      "python",
204      "-u",
205      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
206      "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
207      "/path/to/tmp/"
208    ],
209    "infra_step": true,
210    "name": "Get downloaded skimage VERSION"
211  },
212  {
213    "cmd": [
214      "python",
215      "-u",
216      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
217      "42",
218      "[START_DIR]/tmp/SK_IMAGE_VERSION"
219    ],
220    "infra_step": true,
221    "name": "write SK_IMAGE_VERSION"
222  },
223  {
224    "cmd": [
225      "adb",
226      "shell",
227      "cat",
228      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
229    ],
230    "cwd": "[START_DIR]/skia",
231    "env": {
232      "BUILDTYPE": "Debug",
233      "CHROME_HEADLESS": "1",
234      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
235      "SKIA_OUT": "[START_DIR]/out"
236    },
237    "infra_step": true,
238    "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION",
239    "stdout": "/path/to/tmp/"
240  },
241  {
242    "cmd": [
243      "adb",
244      "shell",
245      "rm",
246      "-f",
247      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
248    ],
249    "cwd": "[START_DIR]/skia",
250    "env": {
251      "BUILDTYPE": "Debug",
252      "CHROME_HEADLESS": "1",
253      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
254      "SKIA_OUT": "[START_DIR]/out"
255    },
256    "infra_step": true,
257    "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
258  },
259  {
260    "cmd": [
261      "adb",
262      "shell",
263      "rm",
264      "-rf",
265      "/sdcard/revenge_of_the_skiabot/images"
266    ],
267    "cwd": "[START_DIR]/skia",
268    "env": {
269      "BUILDTYPE": "Debug",
270      "CHROME_HEADLESS": "1",
271      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
272      "SKIA_OUT": "[START_DIR]/out"
273    },
274    "infra_step": true,
275    "name": "rm /sdcard/revenge_of_the_skiabot/images"
276  },
277  {
278    "cmd": [
279      "adb",
280      "shell",
281      "mkdir",
282      "-p",
283      "/sdcard/revenge_of_the_skiabot/images"
284    ],
285    "cwd": "[START_DIR]/skia",
286    "env": {
287      "BUILDTYPE": "Debug",
288      "CHROME_HEADLESS": "1",
289      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
290      "SKIA_OUT": "[START_DIR]/out"
291    },
292    "infra_step": true,
293    "name": "mkdir /sdcard/revenge_of_the_skiabot/images"
294  },
295  {
296    "cmd": [
297      "python",
298      "-u",
299      "\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",
300      "[START_DIR]/skimage",
301      "/sdcard/revenge_of_the_skiabot/images"
302    ],
303    "env": {
304      "BUILDTYPE": "Debug",
305      "CHROME_HEADLESS": "1",
306      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
307      "SKIA_OUT": "[START_DIR]/out"
308    },
309    "infra_step": true,
310    "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
311    "~followup_annotations": [
312      "@@@STEP_LOG_LINE@python.inline@@@@",
313      "@@@STEP_LOG_LINE@python.inline@import os@@@",
314      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
315      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
316      "@@@STEP_LOG_LINE@python.inline@host   = sys.argv[1]@@@",
317      "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
318      "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
319      "@@@STEP_LOG_LINE@python.inline@  p = os.path.relpath(d, host)@@@",
320      "@@@STEP_LOG_LINE@python.inline@  if p != '.' and p.startswith('.'):@@@",
321      "@@@STEP_LOG_LINE@python.inline@    continue@@@",
322      "@@@STEP_LOG_LINE@python.inline@  for f in fs:@@@",
323      "@@@STEP_LOG_LINE@python.inline@    print os.path.join(p,f)@@@",
324      "@@@STEP_LOG_LINE@python.inline@    subprocess.check_call(['adb', 'push',@@@",
325      "@@@STEP_LOG_LINE@python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
326      "@@@STEP_LOG_LINE@python.inline@                           os.path.join(device, p, f)])@@@",
327      "@@@STEP_LOG_END@python.inline@@@"
328    ]
329  },
330  {
331    "cmd": [
332      "adb",
333      "push",
334      "[START_DIR]/tmp/SK_IMAGE_VERSION",
335      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
336    ],
337    "cwd": "[START_DIR]/skia",
338    "env": {
339      "BUILDTYPE": "Debug",
340      "CHROME_HEADLESS": "1",
341      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
342      "SKIA_OUT": "[START_DIR]/out"
343    },
344    "infra_step": true,
345    "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
346  },
347  {
348    "cmd": [
349      "python",
350      "-u",
351      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
352      "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
353      "/path/to/tmp/"
354    ],
355    "infra_step": true,
356    "name": "Get downloaded SVG VERSION"
357  },
358  {
359    "cmd": [
360      "python",
361      "-u",
362      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
363      "42",
364      "[START_DIR]/tmp/SVG_VERSION"
365    ],
366    "infra_step": true,
367    "name": "write SVG_VERSION"
368  },
369  {
370    "cmd": [
371      "adb",
372      "shell",
373      "cat",
374      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
375    ],
376    "cwd": "[START_DIR]/skia",
377    "env": {
378      "BUILDTYPE": "Debug",
379      "CHROME_HEADLESS": "1",
380      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
381      "SKIA_OUT": "[START_DIR]/out"
382    },
383    "infra_step": true,
384    "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION",
385    "stdout": "/path/to/tmp/"
386  },
387  {
388    "cmd": [
389      "adb",
390      "shell",
391      "rm",
392      "-f",
393      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
394    ],
395    "cwd": "[START_DIR]/skia",
396    "env": {
397      "BUILDTYPE": "Debug",
398      "CHROME_HEADLESS": "1",
399      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
400      "SKIA_OUT": "[START_DIR]/out"
401    },
402    "infra_step": true,
403    "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION"
404  },
405  {
406    "cmd": [
407      "adb",
408      "shell",
409      "rm",
410      "-rf",
411      "/sdcard/revenge_of_the_skiabot/svgs"
412    ],
413    "cwd": "[START_DIR]/skia",
414    "env": {
415      "BUILDTYPE": "Debug",
416      "CHROME_HEADLESS": "1",
417      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
418      "SKIA_OUT": "[START_DIR]/out"
419    },
420    "infra_step": true,
421    "name": "rm /sdcard/revenge_of_the_skiabot/svgs"
422  },
423  {
424    "cmd": [
425      "adb",
426      "shell",
427      "mkdir",
428      "-p",
429      "/sdcard/revenge_of_the_skiabot/svgs"
430    ],
431    "cwd": "[START_DIR]/skia",
432    "env": {
433      "BUILDTYPE": "Debug",
434      "CHROME_HEADLESS": "1",
435      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
436      "SKIA_OUT": "[START_DIR]/out"
437    },
438    "infra_step": true,
439    "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
440  },
441  {
442    "cmd": [
443      "python",
444      "-u",
445      "\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",
446      "[START_DIR]/svg",
447      "/sdcard/revenge_of_the_skiabot/svgs"
448    ],
449    "env": {
450      "BUILDTYPE": "Debug",
451      "CHROME_HEADLESS": "1",
452      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
453      "SKIA_OUT": "[START_DIR]/out"
454    },
455    "infra_step": true,
456    "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
457    "~followup_annotations": [
458      "@@@STEP_LOG_LINE@python.inline@@@@",
459      "@@@STEP_LOG_LINE@python.inline@import os@@@",
460      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
461      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
462      "@@@STEP_LOG_LINE@python.inline@host   = sys.argv[1]@@@",
463      "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
464      "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
465      "@@@STEP_LOG_LINE@python.inline@  p = os.path.relpath(d, host)@@@",
466      "@@@STEP_LOG_LINE@python.inline@  if p != '.' and p.startswith('.'):@@@",
467      "@@@STEP_LOG_LINE@python.inline@    continue@@@",
468      "@@@STEP_LOG_LINE@python.inline@  for f in fs:@@@",
469      "@@@STEP_LOG_LINE@python.inline@    print os.path.join(p,f)@@@",
470      "@@@STEP_LOG_LINE@python.inline@    subprocess.check_call(['adb', 'push',@@@",
471      "@@@STEP_LOG_LINE@python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
472      "@@@STEP_LOG_LINE@python.inline@                           os.path.join(device, p, f)])@@@",
473      "@@@STEP_LOG_END@python.inline@@@"
474    ]
475  },
476  {
477    "cmd": [
478      "adb",
479      "push",
480      "[START_DIR]/tmp/SVG_VERSION",
481      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
482    ],
483    "cwd": "[START_DIR]/skia",
484    "env": {
485      "BUILDTYPE": "Debug",
486      "CHROME_HEADLESS": "1",
487      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
488      "SKIA_OUT": "[START_DIR]/out"
489    },
490    "infra_step": true,
491    "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION"
492  },
493  {
494    "cmd": [
495      "adb",
496      "push",
497      "[START_DIR]/out/Debug/nanobench",
498      "/data/local/tmp/"
499    ],
500    "cwd": "[START_DIR]/skia",
501    "env": {
502      "BUILDTYPE": "Debug",
503      "CHROME_HEADLESS": "1",
504      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
505      "SKIA_OUT": "[START_DIR]/out"
506    },
507    "infra_step": true,
508    "name": "push nanobench"
509  },
510  {
511    "cmd": [
512      "python",
513      "-u",
514      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
515      "set -x; /data/local/tmp/nanobench --undefok -i /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/nanobench --svgs /sdcard/revenge_of_the_skiabot/svgs --nocpu --pre_log --images --gpuStatsDump true --useThermalManager 1,1,10,1000 --scales 1.0 1.1 --config 8888 nonrendering hwui gles glesmsaa4 glesnvpr4 glesnvprdit4 --match ~blurroundrect ~patch_grid ~desk_carsvg ~keymobi_shop_mobileweb_ebay_com.skp ~inc0.gif ~inc1.gif ~incInterlaced.gif ~inc0.jpg ~incGray.jpg ~inc0.wbmp ~inc1.wbmp ~inc0.webp ~inc1.webp ~inc0.ico ~inc1.ico ~inc0.png ~inc1.png ~inc2.png ~inc12.png ~inc13.png ~inc14.png ~inc0.webp ~inc1.webp; echo $? >/data/local/tmp/rc",
516      "[START_DIR]/tmp/nanobench.sh"
517    ],
518    "env": {
519      "BUILDTYPE": "Debug",
520      "CHROME_HEADLESS": "1",
521      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
522      "SKIA_OUT": "[START_DIR]/out"
523    },
524    "infra_step": true,
525    "name": "write nanobench.sh"
526  },
527  {
528    "cmd": [
529      "adb",
530      "push",
531      "[START_DIR]/tmp/nanobench.sh",
532      "/data/local/tmp/"
533    ],
534    "cwd": "[START_DIR]/skia",
535    "env": {
536      "BUILDTYPE": "Debug",
537      "CHROME_HEADLESS": "1",
538      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
539      "SKIA_OUT": "[START_DIR]/out"
540    },
541    "infra_step": true,
542    "name": "push nanobench.sh"
543  },
544  {
545    "cmd": [
546      "adb",
547      "logcat",
548      "-c"
549    ],
550    "cwd": "[START_DIR]/skia",
551    "env": {
552      "BUILDTYPE": "Debug",
553      "CHROME_HEADLESS": "1",
554      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
555      "SKIA_OUT": "[START_DIR]/out"
556    },
557    "infra_step": true,
558    "name": "clear log"
559  },
560  {
561    "cmd": [
562      "python",
563      "-u",
564      "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh      = sys.argv[2]\nsubprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh])\ntry:\n  sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat',\n                                        bin_dir + 'rc'])))\nexcept ValueError:\n  print \"Couldn't read the return code.  Probably killed for OOM.\"\n  sys.exit(1)\n",
565      "/data/local/tmp/",
566      "nanobench.sh"
567    ],
568    "env": {
569      "BUILDTYPE": "Debug",
570      "CHROME_HEADLESS": "1",
571      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
572      "SKIA_OUT": "[START_DIR]/out"
573    },
574    "name": "nanobench",
575    "~followup_annotations": [
576      "@@@STEP_LOG_LINE@python.inline@@@@",
577      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
578      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
579      "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@",
580      "@@@STEP_LOG_LINE@python.inline@sh      = sys.argv[2]@@@",
581      "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh])@@@",
582      "@@@STEP_LOG_LINE@python.inline@try:@@@",
583      "@@@STEP_LOG_LINE@python.inline@  sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat',@@@",
584      "@@@STEP_LOG_LINE@python.inline@                                        bin_dir + 'rc'])))@@@",
585      "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@",
586      "@@@STEP_LOG_LINE@python.inline@  print \"Couldn't read the return code.  Probably killed for OOM.\"@@@",
587      "@@@STEP_LOG_LINE@python.inline@  sys.exit(1)@@@",
588      "@@@STEP_LOG_END@python.inline@@@"
589    ]
590  },
591  {
592    "cmd": [
593      "python",
594      "-u",
595      "\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",
596      "[START_DIR]/out/Debug"
597    ],
598    "env": {
599      "BUILDTYPE": "Debug",
600      "CHROME_HEADLESS": "1",
601      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
602      "SKIA_OUT": "[START_DIR]/out"
603    },
604    "infra_step": true,
605    "name": "dump log",
606    "~followup_annotations": [
607      "@@@STEP_LOG_LINE@python.inline@@@@",
608      "@@@STEP_LOG_LINE@python.inline@import os@@@",
609      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
610      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
611      "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@",
612      "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@",
613      "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@",
614      "@@@STEP_LOG_LINE@python.inline@  tokens = line.split()@@@",
615      "@@@STEP_LOG_LINE@python.inline@  if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
616      "@@@STEP_LOG_LINE@python.inline@    addr, path = tokens[-2:]@@@",
617      "@@@STEP_LOG_LINE@python.inline@    local = os.path.join(out, os.path.basename(path))@@@",
618      "@@@STEP_LOG_LINE@python.inline@    if os.path.exists(local):@@@",
619      "@@@STEP_LOG_LINE@python.inline@      sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
620      "@@@STEP_LOG_LINE@python.inline@      line = line.replace(addr, addr + ' ' + sym.strip())@@@",
621      "@@@STEP_LOG_LINE@python.inline@  print line@@@",
622      "@@@STEP_LOG_END@python.inline@@@"
623    ]
624  },
625  {
626    "cmd": [
627      "adb",
628      "kill-server"
629    ],
630    "cwd": "[START_DIR]/skia",
631    "env": {
632      "BUILDTYPE": "Debug",
633      "CHROME_HEADLESS": "1",
634      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
635      "SKIA_OUT": "[START_DIR]/out"
636    },
637    "infra_step": true,
638    "name": "kill adb server"
639  },
640  {
641    "name": "$result",
642    "recipe_result": null,
643    "status_code": 0
644  }
645]