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