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