• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1[
2  {
3    "cmd": [
4      "vpython",
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      "0777",
12      "[START_DIR]/tmp"
13    ],
14    "infra_step": true,
15    "name": "makedirs tmp_dir"
16  },
17  {
18    "cmd": [
19      "python",
20      "-u",
21      "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
22    ],
23    "name": "get swarming bot id",
24    "~followup_annotations": [
25      "@@@STEP_LOG_LINE@python.inline@import os@@@",
26      "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
27      "@@@STEP_LOG_END@python.inline@@@"
28    ]
29  },
30  {
31    "cmd": [
32      "/opt/infra-android/tools/adb",
33      "shell",
34      "mkdir",
35      "-p",
36      "/sdcard/revenge_of_the_skiabot/resources"
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": "mkdir /sdcard/revenge_of_the_skiabot/resources"
46  },
47  {
48    "cmd": [],
49    "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
50  },
51  {
52    "cmd": [
53      "vpython",
54      "-u",
55      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
56      "--json-output",
57      "/path/to/tmp/json",
58      "listdir",
59      "[START_DIR]/skia/resources",
60      "--recursive"
61    ],
62    "infra_step": true,
63    "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
64    "~followup_annotations": [
65      "@@@STEP_NEST_LEVEL@1@@@",
66      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
67      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
68      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
69      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
70      "@@@STEP_LOG_END@listdir@@@"
71    ]
72  },
73  {
74    "cmd": [
75      "/opt/infra-android/tools/adb",
76      "push",
77      "[START_DIR]/skia/resources/.file3",
78      "/sdcard/revenge_of_the_skiabot/resources/.file3"
79    ],
80    "cwd": "[START_DIR]/skia",
81    "env": {
82      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
83      "CHROME_HEADLESS": "1",
84      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
85    },
86    "infra_step": true,
87    "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
88    "~followup_annotations": [
89      "@@@STEP_NEST_LEVEL@1@@@"
90    ]
91  },
92  {
93    "cmd": [
94      "/opt/infra-android/tools/adb",
95      "push",
96      "[START_DIR]/skia/resources/file1",
97      "/sdcard/revenge_of_the_skiabot/resources/file1"
98    ],
99    "cwd": "[START_DIR]/skia",
100    "env": {
101      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
102      "CHROME_HEADLESS": "1",
103      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
104    },
105    "infra_step": true,
106    "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
107    "~followup_annotations": [
108      "@@@STEP_NEST_LEVEL@1@@@"
109    ]
110  },
111  {
112    "cmd": [
113      "/opt/infra-android/tools/adb",
114      "push",
115      "[START_DIR]/skia/resources/subdir/file2",
116      "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
117    ],
118    "cwd": "[START_DIR]/skia",
119    "env": {
120      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
121      "CHROME_HEADLESS": "1",
122      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
123    },
124    "infra_step": true,
125    "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
126    "~followup_annotations": [
127      "@@@STEP_NEST_LEVEL@1@@@"
128    ]
129  },
130  {
131    "cmd": [
132      "vpython",
133      "-u",
134      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
135      "--json-output",
136      "/path/to/tmp/json",
137      "copy",
138      "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
139      "/path/to/tmp/"
140    ],
141    "infra_step": true,
142    "name": "Get skp VERSION",
143    "~followup_annotations": [
144      "@@@STEP_LOG_LINE@VERSION@42@@@",
145      "@@@STEP_LOG_END@VERSION@@@"
146    ]
147  },
148  {
149    "cmd": [
150      "vpython",
151      "-u",
152      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
153      "--json-output",
154      "/path/to/tmp/json",
155      "copy",
156      "42",
157      "[START_DIR]/tmp/SKP_VERSION"
158    ],
159    "infra_step": true,
160    "name": "write SKP_VERSION",
161    "~followup_annotations": [
162      "@@@STEP_LOG_LINE@SKP_VERSION@42@@@",
163      "@@@STEP_LOG_END@SKP_VERSION@@@"
164    ]
165  },
166  {
167    "cmd": [
168      "/opt/infra-android/tools/adb",
169      "shell",
170      "cat",
171      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
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": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION"
181  },
182  {
183    "cmd": [
184      "/opt/infra-android/tools/adb",
185      "shell",
186      "rm",
187      "-f",
188      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
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": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION"
198  },
199  {
200    "cmd": [
201      "/opt/infra-android/tools/adb",
202      "shell",
203      "rm",
204      "-rf",
205      "/sdcard/revenge_of_the_skiabot/skps"
206    ],
207    "cwd": "[START_DIR]/skia",
208    "env": {
209      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
210      "CHROME_HEADLESS": "1",
211      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
212    },
213    "infra_step": true,
214    "name": "rm /sdcard/revenge_of_the_skiabot/skps"
215  },
216  {
217    "cmd": [
218      "/opt/infra-android/tools/adb",
219      "shell",
220      "mkdir",
221      "-p",
222      "/sdcard/revenge_of_the_skiabot/skps"
223    ],
224    "cwd": "[START_DIR]/skia",
225    "env": {
226      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
227      "CHROME_HEADLESS": "1",
228      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
229    },
230    "infra_step": true,
231    "name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
232  },
233  {
234    "cmd": [],
235    "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
236  },
237  {
238    "cmd": [
239      "vpython",
240      "-u",
241      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
242      "--json-output",
243      "/path/to/tmp/json",
244      "listdir",
245      "[START_DIR]/skp",
246      "--recursive"
247    ],
248    "infra_step": true,
249    "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
250    "~followup_annotations": [
251      "@@@STEP_NEST_LEVEL@1@@@",
252      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
253      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
254      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
255      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
256      "@@@STEP_LOG_END@listdir@@@"
257    ]
258  },
259  {
260    "cmd": [
261      "/opt/infra-android/tools/adb",
262      "push",
263      "[START_DIR]/skp/.file3",
264      "/sdcard/revenge_of_the_skiabot/skps/.file3"
265    ],
266    "cwd": "[START_DIR]/skia",
267    "env": {
268      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
269      "CHROME_HEADLESS": "1",
270      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
271    },
272    "infra_step": true,
273    "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
274    "~followup_annotations": [
275      "@@@STEP_NEST_LEVEL@1@@@"
276    ]
277  },
278  {
279    "cmd": [
280      "/opt/infra-android/tools/adb",
281      "push",
282      "[START_DIR]/skp/file1",
283      "/sdcard/revenge_of_the_skiabot/skps/file1"
284    ],
285    "cwd": "[START_DIR]/skia",
286    "env": {
287      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
288      "CHROME_HEADLESS": "1",
289      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
290    },
291    "infra_step": true,
292    "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
293    "~followup_annotations": [
294      "@@@STEP_NEST_LEVEL@1@@@"
295    ]
296  },
297  {
298    "cmd": [
299      "/opt/infra-android/tools/adb",
300      "push",
301      "[START_DIR]/skp/subdir/file2",
302      "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
303    ],
304    "cwd": "[START_DIR]/skia",
305    "env": {
306      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
307      "CHROME_HEADLESS": "1",
308      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
309    },
310    "infra_step": true,
311    "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
312    "~followup_annotations": [
313      "@@@STEP_NEST_LEVEL@1@@@"
314    ]
315  },
316  {
317    "cmd": [
318      "/opt/infra-android/tools/adb",
319      "push",
320      "[START_DIR]/tmp/SKP_VERSION",
321      "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
322    ],
323    "cwd": "[START_DIR]/skia",
324    "env": {
325      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
326      "CHROME_HEADLESS": "1",
327      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
328    },
329    "infra_step": true,
330    "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION"
331  },
332  {
333    "cmd": [
334      "vpython",
335      "-u",
336      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
337      "--json-output",
338      "/path/to/tmp/json",
339      "copy",
340      "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
341      "/path/to/tmp/"
342    ],
343    "infra_step": true,
344    "name": "Get skimage VERSION",
345    "~followup_annotations": [
346      "@@@STEP_LOG_LINE@VERSION@42@@@",
347      "@@@STEP_LOG_END@VERSION@@@"
348    ]
349  },
350  {
351    "cmd": [
352      "vpython",
353      "-u",
354      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
355      "--json-output",
356      "/path/to/tmp/json",
357      "copy",
358      "42",
359      "[START_DIR]/tmp/SK_IMAGE_VERSION"
360    ],
361    "infra_step": true,
362    "name": "write SK_IMAGE_VERSION",
363    "~followup_annotations": [
364      "@@@STEP_LOG_LINE@SK_IMAGE_VERSION@42@@@",
365      "@@@STEP_LOG_END@SK_IMAGE_VERSION@@@"
366    ]
367  },
368  {
369    "cmd": [
370      "/opt/infra-android/tools/adb",
371      "shell",
372      "cat",
373      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
374    ],
375    "cwd": "[START_DIR]/skia",
376    "env": {
377      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
378      "CHROME_HEADLESS": "1",
379      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
380    },
381    "infra_step": true,
382    "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
383  },
384  {
385    "cmd": [
386      "/opt/infra-android/tools/adb",
387      "shell",
388      "rm",
389      "-f",
390      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
391    ],
392    "cwd": "[START_DIR]/skia",
393    "env": {
394      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
395      "CHROME_HEADLESS": "1",
396      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
397    },
398    "infra_step": true,
399    "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
400  },
401  {
402    "cmd": [
403      "/opt/infra-android/tools/adb",
404      "shell",
405      "rm",
406      "-rf",
407      "/sdcard/revenge_of_the_skiabot/images"
408    ],
409    "cwd": "[START_DIR]/skia",
410    "env": {
411      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
412      "CHROME_HEADLESS": "1",
413      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
414    },
415    "infra_step": true,
416    "name": "rm /sdcard/revenge_of_the_skiabot/images"
417  },
418  {
419    "cmd": [
420      "/opt/infra-android/tools/adb",
421      "shell",
422      "mkdir",
423      "-p",
424      "/sdcard/revenge_of_the_skiabot/images"
425    ],
426    "cwd": "[START_DIR]/skia",
427    "env": {
428      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
429      "CHROME_HEADLESS": "1",
430      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
431    },
432    "infra_step": true,
433    "name": "mkdir /sdcard/revenge_of_the_skiabot/images"
434  },
435  {
436    "cmd": [],
437    "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
438  },
439  {
440    "cmd": [
441      "vpython",
442      "-u",
443      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
444      "--json-output",
445      "/path/to/tmp/json",
446      "listdir",
447      "[START_DIR]/skimage",
448      "--recursive"
449    ],
450    "infra_step": true,
451    "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
452    "~followup_annotations": [
453      "@@@STEP_NEST_LEVEL@1@@@",
454      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
455      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
456      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
457      "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
458      "@@@STEP_LOG_END@listdir@@@"
459    ]
460  },
461  {
462    "cmd": [
463      "/opt/infra-android/tools/adb",
464      "push",
465      "[START_DIR]/skimage/.file3",
466      "/sdcard/revenge_of_the_skiabot/images/.file3"
467    ],
468    "cwd": "[START_DIR]/skia",
469    "env": {
470      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
471      "CHROME_HEADLESS": "1",
472      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
473    },
474    "infra_step": true,
475    "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
476    "~followup_annotations": [
477      "@@@STEP_NEST_LEVEL@1@@@"
478    ]
479  },
480  {
481    "cmd": [
482      "/opt/infra-android/tools/adb",
483      "push",
484      "[START_DIR]/skimage/file1",
485      "/sdcard/revenge_of_the_skiabot/images/file1"
486    ],
487    "cwd": "[START_DIR]/skia",
488    "env": {
489      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
490      "CHROME_HEADLESS": "1",
491      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
492    },
493    "infra_step": true,
494    "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
495    "~followup_annotations": [
496      "@@@STEP_NEST_LEVEL@1@@@"
497    ]
498  },
499  {
500    "cmd": [
501      "/opt/infra-android/tools/adb",
502      "push",
503      "[START_DIR]/skimage/subdir/file2",
504      "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
505    ],
506    "cwd": "[START_DIR]/skia",
507    "env": {
508      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
509      "CHROME_HEADLESS": "1",
510      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
511    },
512    "infra_step": true,
513    "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
514    "~followup_annotations": [
515      "@@@STEP_NEST_LEVEL@1@@@"
516    ]
517  },
518  {
519    "cmd": [
520      "/opt/infra-android/tools/adb",
521      "push",
522      "[START_DIR]/tmp/SK_IMAGE_VERSION",
523      "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
524    ],
525    "cwd": "[START_DIR]/skia",
526    "env": {
527      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
528      "CHROME_HEADLESS": "1",
529      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
530    },
531    "infra_step": true,
532    "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
533  },
534  {
535    "cmd": [
536      "vpython",
537      "-u",
538      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
539      "--json-output",
540      "/path/to/tmp/json",
541      "copy",
542      "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
543      "/path/to/tmp/"
544    ],
545    "infra_step": true,
546    "name": "Get svg VERSION",
547    "~followup_annotations": [
548      "@@@STEP_LOG_LINE@VERSION@42@@@",
549      "@@@STEP_LOG_END@VERSION@@@"
550    ]
551  },
552  {
553    "cmd": [
554      "vpython",
555      "-u",
556      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
557      "--json-output",
558      "/path/to/tmp/json",
559      "copy",
560      "42",
561      "[START_DIR]/tmp/SVG_VERSION"
562    ],
563    "infra_step": true,
564    "name": "write SVG_VERSION",
565    "~followup_annotations": [
566      "@@@STEP_LOG_LINE@SVG_VERSION@42@@@",
567      "@@@STEP_LOG_END@SVG_VERSION@@@"
568    ]
569  },
570  {
571    "cmd": [
572      "/opt/infra-android/tools/adb",
573      "shell",
574      "cat",
575      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
576    ],
577    "cwd": "[START_DIR]/skia",
578    "env": {
579      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
580      "CHROME_HEADLESS": "1",
581      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
582    },
583    "infra_step": true,
584    "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION"
585  },
586  {
587    "cmd": [
588      "/opt/infra-android/tools/adb",
589      "shell",
590      "rm",
591      "-f",
592      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
593    ],
594    "cwd": "[START_DIR]/skia",
595    "env": {
596      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
597      "CHROME_HEADLESS": "1",
598      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
599    },
600    "infra_step": true,
601    "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION"
602  },
603  {
604    "cmd": [
605      "/opt/infra-android/tools/adb",
606      "shell",
607      "rm",
608      "-rf",
609      "/sdcard/revenge_of_the_skiabot/svgs"
610    ],
611    "cwd": "[START_DIR]/skia",
612    "env": {
613      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
614      "CHROME_HEADLESS": "1",
615      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
616    },
617    "infra_step": true,
618    "name": "rm /sdcard/revenge_of_the_skiabot/svgs"
619  },
620  {
621    "cmd": [
622      "/opt/infra-android/tools/adb",
623      "shell",
624      "mkdir",
625      "-p",
626      "/sdcard/revenge_of_the_skiabot/svgs"
627    ],
628    "cwd": "[START_DIR]/skia",
629    "env": {
630      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
631      "CHROME_HEADLESS": "1",
632      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
633    },
634    "infra_step": true,
635    "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
636  },
637  {
638    "cmd": [],
639    "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
640  },
641  {
642    "cmd": [
643      "vpython",
644      "-u",
645      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
646      "--json-output",
647      "/path/to/tmp/json",
648      "listdir",
649      "[START_DIR]/svg",
650      "--recursive"
651    ],
652    "infra_step": true,
653    "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
654    "~followup_annotations": [
655      "@@@STEP_NEST_LEVEL@1@@@",
656      "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
657      "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
658      "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
659      "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
660      "@@@STEP_LOG_END@listdir@@@"
661    ]
662  },
663  {
664    "cmd": [
665      "/opt/infra-android/tools/adb",
666      "push",
667      "[START_DIR]/svg/.file3",
668      "/sdcard/revenge_of_the_skiabot/svgs/.file3"
669    ],
670    "cwd": "[START_DIR]/skia",
671    "env": {
672      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
673      "CHROME_HEADLESS": "1",
674      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
675    },
676    "infra_step": true,
677    "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
678    "~followup_annotations": [
679      "@@@STEP_NEST_LEVEL@1@@@"
680    ]
681  },
682  {
683    "cmd": [
684      "/opt/infra-android/tools/adb",
685      "push",
686      "[START_DIR]/svg/file1",
687      "/sdcard/revenge_of_the_skiabot/svgs/file1"
688    ],
689    "cwd": "[START_DIR]/skia",
690    "env": {
691      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
692      "CHROME_HEADLESS": "1",
693      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
694    },
695    "infra_step": true,
696    "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
697    "~followup_annotations": [
698      "@@@STEP_NEST_LEVEL@1@@@"
699    ]
700  },
701  {
702    "cmd": [
703      "/opt/infra-android/tools/adb",
704      "push",
705      "[START_DIR]/svg/subdir/file2",
706      "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
707    ],
708    "cwd": "[START_DIR]/skia",
709    "env": {
710      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
711      "CHROME_HEADLESS": "1",
712      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
713    },
714    "infra_step": true,
715    "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
716    "~followup_annotations": [
717      "@@@STEP_NEST_LEVEL@1@@@"
718    ]
719  },
720  {
721    "cmd": [
722      "/opt/infra-android/tools/adb",
723      "push",
724      "[START_DIR]/tmp/SVG_VERSION",
725      "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
726    ],
727    "cwd": "[START_DIR]/skia",
728    "env": {
729      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
730      "CHROME_HEADLESS": "1",
731      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
732    },
733    "infra_step": true,
734    "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION"
735  },
736  {
737    "cmd": [
738      "vpython",
739      "-u",
740      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
741      "--json-output",
742      "/path/to/tmp/json",
743      "rmtree",
744      "[START_DIR]/test"
745    ],
746    "infra_step": true,
747    "name": "rmtree test"
748  },
749  {
750    "cmd": [
751      "vpython",
752      "-u",
753      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
754      "--json-output",
755      "/path/to/tmp/json",
756      "ensure-directory",
757      "--mode",
758      "0777",
759      "[START_DIR]/test"
760    ],
761    "infra_step": true,
762    "name": "makedirs test"
763  },
764  {
765    "cmd": [
766      "/opt/infra-android/tools/adb",
767      "shell",
768      "rm",
769      "-rf",
770      "/sdcard/revenge_of_the_skiabot/dm_out"
771    ],
772    "cwd": "[START_DIR]/skia",
773    "env": {
774      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
775      "CHROME_HEADLESS": "1",
776      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
777    },
778    "infra_step": true,
779    "name": "rm /sdcard/revenge_of_the_skiabot/dm_out"
780  },
781  {
782    "cmd": [
783      "/opt/infra-android/tools/adb",
784      "shell",
785      "mkdir",
786      "-p",
787      "/sdcard/revenge_of_the_skiabot/dm_out"
788    ],
789    "cwd": "[START_DIR]/skia",
790    "env": {
791      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
792      "CHROME_HEADLESS": "1",
793      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
794    },
795    "infra_step": true,
796    "name": "mkdir /sdcard/revenge_of_the_skiabot/dm_out"
797  },
798  {
799    "cmd": [
800      "python",
801      "-u",
802      "\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = sys.argv[1]\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n  try:\n    with contextlib.closing(\n        urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n      hashes = w.read()\n      with open(sys.argv[2], 'w') as f:\n        f.write(hashes)\n        break\n  except Exception as e:\n    print 'Failed to get uninteresting hashes from %s:' % HASHES_URL\n    print e\n    if retry == RETRIES:\n      raise\n    waittime = WAIT_BASE * math.pow(2, retry)\n    print 'Retry in %d seconds.' % waittime\n    time.sleep(waittime)\n",
803      "https://example.com/hashes.txt",
804      "[START_DIR]/tmp/uninteresting_hashes.txt"
805    ],
806    "env": {
807      "CHROME_HEADLESS": "1",
808      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
809    },
810    "infra_step": true,
811    "name": "get uninteresting hashes",
812    "~followup_annotations": [
813      "@@@STEP_LOG_LINE@python.inline@@@@",
814      "@@@STEP_LOG_LINE@python.inline@import contextlib@@@",
815      "@@@STEP_LOG_LINE@python.inline@import math@@@",
816      "@@@STEP_LOG_LINE@python.inline@import socket@@@",
817      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
818      "@@@STEP_LOG_LINE@python.inline@import time@@@",
819      "@@@STEP_LOG_LINE@python.inline@import urllib2@@@",
820      "@@@STEP_LOG_LINE@python.inline@@@@",
821      "@@@STEP_LOG_LINE@python.inline@HASHES_URL = sys.argv[1]@@@",
822      "@@@STEP_LOG_LINE@python.inline@RETRIES = 5@@@",
823      "@@@STEP_LOG_LINE@python.inline@TIMEOUT = 60@@@",
824      "@@@STEP_LOG_LINE@python.inline@WAIT_BASE = 15@@@",
825      "@@@STEP_LOG_LINE@python.inline@@@@",
826      "@@@STEP_LOG_LINE@python.inline@socket.setdefaulttimeout(TIMEOUT)@@@",
827      "@@@STEP_LOG_LINE@python.inline@for retry in range(RETRIES):@@@",
828      "@@@STEP_LOG_LINE@python.inline@  try:@@@",
829      "@@@STEP_LOG_LINE@python.inline@    with contextlib.closing(@@@",
830      "@@@STEP_LOG_LINE@python.inline@        urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@",
831      "@@@STEP_LOG_LINE@python.inline@      hashes = w.read()@@@",
832      "@@@STEP_LOG_LINE@python.inline@      with open(sys.argv[2], 'w') as f:@@@",
833      "@@@STEP_LOG_LINE@python.inline@        f.write(hashes)@@@",
834      "@@@STEP_LOG_LINE@python.inline@        break@@@",
835      "@@@STEP_LOG_LINE@python.inline@  except Exception as e:@@@",
836      "@@@STEP_LOG_LINE@python.inline@    print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@",
837      "@@@STEP_LOG_LINE@python.inline@    print e@@@",
838      "@@@STEP_LOG_LINE@python.inline@    if retry == RETRIES:@@@",
839      "@@@STEP_LOG_LINE@python.inline@      raise@@@",
840      "@@@STEP_LOG_LINE@python.inline@    waittime = WAIT_BASE * math.pow(2, retry)@@@",
841      "@@@STEP_LOG_LINE@python.inline@    print 'Retry in %d seconds.' % waittime@@@",
842      "@@@STEP_LOG_LINE@python.inline@    time.sleep(waittime)@@@",
843      "@@@STEP_LOG_END@python.inline@@@"
844    ]
845  },
846  {
847    "cmd": [
848      "/opt/infra-android/tools/adb",
849      "push",
850      "[START_DIR]/tmp/uninteresting_hashes.txt",
851      "/sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt"
852    ],
853    "cwd": "[START_DIR]/skia",
854    "env": {
855      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
856      "CHROME_HEADLESS": "1",
857      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
858    },
859    "infra_step": true,
860    "name": "push [START_DIR]/tmp/uninteresting_hashes.txt /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt"
861  },
862  {
863    "cmd": [
864      "python",
865      "-u",
866      "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
867    ],
868    "name": "get swarming bot id (2)",
869    "~followup_annotations": [
870      "@@@STEP_LOG_LINE@python.inline@import os@@@",
871      "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
872      "@@@STEP_LOG_END@python.inline@@@"
873    ]
874  },
875  {
876    "cmd": [
877      "python",
878      "-u",
879      "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
880    ],
881    "name": "get swarming task id",
882    "~followup_annotations": [
883      "@@@STEP_LOG_LINE@python.inline@import os@@@",
884      "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
885      "@@@STEP_LOG_END@python.inline@@@"
886    ]
887  },
888  {
889    "cmd": [
890      "python",
891      "-u",
892      "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\ncpu = int(sys.argv[2])\ngov = sys.argv[3]\n\nlog = subprocess.check_output([ADB, 'root'])\n# check for message like 'adbd cannot run as root in production builds'\nprint log\nif 'cannot' in log:\n  raise Exception('adb root failed')\n\nsubprocess.check_output([ADB, 'shell', 'echo \"%s\" > '\n    '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])\nactual_gov = subprocess.check_output([ADB, 'shell', 'cat '\n    '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()\nif actual_gov != gov:\n  raise Exception('(actual, expected) (%s, %s)'\n                  % (actual_gov, gov))\n",
893      "/opt/infra-android/tools/adb",
894      "0",
895      "ondemand"
896    ],
897    "env": {
898      "CHROME_HEADLESS": "1",
899      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
900    },
901    "infra_step": true,
902    "name": "Set CPU 0's governor to ondemand",
903    "timeout": 30,
904    "~followup_annotations": [
905      "@@@STEP_LOG_LINE@python.inline@@@@",
906      "@@@STEP_LOG_LINE@python.inline@import os@@@",
907      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
908      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
909      "@@@STEP_LOG_LINE@python.inline@import time@@@",
910      "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@",
911      "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@",
912      "@@@STEP_LOG_LINE@python.inline@gov = sys.argv[3]@@@",
913      "@@@STEP_LOG_LINE@python.inline@@@@",
914      "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@",
915      "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@",
916      "@@@STEP_LOG_LINE@python.inline@print log@@@",
917      "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@",
918      "@@@STEP_LOG_LINE@python.inline@  raise Exception('adb root failed')@@@",
919      "@@@STEP_LOG_LINE@python.inline@@@@",
920      "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo \"%s\" > '@@@",
921      "@@@STEP_LOG_LINE@python.inline@    '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])@@@",
922      "@@@STEP_LOG_LINE@python.inline@actual_gov = subprocess.check_output([ADB, 'shell', 'cat '@@@",
923      "@@@STEP_LOG_LINE@python.inline@    '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()@@@",
924      "@@@STEP_LOG_LINE@python.inline@if actual_gov != gov:@@@",
925      "@@@STEP_LOG_LINE@python.inline@  raise Exception('(actual, expected) (%s, %s)'@@@",
926      "@@@STEP_LOG_LINE@python.inline@                  % (actual_gov, gov))@@@",
927      "@@@STEP_LOG_END@python.inline@@@"
928    ]
929  },
930  {
931    "cmd": [
932      "/opt/infra-android/tools/adb",
933      "push",
934      "[START_DIR]/build/dm",
935      "/data/local/tmp/"
936    ],
937    "cwd": "[START_DIR]/skia",
938    "env": {
939      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
940      "CHROME_HEADLESS": "1",
941      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
942    },
943    "infra_step": true,
944    "name": "push dm"
945  },
946  {
947    "cmd": [
948      "vpython",
949      "-u",
950      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
951      "--json-output",
952      "/path/to/tmp/json",
953      "copy",
954      "set -x; /data/local/tmp/dm --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 --nameByHash --properties gitHash abc123 builder Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android buildbucket_build_id 123454321 task_id task_12345 swarming_bot_id \"\" swarming_task_id \"\" --svgs /sdcard/revenge_of_the_skiabot/svgs --key arch arm compiler Clang configuration Debug cpu_or_gpu GPU cpu_or_gpu_value Tegra3 extra_config Android model Nexus7 os Android style default --uninterestingHashesFile /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt --writePath /sdcard/revenge_of_the_skiabot/dm_out --threads 0 --nocpu --config gles glesdft glessrgb --src tests gm image colorImage svg --blacklist _ test _ ProcessorCloneTest _ test _ Programs _ test _ ProcessorOptimizationValidationTest _ gm _ savelayer_clipmask _ svg _ svgparse_ glessrgb image _ _ _ image gen_platf error _ test _ GrShape _ image _ interlaced1.png _ image _ interlaced2.png _ image _ interlaced3.png _ image _ .arw _ image _ .cr2 _ image _ .dng _ image _ .nef _ image _ .nrw _ image _ .orf _ image _ .raf _ image _ .rw2 _ image _ .pef _ image _ .srw _ image _ .ARW _ image _ .CR2 _ image _ .DNG _ image _ .NEF _ image _ .NRW _ image _ .ORF _ image _ .RAF _ image _ .RW2 _ image _ .PEF _ image _ .SRW --nonativeFonts --verbose; echo $? >/data/local/tmp/rc",
955      "[START_DIR]/tmp/dm.sh"
956    ],
957    "env": {
958      "CHROME_HEADLESS": "1",
959      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
960    },
961    "infra_step": true,
962    "name": "write dm.sh",
963    "~followup_annotations": [
964      "@@@STEP_LOG_LINE@dm.sh@set -x; /data/local/tmp/dm --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 --nameByHash --properties gitHash abc123 builder Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android buildbucket_build_id 123454321 task_id task_12345 swarming_bot_id \"\" swarming_task_id \"\" --svgs /sdcard/revenge_of_the_skiabot/svgs --key arch arm compiler Clang configuration Debug cpu_or_gpu GPU cpu_or_gpu_value Tegra3 extra_config Android model Nexus7 os Android style default --uninterestingHashesFile /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt --writePath /sdcard/revenge_of_the_skiabot/dm_out --threads 0 --nocpu --config gles glesdft glessrgb --src tests gm image colorImage svg --blacklist _ test _ ProcessorCloneTest _ test _ Programs _ test _ ProcessorOptimizationValidationTest _ gm _ savelayer_clipmask _ svg _ svgparse_ glessrgb image _ _ _ image gen_platf error _ test _ GrShape _ image _ interlaced1.png _ image _ interlaced2.png _ image _ interlaced3.png _ image _ .arw _ image _ .cr2 _ image _ .dng _ image _ .nef _ image _ .nrw _ image _ .orf _ image _ .raf _ image _ .rw2 _ image _ .pef _ image _ .srw _ image _ .ARW _ image _ .CR2 _ image _ .DNG _ image _ .NEF _ image _ .NRW _ image _ .ORF _ image _ .RAF _ image _ .RW2 _ image _ .PEF _ image _ .SRW --nonativeFonts --verbose; echo $? >/data/local/tmp/rc@@@",
965      "@@@STEP_LOG_END@dm.sh@@@"
966    ]
967  },
968  {
969    "cmd": [
970      "/opt/infra-android/tools/adb",
971      "push",
972      "[START_DIR]/tmp/dm.sh",
973      "/data/local/tmp/"
974    ],
975    "cwd": "[START_DIR]/skia",
976    "env": {
977      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
978      "CHROME_HEADLESS": "1",
979      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
980    },
981    "infra_step": true,
982    "name": "push dm.sh"
983  },
984  {
985    "cmd": [
986      "/opt/infra-android/tools/adb",
987      "logcat",
988      "-c"
989    ],
990    "cwd": "[START_DIR]/skia",
991    "env": {
992      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
993      "CHROME_HEADLESS": "1",
994      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
995    },
996    "infra_step": true,
997    "name": "clear log"
998  },
999  {
1000    "cmd": [
1001      "python",
1002      "-u",
1003      "\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(['/opt/infra-android/tools/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",
1004      "/data/local/tmp/",
1005      "dm.sh"
1006    ],
1007    "env": {
1008      "CHROME_HEADLESS": "1",
1009      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1010    },
1011    "name": "dm",
1012    "~followup_annotations": [
1013      "@@@STEP_LOG_LINE@python.inline@@@@",
1014      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
1015      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
1016      "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@",
1017      "@@@STEP_LOG_LINE@python.inline@sh      = sys.argv[2]@@@",
1018      "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@",
1019      "@@@STEP_LOG_LINE@python.inline@try:@@@",
1020      "@@@STEP_LOG_LINE@python.inline@  sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',@@@",
1021      "@@@STEP_LOG_LINE@python.inline@                                        bin_dir + 'rc'])))@@@",
1022      "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@",
1023      "@@@STEP_LOG_LINE@python.inline@  print \"Couldn't read the return code.  Probably killed for OOM.\"@@@",
1024      "@@@STEP_LOG_LINE@python.inline@  sys.exit(1)@@@",
1025      "@@@STEP_LOG_END@python.inline@@@",
1026      "@@@STEP_FAILURE@@@"
1027    ]
1028  },
1029  {
1030    "cmd": [],
1031    "name": "adb pull",
1032    "~followup_annotations": [
1033      "@@@STEP_EXCEPTION@@@"
1034    ]
1035  },
1036  {
1037    "cmd": [
1038      "/opt/infra-android/tools/adb",
1039      "pull",
1040      "/sdcard/revenge_of_the_skiabot/dm_out",
1041      "[CLEANUP]/adb_pull_tmp_1"
1042    ],
1043    "cwd": "[START_DIR]/skia",
1044    "env": {
1045      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1046      "CHROME_HEADLESS": "1",
1047      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1048    },
1049    "infra_step": true,
1050    "name": "adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out",
1051    "~followup_annotations": [
1052      "@@@STEP_NEST_LEVEL@1@@@",
1053      "@@@STEP_EXCEPTION@@@"
1054    ]
1055  },
1056  {
1057    "cmd": [
1058      "/opt/infra-android/tools/adb",
1059      "kill-server"
1060    ],
1061    "cwd": "[START_DIR]/skia",
1062    "env": {
1063      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1064      "CHROME_HEADLESS": "1",
1065      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1066    },
1067    "infra_step": true,
1068    "name": "adb pull.kill adb server after failure of 'pull /sdcard/revenge_of_the_skiabot/dm_out' (attempt 1)",
1069    "timeout": 30,
1070    "~followup_annotations": [
1071      "@@@STEP_NEST_LEVEL@1@@@"
1072    ]
1073  },
1074  {
1075    "cmd": [
1076      "/opt/infra-android/tools/adb",
1077      "wait-for-device"
1078    ],
1079    "cwd": "[START_DIR]/skia",
1080    "env": {
1081      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1082      "CHROME_HEADLESS": "1",
1083      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1084    },
1085    "infra_step": true,
1086    "name": "adb pull.wait for device after failure of 'pull /sdcard/revenge_of_the_skiabot/dm_out' (attempt 1)",
1087    "timeout": 180,
1088    "~followup_annotations": [
1089      "@@@STEP_NEST_LEVEL@1@@@"
1090    ]
1091  },
1092  {
1093    "cmd": [
1094      "/opt/infra-android/tools/adb",
1095      "pull",
1096      "/sdcard/revenge_of_the_skiabot/dm_out",
1097      "[CLEANUP]/adb_pull_tmp_1"
1098    ],
1099    "cwd": "[START_DIR]/skia",
1100    "env": {
1101      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1102      "CHROME_HEADLESS": "1",
1103      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1104    },
1105    "infra_step": true,
1106    "name": "adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out (attempt 2)",
1107    "~followup_annotations": [
1108      "@@@STEP_NEST_LEVEL@1@@@",
1109      "@@@STEP_EXCEPTION@@@"
1110    ]
1111  },
1112  {
1113    "cmd": [
1114      "/opt/infra-android/tools/adb",
1115      "kill-server"
1116    ],
1117    "cwd": "[START_DIR]/skia",
1118    "env": {
1119      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1120      "CHROME_HEADLESS": "1",
1121      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1122    },
1123    "infra_step": true,
1124    "name": "adb pull.kill adb server after failure of 'pull /sdcard/revenge_of_the_skiabot/dm_out' (attempt 2)",
1125    "timeout": 30,
1126    "~followup_annotations": [
1127      "@@@STEP_NEST_LEVEL@1@@@"
1128    ]
1129  },
1130  {
1131    "cmd": [
1132      "/opt/infra-android/tools/adb",
1133      "wait-for-device"
1134    ],
1135    "cwd": "[START_DIR]/skia",
1136    "env": {
1137      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1138      "CHROME_HEADLESS": "1",
1139      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1140    },
1141    "infra_step": true,
1142    "name": "adb pull.wait for device after failure of 'pull /sdcard/revenge_of_the_skiabot/dm_out' (attempt 2)",
1143    "timeout": 180,
1144    "~followup_annotations": [
1145      "@@@STEP_NEST_LEVEL@1@@@"
1146    ]
1147  },
1148  {
1149    "cmd": [
1150      "/opt/infra-android/tools/adb",
1151      "pull",
1152      "/sdcard/revenge_of_the_skiabot/dm_out",
1153      "[CLEANUP]/adb_pull_tmp_1"
1154    ],
1155    "cwd": "[START_DIR]/skia",
1156    "env": {
1157      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1158      "CHROME_HEADLESS": "1",
1159      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1160    },
1161    "infra_step": true,
1162    "name": "adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out (attempt 3)",
1163    "~followup_annotations": [
1164      "@@@STEP_NEST_LEVEL@1@@@",
1165      "@@@STEP_EXCEPTION@@@"
1166    ]
1167  },
1168  {
1169    "cmd": [
1170      "python",
1171      "-u",
1172      "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/opt/infra-android/tools/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      try:\n        sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n        line = line.replace(addr, addr + ' ' + sym.strip())\n      except subprocess.CalledProcessError:\n        pass\n  print line\n",
1173      "[START_DIR]/build"
1174    ],
1175    "env": {
1176      "CHROME_HEADLESS": "1",
1177      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1178    },
1179    "infra_step": true,
1180    "name": "dump log",
1181    "timeout": 300,
1182    "~followup_annotations": [
1183      "@@@STEP_LOG_LINE@python.inline@@@@",
1184      "@@@STEP_LOG_LINE@python.inline@import os@@@",
1185      "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
1186      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
1187      "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@",
1188      "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])@@@",
1189      "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@",
1190      "@@@STEP_LOG_LINE@python.inline@  tokens = line.split()@@@",
1191      "@@@STEP_LOG_LINE@python.inline@  if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
1192      "@@@STEP_LOG_LINE@python.inline@    addr, path = tokens[-2:]@@@",
1193      "@@@STEP_LOG_LINE@python.inline@    local = os.path.join(out, os.path.basename(path))@@@",
1194      "@@@STEP_LOG_LINE@python.inline@    if os.path.exists(local):@@@",
1195      "@@@STEP_LOG_LINE@python.inline@      try:@@@",
1196      "@@@STEP_LOG_LINE@python.inline@        sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
1197      "@@@STEP_LOG_LINE@python.inline@        line = line.replace(addr, addr + ' ' + sym.strip())@@@",
1198      "@@@STEP_LOG_LINE@python.inline@      except subprocess.CalledProcessError:@@@",
1199      "@@@STEP_LOG_LINE@python.inline@        pass@@@",
1200      "@@@STEP_LOG_LINE@python.inline@  print line@@@",
1201      "@@@STEP_LOG_END@python.inline@@@"
1202    ]
1203  },
1204  {
1205    "cmd": [
1206      "/opt/infra-android/tools/adb",
1207      "kill-server"
1208    ],
1209    "cwd": "[START_DIR]/skia",
1210    "env": {
1211      "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1212      "CHROME_HEADLESS": "1",
1213      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1214    },
1215    "infra_step": true,
1216    "name": "kill adb server"
1217  },
1218  {
1219    "failure": {
1220      "humanReason": "Infra Failure: Step('adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out (attempt 3)') (retcode: 1)"
1221    },
1222    "name": "$result"
1223  }
1224]