Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(529)

Side by Side Diff: infra/bots/recipe_modules/skia/ios_flavor.py

Issue 2198173002: Re-organize Skia recipes (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix missing dependency Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5
6 import copy
7 import default_flavor
8
9
10 """iOS flavor utils, used for building for and running tests on iOS."""
11
12
13 class iOSFlavorUtils(default_flavor.DefaultFlavorUtils):
14 def __init__(self, skia_api):
15 super(iOSFlavorUtils, self).__init__(skia_api)
16 self.default_env = {}
17 self.default_env['XCODEBUILD'] = (
18 self._skia_api.slave_dir.join('xcodebuild'))
19 self.ios_bin = self._skia_api.skia_dir.join(
20 'platform_tools', 'ios', 'bin')
21
22 def step(self, name, cmd, **kwargs):
23 args = [self.ios_bin.join('ios_run_skia')]
24 env = {}
25 env.update(kwargs.pop('env', {}))
26 env.update(self.default_env)
27 # Convert 'dm' and 'nanobench' from positional arguments
28 # to flags, which is what iOSShell expects to select which
29 # one is being run.
30 cmd = ["--" + c if c in ['dm', 'nanobench'] else c
31 for c in cmd]
32 return self._skia_api.run(self._skia_api.m.step, name=name, cmd=args + cmd,
33 env=env,
34 **kwargs)
35
36 def compile(self, target):
37 """Build the given target."""
38 cmd = [self.ios_bin.join('ios_ninja')]
39 self._skia_api.run(self._skia_api.m.step, 'build iOSShell', cmd=cmd,
40 cwd=self._skia_api.m.path['checkout'])
41
42 def device_path_join(self, *args):
43 """Like os.path.join(), but for paths on a connected iOS device."""
44 return '/'.join(args)
45
46 def device_path_exists(self, path):
47 """Like os.path.exists(), but for paths on a connected device."""
48 return self._skia_api.run(
49 self._skia_api.m.step,
50 'exists %s' % path,
51 cmd=[self.ios_bin.join('ios_path_exists'), path],
52 env=self.default_env,
53 infra_step=True,
54 ) # pragma: no cover
55
56 def _remove_device_dir(self, path):
57 """Remove the directory on the device."""
58 return self._skia_api.run(
59 self._skia_api.m.step,
60 'rmdir %s' % path,
61 cmd=[self.ios_bin.join('ios_rm'), path],
62 env=self.default_env,
63 infra_step=True,
64 )
65
66 def _create_device_dir(self, path):
67 """Create the directory on the device."""
68 return self._skia_api.run(
69 self._skia_api.m.step,
70 'mkdir %s' % path,
71 cmd=[self.ios_bin.join('ios_mkdir'), path],
72 env=self.default_env,
73 infra_step=True,
74 )
75
76 def copy_directory_contents_to_device(self, host_dir, device_dir):
77 """Like shutil.copytree(), but for copying to a connected device."""
78 return self._skia_api.run(
79 self._skia_api.m.step,
80 name='push %s to %s' % (self._skia_api.m.path.basename(host_dir),
81 self._skia_api.m.path.basename(device_dir)),
82 cmd=[self.ios_bin.join('ios_push_if_needed'),
83 host_dir, device_dir],
84 env=self.default_env,
85 infra_step=True,
86 )
87
88 def copy_directory_contents_to_host(self, device_dir, host_dir):
89 """Like shutil.copytree(), but for copying from a connected device."""
90 self._skia_api.run(
91 self._skia_api.m.step,
92 name='pull %s' % self._skia_api.m.path.basename(device_dir),
93 cmd=[self.ios_bin.join('ios_pull_if_needed'),
94 device_dir, host_dir],
95 env=self.default_env,
96 infra_step=True,
97 )
98
99 def copy_file_to_device(self, host_path, device_path):
100 """Like shutil.copyfile, but for copying to a connected device."""
101 self._skia_api.run(
102 self._skia_api.m.step,
103 name='push %s' % host_path,
104 cmd=[self.ios_bin.join('ios_push_file'), host_path, device_path],
105 env=self.default_env,
106 infra_step=True,
107 ) # pragma: no cover
108
109 def copy_extra_build_products(self, swarming_out_dir):
110 xcode_dir = self._skia_api.m.path.join(
111 'xcodebuild', '%s-iphoneos' % self._skia_api.configuration)
112 self._skia_api.copy_build_products(
113 self._skia_api.skia_dir.join(xcode_dir),
114 swarming_out_dir.join(xcode_dir))
115
116 def create_clean_device_dir(self, path):
117 """Like shutil.rmtree() + os.makedirs(), but on a connected device."""
118 self._remove_device_dir(path)
119 self._create_device_dir(path)
120
121 def install(self):
122 """Run device-specific installation steps."""
123 self._skia_api.run(
124 self._skia_api.m.step,
125 name='install iOSShell',
126 cmd=[self.ios_bin.join('ios_install')],
127 env=self.default_env,
128 infra_step=True)
129
130 def cleanup_steps(self):
131 """Run any device-specific cleanup steps."""
132 if self._skia_api.do_test_steps or self._skia_api.do_perf_steps:
133 self._skia_api.run(
134 self._skia_api.m.step,
135 name='reboot',
136 cmd=[self.ios_bin.join('ios_restart')],
137 env=self.default_env,
138 infra_step=True)
139 self._skia_api.run(
140 self._skia_api.m.step,
141 name='wait for reboot',
142 cmd=['sleep', '20'],
143 env=self.default_env,
144 infra_step=True)
145
146 def read_file_on_device(self, path):
147 """Read the given file."""
148 ret = self._skia_api.run(
149 self._skia_api.m.step,
150 name='read %s' % self._skia_api.m.path.basename(path),
151 cmd=[self.ios_bin.join('ios_cat_file'), path],
152 env=self.default_env,
153 stdout=self._skia_api.m.raw_io.output(),
154 infra_step=True)
155 return ret.stdout.rstrip() if ret.stdout else ret.stdout
156
157 def remove_file_on_device(self, path):
158 """Remove the file on the device."""
159 return self._skia_api.run(
160 self._skia_api.m.step,
161 'rm %s' % path,
162 cmd=[self.ios_bin.join('ios_rm'), path],
163 env=self.default_env,
164 infra_step=True,
165 )
166
167 def get_device_dirs(self):
168 """ Set the directories which will be used by the build steps."""
169 prefix = self.device_path_join('skiabot', 'skia_')
170 return default_flavor.DeviceDirs(
171 dm_dir=prefix + 'dm',
172 perf_data_dir=prefix + 'perf',
173 resource_dir=prefix + 'resources',
174 images_dir=prefix + 'images',
175 skp_dir=prefix + 'skp/skps',
176 tmp_dir=prefix + 'tmp_dir')
OLDNEW
« no previous file with comments | « infra/bots/recipe_modules/skia/gn_flavor.py ('k') | infra/bots/recipe_modules/skia/pdfium_flavor.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698