aboutsummaryrefslogtreecommitdiffhomepage
path: root/infra
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-02-02 18:55:03 -0500
committerGravatar Mike Klein <mtklein@chromium.org>2017-02-03 16:23:06 +0000
commit20f00784b8500ccb68f0e402eeccd9bbf2707040 (patch)
treef8a7ad960d7308f07f86c50ee6adefb8f566c852 /infra
parent0dda9cb881900241c1c2193ddf3bede72cda898b (diff)
Restore ios_flavor.
Just like Android, there's enough special ceremony needed to move files to and from iOS devices that this reads most clearly as its own flavor. CQ_INCLUDE_TRYBOTS=skia.primary:Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release Change-Id: I01c8e5494c364cc61e219568f022219f7c3f5fdc Reviewed-on: https://skia-review.googlesource.com/7988 Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'infra')
-rw-r--r--infra/bots/recipe_modules/flavor/api.py6
-rw-r--r--infra/bots/recipe_modules/flavor/gn_flavor.py10
-rw-r--r--infra/bots/recipe_modules/flavor/ios_flavor.py52
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json67
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json34
5 files changed, 125 insertions, 44 deletions
diff --git a/infra/bots/recipe_modules/flavor/api.py b/infra/bots/recipe_modules/flavor/api.py
index 609cfd95dc..263166a3aa 100644
--- a/infra/bots/recipe_modules/flavor/api.py
+++ b/infra/bots/recipe_modules/flavor/api.py
@@ -11,6 +11,7 @@ from recipe_engine import recipe_api
from . import default_flavor
from . import gn_android_flavor
from . import gn_flavor
+from . import ios_flavor
from . import pdfium_flavor
from . import valgrind_flavor
@@ -28,11 +29,12 @@ VERSION_NONE = -1
def is_android(builder_cfg):
return 'Android' in builder_cfg.get('extra_config', '')
+def is_ios(builder_cfg):
+ return 'iOS' == builder_cfg.get('os', '')
def is_pdfium(builder_cfg):
return 'PDFium' in builder_cfg.get('extra_config', '')
-
def is_valgrind(builder_cfg):
return 'Valgrind' in builder_cfg.get('extra_config', '')
@@ -42,6 +44,8 @@ class SkiaFlavorApi(recipe_api.RecipeApi):
"""Return a flavor utils object specific to the given builder."""
if is_android(builder_cfg):
return gn_android_flavor.GNAndroidFlavorUtils(self.m)
+ elif is_ios(builder_cfg):
+ return ios_flavor.iOSFlavorUtils(self.m)
elif is_pdfium(builder_cfg):
return pdfium_flavor.PDFiumFlavorUtils(self.m)
elif is_valgrind(builder_cfg):
diff --git a/infra/bots/recipe_modules/flavor/gn_flavor.py b/infra/bots/recipe_modules/flavor/gn_flavor.py
index 8a93c09a89..4eaefdfb7f 100644
--- a/infra/bots/recipe_modules/flavor/gn_flavor.py
+++ b/infra/bots/recipe_modules/flavor/gn_flavor.py
@@ -135,16 +135,6 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils):
clang_linux = str(self.m.vars.slave_dir.join('clang_linux'))
extra_config = self.m.vars.builder_cfg.get('extra_config', '')
- os = self.m.vars.builder_cfg.get('os', '')
-
- if 'iOS' == os:
- self._py('package ' + name,
- self.m.vars.skia_dir.join('gn', 'package_ios.py'),
- args=[str(app)])
- self._run(name,
- ['ios-deploy', '-b', str(app) + '.app',
- '-I', '--args', ' '.join(map(str, cmd[1:]))])
- return
if 'SAN' in extra_config:
# Sanitized binaries may want to run clang_linux/bin/llvm-symbolizer.
diff --git a/infra/bots/recipe_modules/flavor/ios_flavor.py b/infra/bots/recipe_modules/flavor/ios_flavor.py
new file mode 100644
index 0000000000..abadc15e42
--- /dev/null
+++ b/infra/bots/recipe_modules/flavor/ios_flavor.py
@@ -0,0 +1,52 @@
+# Copyright 2017 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import gn_flavor
+
+# Infra step failures interact really annoyingly with swarming retries.
+kInfraStep = False
+
+class iOSFlavorUtils(gn_flavor.GNFlavorUtils):
+
+ def step(self, name, cmd, env=None, **kwargs):
+ app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0])
+
+ self._py('package ' + name,
+ self.m.vars.skia_dir.join('gn', 'package_ios.py'),
+ args=[str(app)])
+ self._run(name,
+ ['ios-deploy', '-b', '%s.app' % app,
+ '-I', '--args', ' '.join(map(str, cmd[1:]))])
+
+ def _run_ios_script(self, script, first, *rest):
+ full = self.m.vars.skia_dir.join('platform_tools/ios/bin/ios_' + script)
+ self.m.run(self.m.step,
+ name = '%s %s' % (script, first),
+ cmd = [full, first] + list(rest),
+ infra_step=kInfraStep)
+
+ def copy_file_to_device(self, host, device):
+ self._run_ios_script('push_file', host, device)
+
+ def copy_directory_contents_to_device(self, host, device):
+ self._run_ios_script('push_if_needed', host, device)
+
+ def copy_directory_contents_to_host(self, device, host):
+ self._run_ios_script('pull_if_needed', device, host)
+
+ def remove_file_on_device(self, path): # pragma: nocover
+ self._run_ios_script('rm', path)
+
+ def create_clean_device_dir(self, path):
+ self._run_ios_script('rm', path)
+ self._run_ios_script('mkdir', path)
+
+ def read_file_on_device(self, path): # pragma: nocover
+ full = self.m.vars.skia_dir.join('platform_tools/ios/bin/ios_cat_file')
+ rc = self.m.run(self.m.step,
+ name = 'cat_file %s' % path,
+ cmd = [full, path],
+ stdout=self.m.raw_io.output(),
+ infra_step=kInfraStep)
+ return rc.stdout.rstrip() if rc.stdout else rc.stdout
diff --git a/infra/bots/recipe_modules/perf/example.expected/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json b/infra/bots/recipe_modules/perf/example.expected/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json
index be29b2de58..92271ee23b 100644
--- a/infra/bots/recipe_modules/perf/example.expected/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json
@@ -1,6 +1,19 @@
[
{
"cmd": [
+ "[START_DIR]/skia/platform_tools/ios/bin/ios_push_if_needed",
+ "[START_DIR]/skia/resources",
+ "[START_DIR]/skia/resources"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "push_if_needed [START_DIR]/skia/resources"
+ },
+ {
+ "cmd": [
"python",
"-u",
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
@@ -61,47 +74,27 @@
},
{
"cmd": [
- "python",
- "-u",
- "\nimport os, sys\nfrom common import chromium_utils # Error? See https://crbug.com/584783.\n\n\nif os.path.exists(sys.argv[1]):\n chromium_utils.RemoveDirectory(sys.argv[1])\n",
+ "[START_DIR]/skia/platform_tools/ios/bin/ios_rm",
"[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release/data"
],
"env": {
- "PYTHONPATH": "[START_DIR]/skia/infra/bots/.recipe_deps/build/scripts"
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "SKIA_OUT": "[START_DIR]/out"
},
- "name": "rmtree data",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os, sys@@@",
- "@@@STEP_LOG_LINE@python.inline@from common import chromium_utils # Error? See https://crbug.com/584783.@@@",
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@if os.path.exists(sys.argv[1]):@@@",
- "@@@STEP_LOG_LINE@python.inline@ chromium_utils.RemoveDirectory(sys.argv[1])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
- ]
+ "name": "rm [CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release/data"
},
{
"cmd": [
- "python",
- "-u",
- "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
- "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release/data",
- "511"
+ "[START_DIR]/skia/platform_tools/ios/bin/ios_mkdir",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release/data"
],
- "name": "makedirs data",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
- "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
- "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
- "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
- "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
- "@@@STEP_LOG_END@python.inline@@@"
- ]
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "mkdir [CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release/data"
},
{
"cmd": [
@@ -148,6 +141,14 @@
]
},
{
+ "cmd": [
+ "[START_DIR]/skia/platform_tools/ios/bin/ios_pull_if_needed",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release/data",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release/data"
+ ],
+ "name": "pull_if_needed [CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release/data"
+ },
+ {
"name": "$result",
"recipe_result": null,
"status_code": 0
diff --git a/infra/bots/recipe_modules/sktest/example.expected/Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json b/infra/bots/recipe_modules/sktest/example.expected/Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json
index 0d8dc5fefa..c157b7d620 100644
--- a/infra/bots/recipe_modules/sktest/example.expected/Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-iOS-Clang-iPadMini4-GPU-GX6450-arm-Release.json
@@ -1,6 +1,19 @@
[
{
"cmd": [
+ "[START_DIR]/skia/platform_tools/ios/bin/ios_push_if_needed",
+ "[START_DIR]/skia/resources",
+ "[START_DIR]/skia/resources"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "push_if_needed [START_DIR]/skia/resources"
+ },
+ {
+ "cmd": [
"python",
"-u",
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
@@ -175,6 +188,19 @@
},
{
"cmd": [
+ "[START_DIR]/skia/platform_tools/ios/bin/ios_push_file",
+ "[START_DIR]/tmp/uninteresting_hashes.txt",
+ "[START_DIR]/tmp/uninteresting_hashes.txt"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "push_file [START_DIR]/tmp/uninteresting_hashes.txt"
+ },
+ {
+ "cmd": [
"python",
"-u",
"[START_DIR]/skia/gn/package_ios.py",
@@ -196,6 +222,14 @@
"name": "dm"
},
{
+ "cmd": [
+ "[START_DIR]/skia/platform_tools/ios/bin/ios_pull_if_needed",
+ "[CUSTOM_[SWARM_OUT_DIR]]/dm",
+ "[CUSTOM_[SWARM_OUT_DIR]]/dm"
+ ],
+ "name": "pull_if_needed [CUSTOM_[SWARM_OUT_DIR]]/dm"
+ },
+ {
"name": "$result",
"recipe_result": null,
"status_code": 0