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