OLD | NEW |
---|---|
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import default_flavor | 5 import default_flavor |
6 import subprocess | 6 import subprocess |
7 | 7 |
8 # Data should go under in _data_dir, which may be preserved across runs. | 8 # Data should go under in _data_dir, which may be preserved across runs. |
9 _data_dir = '/sdcard/revenge_of_the_skiabot/' | 9 _data_dir = '/sdcard/revenge_of_the_skiabot/' |
10 # Executables go under _bin_dir, which, well, allows executable files. | 10 # Executables go under _bin_dir, which, well, allows executable files. |
(...skipping 19 matching lines...) Expand all Loading... | |
30 | 30 |
31 def _run(self, title, *cmd, **kwargs): | 31 def _run(self, title, *cmd, **kwargs): |
32 self.m.vars.default_env = {k: v for (k,v) | 32 self.m.vars.default_env = {k: v for (k,v) |
33 in self.m.vars.default_env.iteritems() | 33 in self.m.vars.default_env.iteritems() |
34 if k in ['PATH']} | 34 if k in ['PATH']} |
35 return self.m.run(self.m.step, title, cmd=list(cmd), | 35 return self.m.run(self.m.step, title, cmd=list(cmd), |
36 cwd=self.m.vars.skia_dir, env={}, **kwargs) | 36 cwd=self.m.vars.skia_dir, env={}, **kwargs) |
37 | 37 |
38 def _adb(self, title, *cmd, **kwargs): | 38 def _adb(self, title, *cmd, **kwargs): |
39 self._ever_ran_adb = True | 39 self._ever_ran_adb = True |
40 # The only non-infra adb call (check rc) happens to not use _adb(). | 40 # The only non-infra adb steps (dm / nanobench) happen to not use _adb(). |
41 if 'infra_step' not in kwargs: | 41 if 'infra_step' not in kwargs: |
42 kwargs['infra_step'] = True | 42 kwargs['infra_step'] = True |
43 return self._run(title, 'adb', *cmd, **kwargs) | 43 return self._run(title, 'adb', *cmd, **kwargs) |
44 | 44 |
45 def compile(self, unused_target, **kwargs): | 45 def compile(self, unused_target, **kwargs): |
46 compiler = self.m.vars.builder_cfg.get('compiler') | 46 compiler = self.m.vars.builder_cfg.get('compiler') |
47 configuration = self.m.vars.builder_cfg.get('configuration') | 47 configuration = self.m.vars.builder_cfg.get('configuration') |
48 extra_config = self.m.vars.builder_cfg.get('extra_config', '') | 48 extra_config = self.m.vars.builder_cfg.get('extra_config', '') |
49 os = self.m.vars.builder_cfg.get('os') | 49 os = self.m.vars.builder_cfg.get('os') |
50 target_arch = self.m.vars.builder_cfg.get('target_arch') | 50 target_arch = self.m.vars.builder_cfg.get('target_arch') |
(...skipping 20 matching lines...) Expand all Loading... | |
71 infra_step=True) | 71 infra_step=True) |
72 self._run('gn gen', 'gn', 'gen', self.out_dir, '--args=' + gn_args) | 72 self._run('gn gen', 'gn', 'gen', self.out_dir, '--args=' + gn_args) |
73 self._run('ninja', 'ninja', '-C', self.out_dir) | 73 self._run('ninja', 'ninja', '-C', self.out_dir) |
74 | 74 |
75 def install(self): | 75 def install(self): |
76 self._adb('mkdir ' + self.device_dirs.resource_dir, | 76 self._adb('mkdir ' + self.device_dirs.resource_dir, |
77 'shell', 'mkdir', '-p', self.device_dirs.resource_dir) | 77 'shell', 'mkdir', '-p', self.device_dirs.resource_dir) |
78 | 78 |
79 def cleanup_steps(self): | 79 def cleanup_steps(self): |
80 if self._ever_ran_adb: | 80 if self._ever_ran_adb: |
81 self._adb('dump log ', 'logcat', '-d') | |
borenet
2016/09/14 16:52:24
Nit: trailing space?
mtklein_C
2016/09/14 17:30:31
Done.
| |
81 self._adb('reboot', 'reboot') | 82 self._adb('reboot', 'reboot') |
82 self._adb('kill adb server', 'kill-server') | 83 self._adb('kill adb server', 'kill-server') |
83 | 84 |
84 def step(self, name, cmd, env=None, **kwargs): | 85 def step(self, name, cmd, env=None, **kwargs): |
85 app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0]) | 86 app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0]) |
86 self._adb('push %s' % cmd[0], | 87 self._adb('push %s' % cmd[0], |
87 'push', app, _bin_dir) | 88 'push', app, _bin_dir) |
88 | 89 |
89 sh = '%s.sh' % cmd[0] | 90 sh = '%s.sh' % cmd[0] |
90 self.m.run.writefile(self.m.vars.tmp_dir.join(sh), | 91 self.m.run.writefile(self.m.vars.tmp_dir.join(sh), |
91 'set -x; %s%s; echo $? >%src' % | 92 'set -x; %s%s; echo $? >%src' % |
92 (_bin_dir, subprocess.list2cmdline(map(str, cmd)), _bin_dir)) | 93 (_bin_dir, subprocess.list2cmdline(map(str, cmd)), _bin_dir)) |
93 self._adb('push %s' % sh, | 94 self._adb('push %s' % sh, |
94 'push', self.m.vars.tmp_dir.join(sh), _bin_dir) | 95 'push', self.m.vars.tmp_dir.join(sh), _bin_dir) |
95 | 96 |
96 self._adb('clear log', 'logcat', '-c') | 97 self._adb('clear log', 'logcat', '-c') |
97 self._adb(cmd[0], 'shell', 'sh', _bin_dir + sh) | 98 self.m.python.inline('%s' % cmd[0], """ |
98 self._adb('dump log ', 'logcat', '-d') | |
99 | |
100 self.m.python.inline('check %s rc' % cmd[0], """ | |
101 import subprocess | 99 import subprocess |
102 import sys | 100 import sys |
101 bin_dir = sys.argv[1] | |
102 sh = sys.argv[2] | |
103 subprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh]) | |
103 sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat', | 104 sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat', |
104 '%src']))) | 105 bin_dir + 'rc']))) |
borenet
2016/09/14 16:52:24
Please break this into a few lines and add a helpf
mtklein_C
2016/09/14 17:30:31
Done, mostly. We don't expect this 'adb shell ...
borenet
2016/09/14 17:44:35
Thanks. Mainly just want to distinguish between "t
| |
105 """ % _bin_dir) | 106 """, args=[_bin_dir, sh]) |
106 | 107 |
107 def copy_file_to_device(self, host, device): | 108 def copy_file_to_device(self, host, device): |
108 self._adb('push %s %s' % (host, device), 'push', host, device) | 109 self._adb('push %s %s' % (host, device), 'push', host, device) |
109 | 110 |
110 def copy_directory_contents_to_device(self, host, device): | 111 def copy_directory_contents_to_device(self, host, device): |
111 # Copy the tree, avoiding hidden directories and resolving symlinks. | 112 # Copy the tree, avoiding hidden directories and resolving symlinks. |
112 self.m.python.inline('push %s/* %s' % (host, device), """ | 113 self.m.python.inline('push %s/* %s' % (host, device), """ |
113 import os | 114 import os |
114 import subprocess | 115 import subprocess |
115 import sys | 116 import sys |
(...skipping 16 matching lines...) Expand all Loading... | |
132 def read_file_on_device(self, path): | 133 def read_file_on_device(self, path): |
133 return self._adb('read %s' % path, | 134 return self._adb('read %s' % path, |
134 'shell', 'cat', path, stdout=self.m.raw_io.output()).stdout | 135 'shell', 'cat', path, stdout=self.m.raw_io.output()).stdout |
135 | 136 |
136 def remove_file_on_device(self, path): | 137 def remove_file_on_device(self, path): |
137 self._adb('rm %s' % path, 'shell', 'rm', '-f', path) | 138 self._adb('rm %s' % path, 'shell', 'rm', '-f', path) |
138 | 139 |
139 def create_clean_device_dir(self, path): | 140 def create_clean_device_dir(self, path): |
140 self._adb('rm %s' % path, 'shell', 'rm', '-rf', path) | 141 self._adb('rm %s' % path, 'shell', 'rm', '-rf', path) |
141 self._adb('mkdir %s' % path, 'shell', 'mkdir', '-p', path) | 142 self._adb('mkdir %s' % path, 'shell', 'mkdir', '-p', path) |
OLD | NEW |