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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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": "Release",
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      "shell",
497      "rm",
498      "-rf",
499      "/sdcard/revenge_of_the_skiabot/perf"
500    ],
501    "cwd": "[START_DIR]/skia",
502    "env": {
503      "BUILDTYPE": "Release",
504      "CHROME_HEADLESS": "1",
505      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
506      "SKIA_OUT": "[START_DIR]/out"
507    },
508    "infra_step": true,
509    "name": "rm /sdcard/revenge_of_the_skiabot/perf"
510  },
511  {
512    "cmd": [
513      "adb",
514      "shell",
515      "mkdir",
516      "-p",
517      "/sdcard/revenge_of_the_skiabot/perf"
518    ],
519    "cwd": "[START_DIR]/skia",
520    "env": {
521      "BUILDTYPE": "Release",
522      "CHROME_HEADLESS": "1",
523      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
524      "SKIA_OUT": "[START_DIR]/out"
525    },
526    "infra_step": true,
527    "name": "mkdir /sdcard/revenge_of_the_skiabot/perf"
528  },
529  {
530    "cmd": [
531      "adb",
532      "push",
533      "[START_DIR]/out/Release/nanobench",
534      "/data/local/tmp/"
535    ],
536    "cwd": "[START_DIR]/skia",
537    "env": {
538      "BUILDTYPE": "Release",
539      "CHROME_HEADLESS": "1",
540      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
541      "SKIA_OUT": "[START_DIR]/out"
542    },
543    "infra_step": true,
544    "name": "push nanobench"
545  },
546  {
547    "cmd": [
548      "python",
549      "-u",
550      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
551      "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 glesinst --match ~blurroundrect ~patch_grid ~desk_carsvg ~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 --outResultsFile /sdcard/revenge_of_the_skiabot/perf/nanobench_abc123_1337000001.json --properties gitHash abc123 build_number 5 --key arch arm compiler Clang cpu_or_gpu GPU cpu_or_gpu_value Adreno420 extra_config GN_Android model Nexus6 os Android; echo $? >/data/local/tmp/rc",
552      "[START_DIR]/tmp/nanobench.sh"
553    ],
554    "env": {
555      "BUILDTYPE": "Release",
556      "CHROME_HEADLESS": "1",
557      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
558      "SKIA_OUT": "[START_DIR]/out"
559    },
560    "infra_step": true,
561    "name": "write nanobench.sh"
562  },
563  {
564    "cmd": [
565      "adb",
566      "push",
567      "[START_DIR]/tmp/nanobench.sh",
568      "/data/local/tmp/"
569    ],
570    "cwd": "[START_DIR]/skia",
571    "env": {
572      "BUILDTYPE": "Release",
573      "CHROME_HEADLESS": "1",
574      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
575      "SKIA_OUT": "[START_DIR]/out"
576    },
577    "infra_step": true,
578    "name": "push nanobench.sh"
579  },
580  {
581    "cmd": [
582      "adb",
583      "logcat",
584      "-c"
585    ],
586    "cwd": "[START_DIR]/skia",
587    "env": {
588      "BUILDTYPE": "Release",
589      "CHROME_HEADLESS": "1",
590      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
591      "SKIA_OUT": "[START_DIR]/out"
592    },
593    "infra_step": true,
594    "name": "clear log"
595  },
596  {
597    "cmd": [
598      "python",
599      "-u",
600      "\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",
601      "/data/local/tmp/",
602      "nanobench.sh"
603    ],
604    "env": {
605      "BUILDTYPE": "Release",
606      "CHROME_HEADLESS": "1",
607      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
608      "SKIA_OUT": "[START_DIR]/out"
609    },
610    "name": "nanobench",
611    "~followup_annotations": [
612      "@@@STEP_LOG_LINE@python.inline@@@@",
613      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
614      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
615      "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@",
616      "@@@STEP_LOG_LINE@python.inline@sh      = sys.argv[2]@@@",
617      "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh])@@@",
618      "@@@STEP_LOG_LINE@python.inline@try:@@@",
619      "@@@STEP_LOG_LINE@python.inline@  sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat',@@@",
620      "@@@STEP_LOG_LINE@python.inline@                                        bin_dir + 'rc'])))@@@",
621      "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@",
622      "@@@STEP_LOG_LINE@python.inline@  print \"Couldn't read the return code.  Probably killed for OOM.\"@@@",
623      "@@@STEP_LOG_LINE@python.inline@  sys.exit(1)@@@",
624      "@@@STEP_LOG_END@python.inline@@@"
625    ]
626  },
627  {
628    "cmd": [
629      "python",
630      "-u",
631      "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n  if os.path.exists(path):\n    print \"%s exists but is not a dir\" % path\n    sys.exit(1)\n  os.makedirs(path, mode)\n",
632      "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android/data",
633      "511"
634    ],
635    "name": "makedirs perf_dir",
636    "~followup_annotations": [
637      "@@@STEP_LOG_LINE@python.inline@@@@",
638      "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
639      "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
640      "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
641      "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
642      "@@@STEP_LOG_LINE@python.inline@  if os.path.exists(path):@@@",
643      "@@@STEP_LOG_LINE@python.inline@    print \"%s exists but is not a dir\" % path@@@",
644      "@@@STEP_LOG_LINE@python.inline@    sys.exit(1)@@@",
645      "@@@STEP_LOG_LINE@python.inline@  os.makedirs(path, mode)@@@",
646      "@@@STEP_LOG_END@python.inline@@@"
647    ]
648  },
649  {
650    "cmd": [
651      "adb",
652      "pull",
653      "/sdcard/revenge_of_the_skiabot/perf",
654      "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android/data"
655    ],
656    "cwd": "[START_DIR]/skia",
657    "env": {
658      "BUILDTYPE": "Release",
659      "CHROME_HEADLESS": "1",
660      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
661      "SKIA_OUT": "[START_DIR]/out"
662    },
663    "infra_step": true,
664    "name": "pull /sdcard/revenge_of_the_skiabot/perf [CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android/data"
665  },
666  {
667    "cmd": [
668      "python",
669      "-u",
670      "\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",
671      "[START_DIR]/out/Release"
672    ],
673    "env": {
674      "BUILDTYPE": "Release",
675      "CHROME_HEADLESS": "1",
676      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
677      "SKIA_OUT": "[START_DIR]/out"
678    },
679    "infra_step": true,
680    "name": "dump log",
681    "~followup_annotations": [
682      "@@@STEP_LOG_LINE@python.inline@@@@",
683      "@@@STEP_LOG_LINE@python.inline@import os@@@",
684      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
685      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
686      "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@",
687      "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@",
688      "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@",
689      "@@@STEP_LOG_LINE@python.inline@  tokens = line.split()@@@",
690      "@@@STEP_LOG_LINE@python.inline@  if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
691      "@@@STEP_LOG_LINE@python.inline@    addr, path = tokens[-2:]@@@",
692      "@@@STEP_LOG_LINE@python.inline@    local = os.path.join(out, os.path.basename(path))@@@",
693      "@@@STEP_LOG_LINE@python.inline@    if os.path.exists(local):@@@",
694      "@@@STEP_LOG_LINE@python.inline@      sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
695      "@@@STEP_LOG_LINE@python.inline@      line = line.replace(addr, addr + ' ' + sym.strip())@@@",
696      "@@@STEP_LOG_LINE@python.inline@  print line@@@",
697      "@@@STEP_LOG_END@python.inline@@@"
698    ]
699  },
700  {
701    "cmd": [
702      "adb",
703      "kill-server"
704    ],
705    "cwd": "[START_DIR]/skia",
706    "env": {
707      "BUILDTYPE": "Release",
708      "CHROME_HEADLESS": "1",
709      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
710      "SKIA_OUT": "[START_DIR]/out"
711    },
712    "infra_step": true,
713    "name": "kill adb server"
714  },
715  {
716    "name": "$result",
717    "recipe_result": null,
718    "status_code": 0
719  }
720]