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

Unified Diff: infra/bots/flavor/ios_flavor.py

Issue 1703663002: Port Skia recipe to normal Python scripts, move to Skia repo (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address comments Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « infra/bots/flavor/default_flavor.py ('k') | infra/bots/flavor/ssh_devices.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: infra/bots/flavor/ios_flavor.py
diff --git a/infra/bots/flavor/ios_flavor.py b/infra/bots/flavor/ios_flavor.py
new file mode 100644
index 0000000000000000000000000000000000000000..c2d873775046c42df3d1c3f6096c04edd327d63e
--- /dev/null
+++ b/infra/bots/flavor/ios_flavor.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# Copyright 2016 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+import default_flavor
+import os
+import subprocess
+
+
+"""iOS flavor utils, used for building for and running tests on iOS."""
+
+
+class iOSFlavorUtils(default_flavor.DefaultFlavorUtils):
+ def __init__(self, bot_info):
+ super(iOSFlavorUtils, self).__init__(bot_info)
+ self.ios_bin = os.path.join(self._bot_info.skia_dir, 'platform_tools',
+ 'ios', 'bin')
+
+ def step(self, cmd, **kwargs):
+ args = [os.path.join(self.ios_bin, 'ios_run_skia')]
+
+ # Convert 'dm' and 'nanobench' from positional arguments
+ # to flags, which is what iOSShell expects to select which
+ # one is being run.
+ cmd = ["--" + c if c in ['dm', 'nanobench'] else c
+ for c in cmd]
+ return self._bot_info.run(args + cmd, **kwargs)
+
+ def compile(self, target):
+ """Build the given target."""
+ cmd = [os.path.join(self.ios_bin, 'ios_ninja')]
+ self._bot_info.run(cmd)
+
+ def device_path_join(self, *args):
+ """Like os.path.join(), but for paths on a connected iOS device."""
+ return '/'.join(args)
+
+ def device_path_exists(self, path):
+ """Like os.path.exists(), but for paths on a connected device."""
+ return self._bot_info.run(
+ [os.path.join(self.ios_bin, 'ios_path_exists'), path],
+ ) # pragma: no cover
+
+ def _remove_device_dir(self, path):
+ """Remove the directory on the device."""
+ return self._bot_info.run(
+ [os.path.join(self.ios_bin, 'ios_rm'), path],
+ )
+
+ def _create_device_dir(self, path):
+ """Create the directory on the device."""
+ return self._bot_info.run(
+ [os.path.join(self.ios_bin, 'ios_mkdir'), path],
+ )
+
+ def copy_directory_contents_to_device(self, host_dir, device_dir):
+ """Like shutil.copytree(), but for copying to a connected device."""
+ return self._bot_info.run([
+ os.path.join(self.ios_bin, 'ios_push_if_needed'),
+ host_dir, device_dir
+ ])
+
+ def copy_directory_contents_to_host(self, device_dir, host_dir):
+ """Like shutil.copytree(), but for copying from a connected device."""
+ return self._bot_info.run(
+ [os.path.join(self.ios_bin, 'ios_pull_if_needed'),
+ device_dir, host_dir],
+ )
+
+ def copy_file_to_device(self, host_path, device_path):
+ """Like shutil.copyfile, but for copying to a connected device."""
+ self._bot_info.run(
+ [os.path.join(self.ios_bin, 'ios_push_file'), host_path, device_path],
+ ) # pragma: no cover
+
+ def create_clean_device_dir(self, path):
+ """Like shutil.rmtree() + os.makedirs(), but on a connected device."""
+ self._remove_device_dir(path)
+ self._create_device_dir(path)
+
+ def install(self):
+ """Run device-specific installation steps."""
+ self._bot_info.run([os.path.join(self.ios_bin, 'ios_install')])
+
+ def cleanup_steps(self):
+ """Run any device-specific cleanup steps."""
+ self._bot_info.run([os.path.join(self.ios_bin, 'ios_restart')])
+ self._bot_info.run(['sleep', '20'])
+
+ def read_file_on_device(self, path):
+ """Read the given file."""
+ return subprocess.check_output(
+ [os.path.join(self.ios_bin, 'ios_cat_file'), path]).rstrip()
+
+ def remove_file_on_device(self, path):
+ """Remove the file on the device."""
+ return self._bot_info.run(
+ [os.path.join(self.ios_bin, 'ios_rm'), path],
+ )
+
+ def get_device_dirs(self):
+ """ Set the directories which will be used by the build steps."""
+ prefix = self.device_path_join('skiabot', 'skia_')
+ return default_flavor.DeviceDirs(
+ dm_dir=prefix + 'dm',
+ perf_data_dir=prefix + 'perf',
+ resource_dir=prefix + 'resources',
+ images_dir=prefix + 'images',
+ skp_dir=prefix + 'skp/skps',
+ tmp_dir=prefix + 'tmp_dir')
« no previous file with comments | « infra/bots/flavor/default_flavor.py ('k') | infra/bots/flavor/ssh_devices.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698