1[
2  {
3    "cmd": [
4      "vpython3",
5      "-u",
6      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
7      "--json-output",
8      "/path/to/tmp/json",
9      "ensure-directory",
10      "--mode",
11      "0o777",
12      "[START_DIR]/tmp"
13    ],
14    "infra_step": true,
15    "name": "makedirs tmp_dir"
16  },
17  {
18    "cmd": [
19      "python3",
20      "RECIPE_MODULE[skia::vars]/resources/get_env_var.py",
21      "SWARMING_BOT_ID"
22    ],
23    "name": "get swarming bot id"
24  },
25  {
26    "cmd": [
27      "/usr/bin/adb.1.0.35",
28      "shell",
29      "mkdir",
30      "-p",
31      "/sdcard/revenge_of_the_skiabot/resources"
32    ],
33    "cwd": "[START_DIR]/skia",
34    "env": {
35      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
36      "CHROME_HEADLESS": "1",
37      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
38    },
39    "infra_step": true,
40    "name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
41  },
42  {
43    "cmd": [
44      "python3",
45      "RECIPE_MODULE[skia::flavor]/resources/setup_device_for_asan.py",
46      "/usr/bin/adb.1.0.35",
47      "[START_DIR]/android_ndk_linux/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/17/bin/asan_device_setup"
48    ],
49    "env": {
50      "CHROME_HEADLESS": "1",
51      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
52    },
53    "infra_step": true,
54    "name": "Setting up device to run ASAN",
55    "timeout": 300
56  },
57  {
58    "cmd": [
59      "python3",
60      "RECIPE_MODULE[skia::flavor]/resources/set_cpu_online.py",
61      "/usr/bin/adb.1.0.35",
62      "0",
63      "1"
64    ],
65    "env": {
66      "CHROME_HEADLESS": "1",
67      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
68    },
69    "infra_step": true,
70    "name": "Enabling CPU 0",
71    "timeout": 30
72  },
73  {
74    "cmd": [
75      "python3",
76      "RECIPE_MODULE[skia::flavor]/resources/set_cpu_online.py",
77      "/usr/bin/adb.1.0.35",
78      "1",
79      "1"
80    ],
81    "env": {
82      "CHROME_HEADLESS": "1",
83      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
84    },
85    "infra_step": true,
86    "name": "Enabling CPU 1",
87    "timeout": 30
88  },
89  {
90    "cmd": [
91      "python3",
92      "RECIPE_MODULE[skia::flavor]/resources/set_cpu_online.py",
93      "/usr/bin/adb.1.0.35",
94      "2",
95      "1"
96    ],
97    "env": {
98      "CHROME_HEADLESS": "1",
99      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
100    },
101    "infra_step": true,
102    "name": "Enabling CPU 2",
103    "timeout": 30
104  },
105  {
106    "cmd": [
107      "python3",
108      "RECIPE_MODULE[skia::flavor]/resources/set_cpu_online.py",
109      "/usr/bin/adb.1.0.35",
110      "3",
111      "1"
112    ],
113    "env": {
114      "CHROME_HEADLESS": "1",
115      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
116    },
117    "infra_step": true,
118    "name": "Enabling CPU 3",
119    "timeout": 30
120  },
121  {
122    "cmd": [
123      "python3",
124      "RECIPE_MODULE[skia::flavor]/resources/set_cpu_scaling_governor.py",
125      "/usr/bin/adb.1.0.35",
126      "4",
127      "ondemand"
128    ],
129    "env": {
130      "CHROME_HEADLESS": "1",
131      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
132    },
133    "infra_step": true,
134    "name": "Set CPU 4's governor to ondemand",
135    "timeout": 30
136  },
137  {
138    "cmd": [
139      "python3",
140      "RECIPE_MODULE[skia::flavor]/resources/set_cpu_scaling_governor.py",
141      "/usr/bin/adb.1.0.35",
142      "0",
143      "ondemand"
144    ],
145    "env": {
146      "CHROME_HEADLESS": "1",
147      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
148    },
149    "infra_step": true,
150    "name": "Set CPU 0's governor to ondemand",
151    "timeout": 30
152  },
153  {
154    "cmd": [
155      "/usr/bin/adb.1.0.35",
156      "push",
157      "[START_DIR]/build/dm",
158      "/data/local/tmp/"
159    ],
160    "cwd": "[START_DIR]/skia",
161    "env": {
162      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
163      "CHROME_HEADLESS": "1",
164      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
165    },
166    "infra_step": true,
167    "name": "push dm"
168  },
169  {
170    "cmd": [
171      "vpython3",
172      "-u",
173      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
174      "--json-output",
175      "/path/to/tmp/json",
176      "glob",
177      "[START_DIR]/skia/resources",
178      "*"
179    ],
180    "infra_step": true,
181    "name": "ls [START_DIR]/skia/resources/*",
182    "~followup_annotations": [
183      "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/bar.jpg@@@",
184      "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/foo.png@@@",
185      "@@@STEP_LOG_END@glob@@@"
186    ]
187  },
188  {
189    "cmd": [
190      "/usr/bin/adb.1.0.35",
191      "push",
192      "[START_DIR]/skia/resources/bar.jpg",
193      "[START_DIR]/skia/resources/foo.png",
194      "/sdcard/revenge_of_the_skiabot/resources"
195    ],
196    "cwd": "[START_DIR]/skia",
197    "env": {
198      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
199      "CHROME_HEADLESS": "1",
200      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
201    },
202    "infra_step": true,
203    "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
204  },
205  {
206    "cmd": [
207      "vpython3",
208      "-u",
209      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
210      "--json-output",
211      "/path/to/tmp/json",
212      "copy",
213      "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
214      "/path/to/tmp/"
215    ],
216    "infra_step": true,
217    "name": "Get skp VERSION",
218    "~followup_annotations": [
219      "@@@STEP_LOG_LINE@VERSION@42@@@",
220      "@@@STEP_LOG_END@VERSION@@@"
221    ]
222  },
223  {
224    "cmd": [
225      "vpython3",
226      "-u",
227      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
228      "--json-output",
229      "/path/to/tmp/json",
230      "copy",
231      "42",
232      "[START_DIR]/tmp/SKP_VERSION"
233    ],
234    "infra_step": true,
235    "name": "write SKP_VERSION",
236    "~followup_annotations": [
237      "@@@STEP_LOG_LINE@SKP_VERSION@42@@@",
238      "@@@STEP_LOG_END@SKP_VERSION@@@"
239    ]
240  },
241  {
242    "cmd": [
243      "/usr/bin/adb.1.0.35",
244      "shell",
245      "test",
246      "-f",
247      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
248    ],
249    "cwd": "[START_DIR]/skia",
250    "env": {
251      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
252      "CHROME_HEADLESS": "1",
253      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
254    },
255    "infra_step": true,
256    "name": "check if /sdcard/revenge_of_the_skiabot/SKP_VERSION exists"
257  },
258  {
259    "cmd": [
260      "/usr/bin/adb.1.0.35",
261      "shell",
262      "cat",
263      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
264    ],
265    "cwd": "[START_DIR]/skia",
266    "env": {
267      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
268      "CHROME_HEADLESS": "1",
269      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
270    },
271    "infra_step": true,
272    "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION"
273  },
274  {
275    "cmd": [
276      "python3",
277      "RECIPE_MODULE[skia::flavor]/resources/remove_file_on_device.py",
278      "/usr/bin/adb.1.0.35",
279      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
280    ],
281    "env": {
282      "CHROME_HEADLESS": "1",
283      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
284    },
285    "infra_step": true,
286    "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION"
287  },
288  {
289    "cmd": [
290      "python3",
291      "RECIPE_MODULE[skia::flavor]/resources/remove_file_on_device.py",
292      "/usr/bin/adb.1.0.35",
293      "/sdcard/revenge_of_the_skiabot/skps"
294    ],
295    "env": {
296      "CHROME_HEADLESS": "1",
297      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
298    },
299    "infra_step": true,
300    "name": "rm /sdcard/revenge_of_the_skiabot/skps"
301  },
302  {
303    "cmd": [
304      "/usr/bin/adb.1.0.35",
305      "shell",
306      "mkdir",
307      "-p",
308      "/sdcard/revenge_of_the_skiabot/skps"
309    ],
310    "cwd": "[START_DIR]/skia",
311    "env": {
312      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
313      "CHROME_HEADLESS": "1",
314      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
315    },
316    "infra_step": true,
317    "name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
318  },
319  {
320    "cmd": [
321      "vpython3",
322      "-u",
323      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
324      "--json-output",
325      "/path/to/tmp/json",
326      "glob",
327      "[START_DIR]/skp",
328      "*"
329    ],
330    "infra_step": true,
331    "name": "ls [START_DIR]/skp/*",
332    "~followup_annotations": [
333      "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/bar.jpg@@@",
334      "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/foo.png@@@",
335      "@@@STEP_LOG_END@glob@@@"
336    ]
337  },
338  {
339    "cmd": [
340      "/usr/bin/adb.1.0.35",
341      "push",
342      "[START_DIR]/skp/bar.jpg",
343      "[START_DIR]/skp/foo.png",
344      "/sdcard/revenge_of_the_skiabot/skps"
345    ],
346    "cwd": "[START_DIR]/skia",
347    "env": {
348      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
349      "CHROME_HEADLESS": "1",
350      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
351    },
352    "infra_step": true,
353    "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
354  },
355  {
356    "cmd": [
357      "/usr/bin/adb.1.0.35",
358      "push",
359      "[START_DIR]/tmp/SKP_VERSION",
360      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
361    ],
362    "cwd": "[START_DIR]/skia",
363    "env": {
364      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
365      "CHROME_HEADLESS": "1",
366      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
367    },
368    "infra_step": true,
369    "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION"
370  },
371  {
372    "cmd": [
373      "vpython3",
374      "-u",
375      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
376      "--json-output",
377      "/path/to/tmp/json",
378      "copy",
379      "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
380      "/path/to/tmp/"
381    ],
382    "infra_step": true,
383    "name": "Get skimage VERSION",
384    "~followup_annotations": [
385      "@@@STEP_LOG_LINE@VERSION@42@@@",
386      "@@@STEP_LOG_END@VERSION@@@"
387    ]
388  },
389  {
390    "cmd": [
391      "vpython3",
392      "-u",
393      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
394      "--json-output",
395      "/path/to/tmp/json",
396      "copy",
397      "42",
398      "[START_DIR]/tmp/SK_IMAGE_VERSION"
399    ],
400    "infra_step": true,
401    "name": "write SK_IMAGE_VERSION",
402    "~followup_annotations": [
403      "@@@STEP_LOG_LINE@SK_IMAGE_VERSION@42@@@",
404      "@@@STEP_LOG_END@SK_IMAGE_VERSION@@@"
405    ]
406  },
407  {
408    "cmd": [
409      "/usr/bin/adb.1.0.35",
410      "shell",
411      "test",
412      "-f",
413      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
414    ],
415    "cwd": "[START_DIR]/skia",
416    "env": {
417      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
418      "CHROME_HEADLESS": "1",
419      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
420    },
421    "infra_step": true,
422    "name": "check if /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION exists"
423  },
424  {
425    "cmd": [
426      "/usr/bin/adb.1.0.35",
427      "shell",
428      "cat",
429      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
430    ],
431    "cwd": "[START_DIR]/skia",
432    "env": {
433      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
434      "CHROME_HEADLESS": "1",
435      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
436    },
437    "infra_step": true,
438    "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
439  },
440  {
441    "cmd": [
442      "python3",
443      "RECIPE_MODULE[skia::flavor]/resources/remove_file_on_device.py",
444      "/usr/bin/adb.1.0.35",
445      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
446    ],
447    "env": {
448      "CHROME_HEADLESS": "1",
449      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
450    },
451    "infra_step": true,
452    "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
453  },
454  {
455    "cmd": [
456      "python3",
457      "RECIPE_MODULE[skia::flavor]/resources/remove_file_on_device.py",
458      "/usr/bin/adb.1.0.35",
459      "/sdcard/revenge_of_the_skiabot/images"
460    ],
461    "env": {
462      "CHROME_HEADLESS": "1",
463      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
464    },
465    "infra_step": true,
466    "name": "rm /sdcard/revenge_of_the_skiabot/images"
467  },
468  {
469    "cmd": [
470      "/usr/bin/adb.1.0.35",
471      "shell",
472      "mkdir",
473      "-p",
474      "/sdcard/revenge_of_the_skiabot/images"
475    ],
476    "cwd": "[START_DIR]/skia",
477    "env": {
478      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
479      "CHROME_HEADLESS": "1",
480      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
481    },
482    "infra_step": true,
483    "name": "mkdir /sdcard/revenge_of_the_skiabot/images"
484  },
485  {
486    "cmd": [
487      "vpython3",
488      "-u",
489      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
490      "--json-output",
491      "/path/to/tmp/json",
492      "glob",
493      "[START_DIR]/skimage",
494      "*"
495    ],
496    "infra_step": true,
497    "name": "ls [START_DIR]/skimage/*",
498    "~followup_annotations": [
499      "@@@STEP_LOG_LINE@glob@[START_DIR]/skimage/bar.jpg@@@",
500      "@@@STEP_LOG_LINE@glob@[START_DIR]/skimage/foo.png@@@",
501      "@@@STEP_LOG_END@glob@@@"
502    ]
503  },
504  {
505    "cmd": [
506      "/usr/bin/adb.1.0.35",
507      "push",
508      "[START_DIR]/skimage/bar.jpg",
509      "[START_DIR]/skimage/foo.png",
510      "/sdcard/revenge_of_the_skiabot/images"
511    ],
512    "cwd": "[START_DIR]/skia",
513    "env": {
514      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
515      "CHROME_HEADLESS": "1",
516      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
517    },
518    "infra_step": true,
519    "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
520  },
521  {
522    "cmd": [
523      "/usr/bin/adb.1.0.35",
524      "push",
525      "[START_DIR]/tmp/SK_IMAGE_VERSION",
526      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
527    ],
528    "cwd": "[START_DIR]/skia",
529    "env": {
530      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
531      "CHROME_HEADLESS": "1",
532      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
533    },
534    "infra_step": true,
535    "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
536  },
537  {
538    "cmd": [
539      "vpython3",
540      "-u",
541      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
542      "--json-output",
543      "/path/to/tmp/json",
544      "copy",
545      "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
546      "/path/to/tmp/"
547    ],
548    "infra_step": true,
549    "name": "Get svg VERSION",
550    "~followup_annotations": [
551      "@@@STEP_LOG_LINE@VERSION@42@@@",
552      "@@@STEP_LOG_END@VERSION@@@"
553    ]
554  },
555  {
556    "cmd": [
557      "vpython3",
558      "-u",
559      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
560      "--json-output",
561      "/path/to/tmp/json",
562      "copy",
563      "42",
564      "[START_DIR]/tmp/SVG_VERSION"
565    ],
566    "infra_step": true,
567    "name": "write SVG_VERSION",
568    "~followup_annotations": [
569      "@@@STEP_LOG_LINE@SVG_VERSION@42@@@",
570      "@@@STEP_LOG_END@SVG_VERSION@@@"
571    ]
572  },
573  {
574    "cmd": [
575      "/usr/bin/adb.1.0.35",
576      "shell",
577      "test",
578      "-f",
579      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
580    ],
581    "cwd": "[START_DIR]/skia",
582    "env": {
583      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
584      "CHROME_HEADLESS": "1",
585      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
586    },
587    "infra_step": true,
588    "name": "check if /sdcard/revenge_of_the_skiabot/SVG_VERSION exists"
589  },
590  {
591    "cmd": [
592      "/usr/bin/adb.1.0.35",
593      "shell",
594      "cat",
595      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
596    ],
597    "cwd": "[START_DIR]/skia",
598    "env": {
599      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
600      "CHROME_HEADLESS": "1",
601      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
602    },
603    "infra_step": true,
604    "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION"
605  },
606  {
607    "cmd": [
608      "python3",
609      "RECIPE_MODULE[skia::flavor]/resources/remove_file_on_device.py",
610      "/usr/bin/adb.1.0.35",
611      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
612    ],
613    "env": {
614      "CHROME_HEADLESS": "1",
615      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
616    },
617    "infra_step": true,
618    "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION"
619  },
620  {
621    "cmd": [
622      "python3",
623      "RECIPE_MODULE[skia::flavor]/resources/remove_file_on_device.py",
624      "/usr/bin/adb.1.0.35",
625      "/sdcard/revenge_of_the_skiabot/svgs"
626    ],
627    "env": {
628      "CHROME_HEADLESS": "1",
629      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
630    },
631    "infra_step": true,
632    "name": "rm /sdcard/revenge_of_the_skiabot/svgs"
633  },
634  {
635    "cmd": [
636      "/usr/bin/adb.1.0.35",
637      "shell",
638      "mkdir",
639      "-p",
640      "/sdcard/revenge_of_the_skiabot/svgs"
641    ],
642    "cwd": "[START_DIR]/skia",
643    "env": {
644      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
645      "CHROME_HEADLESS": "1",
646      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
647    },
648    "infra_step": true,
649    "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
650  },
651  {
652    "cmd": [
653      "vpython3",
654      "-u",
655      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
656      "--json-output",
657      "/path/to/tmp/json",
658      "glob",
659      "[START_DIR]/svg",
660      "*"
661    ],
662    "infra_step": true,
663    "name": "ls [START_DIR]/svg/*",
664    "~followup_annotations": [
665      "@@@STEP_LOG_LINE@glob@[START_DIR]/svg/bar.jpg@@@",
666      "@@@STEP_LOG_LINE@glob@[START_DIR]/svg/foo.png@@@",
667      "@@@STEP_LOG_END@glob@@@"
668    ]
669  },
670  {
671    "cmd": [
672      "/usr/bin/adb.1.0.35",
673      "push",
674      "[START_DIR]/svg/bar.jpg",
675      "[START_DIR]/svg/foo.png",
676      "/sdcard/revenge_of_the_skiabot/svgs"
677    ],
678    "cwd": "[START_DIR]/skia",
679    "env": {
680      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
681      "CHROME_HEADLESS": "1",
682      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
683    },
684    "infra_step": true,
685    "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
686  },
687  {
688    "cmd": [
689      "/usr/bin/adb.1.0.35",
690      "push",
691      "[START_DIR]/tmp/SVG_VERSION",
692      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
693    ],
694    "cwd": "[START_DIR]/skia",
695    "env": {
696      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
697      "CHROME_HEADLESS": "1",
698      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
699    },
700    "infra_step": true,
701    "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION"
702  },
703  {
704    "cmd": [
705      "python3",
706      "RECIPE_MODULE[skia::vars]/resources/get_env_var.py",
707      "SWARMING_TASK_ID"
708    ],
709    "name": "get swarming task id"
710  },
711  {
712    "cmd": [
713      "vpython3",
714      "-u",
715      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
716      "--json-output",
717      "/path/to/tmp/json",
718      "copy",
719      "set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --example --flags --properties bot skia-bot-123 key1 value1 task 123456 --resourcePath /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/dm --colorImages /sdcard/revenge_of_the_skiabot/images/colorspace --svgs /sdcard/revenge_of_the_skiabot/svgs/svg; echo $? >/data/local/tmp/rc",
720      "[START_DIR]/tmp/dm.sh"
721    ],
722    "env": {
723      "CHROME_HEADLESS": "1",
724      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
725    },
726    "infra_step": true,
727    "name": "write dm.sh",
728    "~followup_annotations": [
729      "@@@[email protected]@set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --example --flags --properties bot skia-bot-123 key1 value1 task 123456 --resourcePath /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/dm --colorImages /sdcard/revenge_of_the_skiabot/images/colorspace --svgs /sdcard/revenge_of_the_skiabot/svgs/svg; echo $? >/data/local/tmp/rc@@@",
730      "@@@[email protected]@@@"
731    ]
732  },
733  {
734    "cmd": [
735      "/usr/bin/adb.1.0.35",
736      "push",
737      "[START_DIR]/tmp/dm.sh",
738      "/data/local/tmp/"
739    ],
740    "cwd": "[START_DIR]/skia",
741    "env": {
742      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
743      "CHROME_HEADLESS": "1",
744      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
745    },
746    "infra_step": true,
747    "name": "push dm.sh"
748  },
749  {
750    "cmd": [
751      "/usr/bin/adb.1.0.35",
752      "logcat",
753      "-c"
754    ],
755    "cwd": "[START_DIR]/skia",
756    "env": {
757      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
758      "CHROME_HEADLESS": "1",
759      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
760    },
761    "infra_step": true,
762    "name": "clear log"
763  },
764  {
765    "cmd": [
766      "python3",
767      "RECIPE_MODULE[skia::flavor]/resources/run_sh.py",
768      "/data/local/tmp/",
769      "dm.sh",
770      "/usr/bin/adb.1.0.35"
771    ],
772    "env": {
773      "CHROME_HEADLESS": "1",
774      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
775    },
776    "name": "dm"
777  },
778  {
779    "cmd": [
780      "/usr/bin/adb.1.0.35",
781      "reboot"
782    ],
783    "env": {
784      "CHROME_HEADLESS": "1",
785      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
786    },
787    "infra_step": true,
788    "name": "adb reboot device",
789    "timeout": 30
790  },
791  {
792    "cmd": [
793      "/usr/bin/adb.1.0.35",
794      "wait-for-device",
795      "shell",
796      "while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done"
797    ],
798    "env": {
799      "CHROME_HEADLESS": "1",
800      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
801    },
802    "name": "wait for device after rebooting",
803    "timeout": 180
804  },
805  {
806    "cmd": [
807      "/usr/bin/adb.1.0.35",
808      "wait-for-device",
809      "shell",
810      "while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done"
811    ],
812    "env": {
813      "CHROME_HEADLESS": "1",
814      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
815    },
816    "infra_step": true,
817    "name": "wait for device before uninstalling ASAN",
818    "timeout": 180
819  },
820  {
821    "cmd": [
822      "[START_DIR]/android_ndk_linux/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/17/bin/asan_device_setup",
823      "--revert"
824    ],
825    "env": {
826      "CHROME_HEADLESS": "1",
827      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
828    },
829    "infra_step": true,
830    "name": "uninstall ASAN",
831    "timeout": 300
832  },
833  {
834    "cmd": [
835      "python3",
836      "RECIPE_MODULE[skia::flavor]/resources/dump_adb_log.py",
837      "[START_DIR]/build",
838      "/usr/bin/adb.1.0.35"
839    ],
840    "env": {
841      "CHROME_HEADLESS": "1",
842      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
843    },
844    "infra_step": true,
845    "name": "dump log",
846    "timeout": 300
847  },
848  {
849    "name": "$result"
850  }
851]