Update installing and cleanup of Xcode and runtimes to work with macOS 13
Change-Id: Id228c4abb23a212a011d59053953c3c90bf880bf
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/51340
Reviewed-by: Keyong Han <keyonghan@google.com>
Reviewed-by: Christopher Fujino <fujino@google.com>
Commit-Queue: Victoria Ashworth <vashworth@google.com>
diff --git a/recipe_modules/osx_sdk/__init__.py b/recipe_modules/osx_sdk/__init__.py
index e165b34..ae6637d 100644
--- a/recipe_modules/osx_sdk/__init__.py
+++ b/recipe_modules/osx_sdk/__init__.py
@@ -37,6 +37,9 @@
toolchain_ver=Single(str),
# Cleanup caches
cleanup_cache=Single(bool),
+
+ # Location of the Xcode CIPD package
+ xcode_cipd_package_source=Single(str),
), default={},
)
}
diff --git a/recipe_modules/osx_sdk/api.py b/recipe_modules/osx_sdk/api.py
index 4cbb36d..23f2329 100644
--- a/recipe_modules/osx_sdk/api.py
+++ b/recipe_modules/osx_sdk/api.py
@@ -7,6 +7,8 @@
Available only to Google-run bots."""
+import os
+
from contextlib import contextmanager
from recipe_engine import recipe_api
@@ -27,6 +29,14 @@
_XCODE_CACHE_PATH = 'osx_sdk'
+# This CIPD source contains Xcode and iOS runtimes create and maintained by the
+# Flutter team.
+_FLUTTER_XCODE_CIPD = 'flutter_internal/ios/xcode'
+
+# This CIPD source contains Xcode and iOS runtimes created and maintained by the
+# Chrome team.
+_INFRA_XCODE_CIPD = 'infra_internal/ios/xcode'
+
class OSXSDKApi(recipe_api.RecipeApi):
"""API for using OS X SDK distributed via CIPD."""
@@ -39,6 +49,8 @@
self._tool_pkg = 'infra/tools/mac_toolchain/${platform}'
self._tool_ver = 'latest'
self._cleanup_cache = False
+ self.macos_13_or_later = False
+ self._xcode_cipd_package_source = None
def initialize(self):
"""Initializes xcode, and ios versions.
@@ -62,17 +74,34 @@
runtime_versions.sort(reverse=True)
self._runtime_versions = runtime_versions
+ current_os = self.m.platform.mac_release
if 'sdk_version' in self._sdk_properties:
self._sdk_version = self._sdk_properties['sdk_version'].lower()
else:
- cur_os = self.m.platform.mac_release
for target_os, xcode in reversed(_DEFAULT_VERSION_MAP):
- if cur_os >= self.m.version.parse(target_os):
+ if current_os >= self.m.version.parse(target_os):
self._sdk_version = xcode
break
else:
self._sdk_version = _DEFAULT_VERSION_MAP[0][-1]
+ self.macos_13_or_later = current_os >= self.m.version.parse('13.0.0')
+
+ if 'xcode_cipd_package_source' in self._sdk_properties:
+ self._xcode_cipd_package_source = self._sdk_properties[
+ 'xcode_cipd_package_source']
+ else:
+ # TODO(vashworth): Once all bots are on macOS 13, we can remove this
+ # check and always default to _INFRA_XCODE_CIPD.
+ if self.macos_13_or_later:
+ # Starting with macOS 13, Xcode packages that have been altered are
+ # considered "damaged" and will not be usable. Since Xcode CIPD packages
+ # from flutter_internal have been altered up to Xcode 15 beta 6 (15a5219j),
+ # use infra_internal Xcode CIPD packages as the default on macOS 13.
+ self._xcode_cipd_package_source = _INFRA_XCODE_CIPD
+ else:
+ self._xcode_cipd_package_source = _FLUTTER_XCODE_CIPD
+
@contextmanager
def __call__(self, kind, devicelab=False):
"""Sets up the XCode SDK environment.
@@ -164,19 +193,32 @@
def _setup_osx_sdk(self, kind, devicelab):
app = None
- self._clean_cache(devicelab)
+ self._clean_xcode_cache(devicelab)
app = self._ensure_sdk(kind, devicelab)
self.m.os_utils.kill_simulators()
self.m.step('select XCode', ['sudo', 'xcode-select', '--switch', app])
self.m.step('list simulators', ['xcrun', 'simctl', 'list'])
- def _clean_cache(self, devicelab):
+ def _clean_xcode_cache(self, devicelab):
"""Cleans up cache when specified or polluted.
Cleans up only corresponding versioned xcode instead of the whole `osx_sdk`.
+
+ If on macOS 13 or later, deletes all mounted runtimes and deletes
+ corresponding cached runtime dmgs.
"""
- if self._cleanup_cache:
+ if not self._cleanup_cache:
+ return
+ if devicelab or not self.macos_13_or_later:
self.m.file.rmtree('Cleaning up Xcode cache', self._xcode_dir(devicelab))
+ else:
+ # Clean up with `file.rmtree` fails on macOS 13 non-devicelab bots with an
+ # "Operation not permitted" error when deleting XCode.app/Contents/_CodeSignature.
+ # Use `rm -rf` instead.
+ self.m.step(
+ 'Cleaning up Xcode cache',
+ ['rm', '-rf', self._xcode_dir(devicelab)]
+ )
def _ensure_mac_toolchain(self, tool_dir):
ef = self.m.cipd.EnsureFile()
@@ -190,7 +232,7 @@
[
tool_dir.join('mac_toolchain'), 'install', '-kind', kind,
'-xcode-version', self._sdk_version, '-output-dir', app_dir,
- '-cipd-package-prefix', 'flutter_internal/ios/xcode',
+ '-cipd-package-prefix', self._xcode_cipd_package_source,
'-with-runtime=%s' % (not bool(self._runtime_versions))
],
)
@@ -205,49 +247,151 @@
sdk_app = self.m.path.join(app_dir, 'XCode.app')
self._install_xcode(tool_dir, kind, sdk_app)
- if devicelab:
- return sdk_app
+ self._cleanup_runtimes_cache(sdk_app)
- # Skips runtime installation if it already exists. Otherwise,
- # installs each runtime version under `osx_sdk` for cache sharing,
- # and then copies over to the destination.
- if self._runtime_versions:
- self.m.file.ensure_directory(
- 'Ensuring runtimes directory',
- self.m.path.join(sdk_app, *_RUNTIMESPATH)
- )
- for version in self._runtime_versions:
- runtime_name = 'iOS %s.simruntime' % version.lower(
- ).replace('ios-', '').replace('-', '.')
- dest = self.m.path.join(sdk_app, *_RUNTIMESPATH, runtime_name)
- if not self.m.path.exists(dest):
- runtime_cache_dir = self.m.path['cache'].join(_XCODE_CACHE_PATH).join(
- 'xcode_runtime_%s' % version.lower()
+ self._install_runtimes(devicelab, app_dir, tool_dir, sdk_app, kind)
+
+ return sdk_app
+
+ def _install_runtimes(self, devicelab, app_dir, tool_dir, sdk_app, kind):
+ '''Ensure runtimes are installed.
+
+ For macOS lower than 13, this involves downloading the runtime and copying
+ it into the Xcode app bundle.
+
+ For macOS 13 and higher, this involved downloading the runtime dmg and
+ running a `simctl` command to verify and mount it. This is required because
+ copying files into Xcode on macOS 13 may damage it and prevent it from
+ being usable.
+
+ Args:
+ devicelab: (bool) Whether this is a devicelab tasks. Don't install
+ explicit runtimes for devicelab tasks.
+ app_dir: (Path) Path to Xcode cache directory.
+ tool_dir: (Path) Path to mac_toolchain cache directory.
+ sdk_app: (Path) Path to installed Xcode app bundle.
+ kind ('mac'|'ios'): How the SDK should be configured.
+ '''
+ if not self._runtime_versions:
+ # On macOS 13, when cleanup_cache is True, we first clear the Xcode cache,
+ # install Xcode, and then clean up the runtimes cache. It happens in this
+ # order because removing runtimes requires Xcode developer tools so Xcode
+ # must be installed first. However, when no explicit runtimes are defined,
+ # the runtime is also installed in the `_install_xcode` function. So after
+ # cleaning the runtimes, the runtime that was installed may have been
+ # removed. So re-call `_install_xcode` to reinstall the removed runtime.
+ if self.macos_13_or_later and self._cleanup_cache:
+ with self.m.step.nest('install runtimes'):
+ self._install_xcode(tool_dir, kind, sdk_app)
+ return
+
+ if devicelab:
+ return
+
+ with self.m.step.nest('install runtimes'):
+ if self.macos_13_or_later:
+ self.m.step(
+ 'select XCode', ['sudo', 'xcode-select', '--switch', sdk_app]
+ )
+ runtime_simulators = self.m.step(
+ 'list runtimes', ['xcrun', 'simctl', 'list', 'runtimes'],
+ stdout=self.m.raw_io.output_text(add_output_log=True)
+ ).stdout.splitlines()
+
+ for version in self._runtime_versions:
+ runtime_version_parts = version.split('_')
+ if len(runtime_version_parts) != 2:
+ self.m.step.empty(
+ 'Invalid runtime version %s' % version,
+ status=self.m.step.INFRA_FAILURE,
+ )
+ runtime_version = runtime_version_parts[0]
+ xcode_version = runtime_version_parts[1]
+
+ runtime_dmg_name = 'iOS-%s.dmg' % runtime_version.lower(
+ ).replace('ios-', '')
+ runtime_dmg_cache_dir = self._runtime_dmg_dir_cache_path(version)
+ runtime_dmg_path = os.path.join(
+ str(runtime_dmg_cache_dir), runtime_dmg_name
)
+
self.m.step(
'install xcode runtime %s' % version.lower(),
[
app_dir.join('mac_toolchain'),
- 'install-runtime',
+ 'install-runtime-dmg',
'-cipd-package-prefix',
- 'flutter_internal/ios/xcode',
+ self._xcode_cipd_package_source,
'-runtime-version',
- version.lower(),
+ runtime_version,
+ '-xcode-version',
+ xcode_version,
'-output-dir',
- runtime_cache_dir,
+ runtime_dmg_cache_dir,
],
)
- # Move the runtimes
- path_with_version = runtime_cache_dir.join(runtime_name)
- # If the runtime was the default for xcode the cipd bundle contains a directory called iOS.simruntime otherwise
- # it contains a folder called "iOS <version>.simruntime".
- source = path_with_version if self.m.path.exists(
- path_with_version
- ) else runtime_cache_dir.join('iOS.simruntime')
- self.m.file.copytree(
- 'Copy runtime to %s' % dest, source, dest, symlinks=True
+
+ self.m.file.listdir(
+ 'list xcode runtime dmg %s' % version.lower(),
+ runtime_dmg_cache_dir
)
- return sdk_app
+
+ # Skip adding the runtime if it's already mounted
+ if not self._is_runtime_mounted(runtime_version, xcode_version,
+ runtime_simulators):
+ self.m.step(
+ 'verify and mount runtime %s' % version.lower(),
+ [
+ 'xcrun',
+ 'simctl',
+ 'runtime',
+ 'add',
+ runtime_dmg_path,
+ ],
+ )
+
+ else:
+ # Skips runtime installation if it already exists. Otherwise,
+ # installs each runtime version under `osx_sdk` for cache sharing,
+ # and then copies over to the destination.
+
+ self.m.file.ensure_directory(
+ 'Ensuring runtimes directory',
+ self.m.path.join(sdk_app, *_RUNTIMESPATH)
+ )
+ for version in self._runtime_versions:
+ runtime_name = 'iOS %s.simruntime' % version.lower(
+ ).replace('ios-', '').replace('-', '.')
+ dest = self.m.path.join(sdk_app, *_RUNTIMESPATH, runtime_name)
+ if not self.m.path.exists(dest):
+ runtime_cache_dir = self.m.path['cache'].join(_XCODE_CACHE_PATH
+ ).join(
+ 'xcode_runtime_%s'
+ % version.lower()
+ )
+ self.m.step(
+ 'install xcode runtime %s' % version.lower(),
+ [
+ app_dir.join('mac_toolchain'),
+ 'install-runtime',
+ '-cipd-package-prefix',
+ _FLUTTER_XCODE_CIPD,
+ '-runtime-version',
+ version.lower(),
+ '-output-dir',
+ runtime_cache_dir,
+ ],
+ )
+ # Move the runtimes
+ path_with_version = runtime_cache_dir.join(runtime_name)
+ # If the runtime was the default for xcode the cipd bundle contains a directory called iOS.simruntime otherwise
+ # it contains a folder called "iOS <version>.simruntime".
+ source = path_with_version if self.m.path.exists(
+ path_with_version
+ ) else runtime_cache_dir.join('iOS.simruntime')
+ self.m.file.copytree(
+ 'Copy runtime to %s' % dest, source, dest, symlinks=True
+ )
def _xcode_dir(self, devicelab):
"""Returns xcode cache dir.
@@ -268,3 +412,165 @@
runtime_version = "_".join(self._runtime_versions)
sdk_version = sdk_version + '_runtime_' + runtime_version
return self.m.path['cache'].join(_XCODE_CACHE_PATH).join(sdk_version)
+
+ def _runtime_dmg_dir_cache_path(self, version):
+ return self.m.path['cache'].join(_XCODE_CACHE_PATH).join(
+ 'xcode_runtime_dmg_%s' % version.lower()
+ )
+
+ def _cleanup_runtimes_cache(self, sdk_app):
+ '''Deletes all mounted runtimes and deletes corresponding cached runtime dmgs.
+
+ This is only used for macOS 13+ since runtimes are installed and mounted separately.
+ '''
+
+ if not self._cleanup_cache or not self.macos_13_or_later:
+ return
+
+ with self.m.step.nest('Cleaning up runtimes cache'):
+ self.m.step('select XCode', ['sudo', 'xcode-select', '--switch', sdk_app])
+
+ simulator_cleanup_result = self.m.step(
+ 'Cleaning up mounted simulator runtimes',
+ [
+ 'xcrun',
+ 'simctl',
+ 'runtime',
+ 'delete',
+ 'all',
+ ],
+ raise_on_failure=False,
+ ok_ret='any',
+ stdout=self.m.raw_io.output_text(add_output_log=True),
+ stderr=self.m.raw_io.output_text(add_output_log=True),
+ )
+
+ simulator_cleanup_stdout = simulator_cleanup_result.stdout.rstrip()
+ simulator_cleanup_stderr = simulator_cleanup_result.stderr.rstrip()
+ if simulator_cleanup_stdout and 'No matching images found to delete' not in simulator_cleanup_stdout:
+ self.m.step.empty(
+ 'Failed to delete runtimes',
+ status=self.m.step.INFRA_FAILURE,
+ step_text=simulator_cleanup_stdout,
+ )
+ if simulator_cleanup_stderr and 'No matching images found to delete' not in simulator_cleanup_stderr:
+ self.m.step.empty(
+ 'Failed to delete runtimes',
+ status=self.m.step.INFRA_FAILURE,
+ step_text=simulator_cleanup_stderr,
+ )
+
+ if not self._runtime_versions:
+ return
+
+ for version in self._runtime_versions:
+ runtime_dmg_cache_dir = self._runtime_dmg_dir_cache_path(version)
+
+ self.m.file.rmtree(
+ 'Cleaning up runtime cache %s' % version.lower(),
+ runtime_dmg_cache_dir
+ )
+
+ def _is_runtime_mounted(
+ self, runtime_version, xcode_version, runtime_simulators
+ ):
+ '''Determine if iOS runtime version is already mounted.
+
+ Args:
+ runtime_version: (string) The iOS version (e.g. "ios-16-4").
+ xcode_version: (string) The Xcode version (e.g. "14e300c").
+ runtime_simulators: (list) A list of strings of runtime versions.
+ Returns:
+ A boolean for whether or not the runtime is already mounted.
+ '''
+
+ with self.m.step.nest('cipd describe %s_%s' %
+ (runtime_version, xcode_version)) as display_step:
+ # First try to get the iOS runtime build version by the Xcode version
+ ios_runtime_build_version = self._get_ios_runtime_build_version(
+ runtime_version, xcode_version
+ )
+
+ # If unable to get from the Xcode version, try again by using the iOS runtime version
+ if ios_runtime_build_version is None:
+ ios_runtime_build_version = self._get_ios_runtime_build_version(
+ runtime_version
+ )
+
+ if ios_runtime_build_version is None:
+ self.m.step.empty(
+ 'Failed to get runtime build version',
+ status=self.m.step.INFRA_FAILURE,
+ )
+ else:
+ self.m.step.empty(
+ 'runtime build version', step_text=ios_runtime_build_version
+ )
+ display_step.presentation.status = self.m.step.SUCCESS
+
+ # Check if runtime is already mounted
+ for runtime in runtime_simulators:
+ # Example runtime: `iOS 14.3 (14.3 - 18C61) - com.apple.CoreSimulator.SimRuntime.iOS-14-3`
+ if ios_runtime_build_version.lower() in runtime.lower():
+ return True
+
+ return False
+
+ def _get_ios_runtime_build_version(self, runtime_version, xcode_version=None):
+ '''Gets the iOS runtime build version from CIPD.
+
+ If `xcode_version` is provided, it will use it to search for the CIPD package.
+ If not provided, the `runtime_version` will be used. In both cases, it ensures
+ the found package matches the `runtime_version`.
+
+ Args:
+ runtime_version: (string) An iOS version used to find and match the CIPD package (e.g. "ios-16-4")
+ xcode_version: (string) A version of Xcode to use to find CIPD package (e.g. "14e300c").
+ Returns:
+ A string of the build version or None if unable to get the build version.
+ '''
+
+ search_ref = runtime_version
+ if xcode_version is not None:
+ search_ref = xcode_version
+
+ try:
+ description = self.m.cipd.describe(
+ '%s/ios_runtime_dmg' % self._xcode_cipd_package_source,
+ search_ref,
+ )
+ runtime_tag = None
+ build_tag = None
+ for tag in description.tags:
+ if 'ios_runtime_version' in tag.tag:
+ runtime_tag = self._parse_cipd_description_tag(tag.tag)
+ if 'ios_runtime_build' in tag.tag:
+ build_tag = self._parse_cipd_description_tag(tag.tag)
+
+ if runtime_tag == runtime_version:
+ return build_tag
+
+ self.m.step.empty(
+ 'mismatching runtimes',
+ step_text='Found %s, expected %s' % (runtime_tag, runtime_version),
+ status=self.m.step.INFRA_FAILURE,
+ )
+
+ except self.m.step.StepFailure:
+ pass
+
+ return None
+
+ def _parse_cipd_description_tag(self, tag):
+ '''Parse a colon separated CIPD description tag.
+
+ Args:
+ tag: (string) A colon separated string describing a CIPD tag.
+ (e.g "ios_runtime_build:21A5303d" or "ios_runtime_version:ios-17-0")
+ Returns:
+ A string of the value following the colon or None if unable to parse.
+ '''
+ tag_parts = tag.split(':')
+ if len(tag_parts) == 2:
+ return tag_parts[1]
+ return None
diff --git a/recipe_modules/osx_sdk/examples/full.expected/explicit_invalid_runtime_version_with_mac_13.json b/recipe_modules/osx_sdk/examples/full.expected/explicit_invalid_runtime_version_with_mac_13.json
new file mode 100644
index 0000000..b9a1b38
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/explicit_invalid_runtime_version_with_mac_13.json
@@ -0,0 +1,105 @@
+[
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_ios-16-2",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_ios-16-2/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_ios-16-2/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes",
+ "~followup_annotations": [
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_ios-16-2/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.Invalid runtime version ios-16-4",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "failure": {
+ "humanReason": "Infra Failure: Step('install runtimes.Invalid runtime version ios-16-4') (retcode: 0)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/explicit_package_source.json b/recipe_modules/osx_sdk/examples/full.expected/explicit_package_source.json
new file mode 100644
index 0000000..bbe3b60
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/explicit_package_source.json
@@ -0,0 +1,423 @@
+[
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "[CACHE]/osx_sdk/xcode_deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "some/package",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "[CACHE]/osx_sdk/xcode_deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache (2)"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (2)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "some/package",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install xcode (2)"
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (2)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (2)"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "/opt/flutter/xcode/deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache (3)"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_1/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (3)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_1/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "some/package",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install xcode (3)"
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (3)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (3)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (3)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes (2)"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "/opt/flutter/xcode/deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache (4)"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_2/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (4)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_2/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "some/package",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install xcode (4)"
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (4)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (4)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (4)"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn (2)"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode (2)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version.json b/recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version.json
index b7e8180..6d11286 100644
--- a/recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version.json
+++ b/recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version.json
@@ -46,6 +46,10 @@
"name": "install xcode"
},
{
+ "cmd": [],
+ "name": "install runtimes"
+ },
+ {
"cmd": [
"vpython3",
"-u",
@@ -58,7 +62,10 @@
"[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes"
],
"infra_step": true,
- "name": "Ensuring runtimes directory"
+ "name": "install runtimes.Ensuring runtimes directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
},
{
"cmd": [
@@ -72,7 +79,10 @@
"[CACHE]/osx_sdk/xcode_runtime_ios-14-0"
],
"infra_step": true,
- "name": "install xcode runtime ios-14-0"
+ "name": "install runtimes.install xcode runtime ios-14-0",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
},
{
"cmd": [
@@ -87,7 +97,10 @@
"[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 14.0.simruntime"
],
"infra_step": true,
- "name": "Copy runtime to [CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 14.0.simruntime"
+ "name": "install runtimes.Copy runtime to [CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 14.0.simruntime",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
},
{
"cmd": [
@@ -101,7 +114,10 @@
"[CACHE]/osx_sdk/xcode_runtime_ios-13-0"
],
"infra_step": true,
- "name": "install xcode runtime ios-13-0"
+ "name": "install runtimes.install xcode runtime ios-13-0",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
},
{
"cmd": [
@@ -116,7 +132,10 @@
"[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.0.simruntime"
],
"infra_step": true,
- "name": "Copy runtime to [CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.0.simruntime"
+ "name": "install runtimes.Copy runtime to [CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.0.simruntime",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
},
{
"cmd": [
diff --git a/recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stderr.json b/recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stderr.json
new file mode 100644
index 0000000..619056c
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stderr.json
@@ -0,0 +1,117 @@
+[
+ {
+ "cmd": [
+ "rm",
+ "-rf",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache",
+ "~followup_annotations": [
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Some error@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache.Failed to delete runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_TEXT@Some error@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "failure": {
+ "humanReason": "Infra Failure: Step('Cleaning up runtimes cache.Failed to delete runtimes') (retcode: 0)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stdout.json b/recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stdout.json
new file mode 100644
index 0000000..3d555cc
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stdout.json
@@ -0,0 +1,116 @@
+[
+ {
+ "cmd": [
+ "rm",
+ "-rf",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache",
+ "~followup_annotations": [
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c_ios-16-2_14c18/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache.Failed to delete runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_TEXT@Some error@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "failure": {
+ "humanReason": "Infra Failure: Step('Cleaning up runtimes cache.Failed to delete runtimes') (retcode: 0)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/mac_13_cleanup_no_runtimes.json b/recipe_modules/osx_sdk/examples/full.expected/mac_13_cleanup_no_runtimes.json
new file mode 100644
index 0000000..8374f79
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/mac_13_cleanup_no_runtimes.json
@@ -0,0 +1,639 @@
+[
+ {
+ "cmd": [
+ "rm",
+ "-rf",
+ "[CACHE]/osx_sdk/xcode_deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes"
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.install xcode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes"
+ },
+ {
+ "cmd": [
+ "rm",
+ "-rf",
+ "[CACHE]/osx_sdk/xcode_deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache (2)"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (2)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install xcode (2)"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (2).select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (2).Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes (2)"
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install runtimes (2).install xcode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (2)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (2)"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "/opt/flutter/xcode/deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache (3)"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_1/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (3)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_1/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install xcode (3)"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache (3)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (3).select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (3).Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes (3)"
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_1/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install runtimes (3).install xcode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (3)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (3)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (3)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes (2)"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "/opt/flutter/xcode/deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache (4)"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_2/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (4)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_2/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install xcode (4)"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache (4)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (4).select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (4).Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes (4)"
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_2/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=True"
+ ],
+ "infra_step": true,
+ "name": "install runtimes (4).install xcode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (4)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (4)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (4)"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn (2)"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode (2)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_already_mounted.json b/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_already_mounted.json
new file mode 100644
index 0000000..b7d655f
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_already_mounted.json
@@ -0,0 +1,534 @@
+[
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@== Runtimes ==@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@iOS 16.4 (16.4 - 20E247) - com.apple.CoreSimulator.SimRuntime.iOS-16-4@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/mac_toolchain",
+ "install-runtime-dmg",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-runtime-version",
+ "ios-16-4",
+ "-xcode-version",
+ "14e300c",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.install xcode runtime ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list xcode runtime dmg ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "describe",
+ "infra_internal/ios/xcode/ios_runtime_dmg",
+ "-version",
+ "14e300c",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"pin\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-14e300c---------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/ios/xcode/ios_runtime_dmg\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"refs\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"modified_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"modified_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ref\": \"latest\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ],@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"buildbot_build:some.waterfall/builder/1234\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"git_repository:https://chromium.googlesource.com/some/repo\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "describe",
+ "infra_internal/ios/xcode/ios_runtime_dmg",
+ "-version",
+ "ios-16-4",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg (2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"pin\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"xxx\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"ios_runtime_build:20e247\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"ios_runtime_version:ios-16-4\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.runtime build version",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_TEXT@20e247@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_1/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (2)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_1/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode (2)"
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (2)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (2)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes (2)"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "/opt/flutter/xcode/deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_2/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (3)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_2/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode (3)"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up runtime cache ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (3)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (3)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (3)"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn (2)"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode (2)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_build_verion_failure.json b/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_build_verion_failure.json
new file mode 100644
index 0000000..4aea748
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_build_verion_failure.json
@@ -0,0 +1,246 @@
+[
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes",
+ "~followup_annotations": [
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@== Runtimes ==@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/mac_toolchain",
+ "install-runtime-dmg",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-runtime-version",
+ "ios-16-4",
+ "-xcode-version",
+ "14e300c",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.install xcode runtime ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list xcode runtime dmg ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "describe",
+ "infra_internal/ios/xcode/ios_runtime_dmg",
+ "-version",
+ "14e300c",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"pin\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-14e300c---------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/ios/xcode/ios_runtime_dmg\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"refs\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"modified_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"modified_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ref\": \"latest\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ],@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"buildbot_build:some.waterfall/builder/1234\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"git_repository:https://chromium.googlesource.com/some/repo\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "describe",
+ "infra_internal/ios/xcode/ios_runtime_dmg",
+ "-version",
+ "ios-16-4",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg (2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"pin\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"xxx\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"ios_runtime_build_invalid_tag\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.mismatching runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_TEXT@Found None, expected ios-16-4@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.Failed to get runtime build version",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "failure": {
+ "humanReason": "Infra Failure: Step('install runtimes.cipd describe ios-16-4_14e300c.Failed to get runtime build version') (retcode: 0)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_clean.json b/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_clean.json
new file mode 100644
index 0000000..95ebb4f
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_clean.json
@@ -0,0 +1,612 @@
+[
+ {
+ "cmd": [
+ "rm",
+ "-rf",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@No matching images found to delete@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up runtime cache ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/mac_toolchain",
+ "install-runtime-dmg",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-runtime-version",
+ "ios-16-4",
+ "-xcode-version",
+ "14e300c",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.install xcode runtime ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list xcode runtime dmg ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "describe",
+ "infra_internal/ios/xcode/ios_runtime_dmg",
+ "-version",
+ "14e300c",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"pin\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"xxx\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"ios_runtime_build:20e247\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"ios_runtime_version:ios-16-4\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.runtime build version",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_TEXT@20e247@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "add",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c/iOS-16-4.dmg"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.verify and mount runtime ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "/opt/flutter/xcode/deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache (2)"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_1/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (2)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_1/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode (2)"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (2).select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (2).Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (2).Cleaning up runtime cache ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (2)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (2)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes (2)"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "/opt/flutter/xcode/deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache (3)"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_2/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (3)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_2/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode (3)"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache (3)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (3).select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (3).Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache (3).Cleaning up runtime cache ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (3)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (3)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (3)"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn (2)"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode (2)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_not_mounted.json b/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_not_mounted.json
new file mode 100644
index 0000000..ca4f3ad
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_not_mounted.json
@@ -0,0 +1,547 @@
+[
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode"
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@== Runtimes ==@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/mac_toolchain",
+ "install-runtime-dmg",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-runtime-version",
+ "ios-16-4",
+ "-xcode-version",
+ "14e300c",
+ "-output-dir",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.install xcode runtime ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.list xcode runtime dmg ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "describe",
+ "infra_internal/ios/xcode/ios_runtime_dmg",
+ "-version",
+ "14e300c",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"pin\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-14e300c---------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/ios/xcode/ios_runtime_dmg\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"refs\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"modified_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"modified_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ref\": \"latest\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ],@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"buildbot_build:some.waterfall/builder/1234\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"git_repository:https://chromium.googlesource.com/some/repo\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"user:44-blablbla@developer.gserviceaccount.com\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": 1446574210,@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "describe",
+ "infra_internal/ios/xcode/ios_runtime_dmg",
+ "-version",
+ "ios-16-4",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg (2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"pin\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"xxx\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"ios_runtime_build:20e247\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ },@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_by\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"registered_ts\": \"xxx\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tag\": \"ios_runtime_version:ios-16-4\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "install runtimes.cipd describe ios-16-4_14e300c.runtime build version",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_TEXT@20e247@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "add",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c/iOS-16-4.dmg"
+ ],
+ "infra_step": true,
+ "name": "install runtimes.verify and mount runtime ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-16-4_14e300c/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_1/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (2)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_1/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode (2)"
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (2)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (2)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list",
+ "runtimes"
+ ],
+ "infra_step": true,
+ "name": "list runtimes (2)"
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "/opt/flutter/xcode/deadbeef"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up Xcode cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/tmp_tmp_2/osx_sdk",
+ "-ensure-file",
+ "infra/tools/mac_toolchain/${platform} 123abc",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed (3)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-123abc----------\",@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/tmp_tmp_2/osx_sdk/mac_toolchain",
+ "install",
+ "-kind",
+ "mac",
+ "-xcode-version",
+ "deadbeef",
+ "-output-dir",
+ "/opt/flutter/xcode/deadbeef/XCode.app",
+ "-cipd-package-prefix",
+ "infra_internal/ios/xcode",
+ "-with-runtime=False"
+ ],
+ "infra_step": true,
+ "name": "install xcode (3)"
+ },
+ {
+ "cmd": [],
+ "name": "Cleaning up runtimes cache"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.select XCode",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "runtime",
+ "delete",
+ "all"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up mounted simulator runtimes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython3",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "[CACHE]/osx_sdk/xcode_runtime_dmg_ios-16-4_14e300c"
+ ],
+ "infra_step": true,
+ "name": "Cleaning up runtimes cache.Cleaning up runtime cache ios-16-4_14e300c",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "killall",
+ "-9",
+ "com.apple.CoreSimulator.CoreSimulatorDevice"
+ ],
+ "infra_step": true,
+ "name": "kill dart (3)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--switch",
+ "/opt/flutter/xcode/deadbeef/XCode.app"
+ ],
+ "infra_step": true,
+ "name": "select XCode (3)"
+ },
+ {
+ "cmd": [
+ "xcrun",
+ "simctl",
+ "list"
+ ],
+ "infra_step": true,
+ "name": "list simulators (3)"
+ },
+ {
+ "cmd": [
+ "gn",
+ "gen",
+ "out/Release"
+ ],
+ "name": "gn (2)"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "out/Release"
+ ],
+ "name": "ninja (2)"
+ },
+ {
+ "cmd": [
+ "sudo",
+ "xcode-select",
+ "--reset"
+ ],
+ "infra_step": true,
+ "name": "reset XCode (2)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.py b/recipe_modules/osx_sdk/examples/full.py
index ca8ff74..ed9b2fc 100644
--- a/recipe_modules/osx_sdk/examples/full.py
+++ b/recipe_modules/osx_sdk/examples/full.py
@@ -6,6 +6,7 @@
'flutter/os_utils',
'flutter/osx_sdk',
'recipe_engine/file',
+ 'recipe_engine/json',
'recipe_engine/path',
'recipe_engine/platform',
'recipe_engine/properties',
@@ -91,3 +92,281 @@
api.platform.name('mac'),
api.platform.mac_release('10.1.0'),
)
+
+ yield api.test(
+ 'explicit_package_source', api.platform.name('mac'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef',
+ 'toolchain_ver': '123abc',
+ 'xcode_cipd_package_source': 'some/package',
+ 'cleanup_cache': True,
+ }
+ }
+ )
+ )
+
+ yield api.test(
+ 'explicit_invalid_runtime_version_with_mac_13',
+ api.platform.name('mac'),
+ api.platform.mac_release('13.5.1'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef', 'toolchain_ver': '123abc',
+ 'runtime_versions': ['ios-16-4', 'ios-16-2']
+ }
+ }
+ ),
+ status='INFRA_FAILURE'
+ )
+
+ yield api.test(
+ 'mac_13_explicit_runtime_version_already_mounted',
+ api.platform.name('mac'),
+ api.platform.mac_release('13.5.1'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef', 'toolchain_ver': '123abc',
+ 'runtime_versions': ['ios-16-4_14e300c']
+ }
+ }
+ ),
+ api.step_data(
+ 'install runtimes.list runtimes',
+ stdout=api.raw_io.output_text(
+ '== Runtimes ==\n' +
+ 'iOS 16.4 (16.4 - 20E247) - com.apple.CoreSimulator.SimRuntime.iOS-16-4'
+ )
+ ),
+ api.step_data(
+ 'install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg',
+ retcode=1
+ ),
+ api.step_data(
+ 'install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg (2)',
+ api.json.output({
+ 'result': {
+ 'pin': {'package': 'xxx', 'instance_id': 'xxx'},
+ 'registered_by':
+ 'xxx',
+ 'registered_ts':
+ 'xxx',
+ 'tags': [
+ {
+ 'tag': 'ios_runtime_build:20e247',
+ 'registered_by': 'xxx', 'registered_ts': 'xxx'
+ },
+ {
+ 'tag': 'ios_runtime_version:ios-16-4',
+ 'registered_by': 'xxx', 'registered_ts': 'xxx'
+ },
+ ],
+ }
+ }),
+ ),
+ api.step_data(
+ 'list runtimes',
+ stdout=api.raw_io.output_text(
+ '== Runtimes ==\n' +
+ 'iOS 16.4 (16.4 - 20E247) - com.apple.CoreSimulator.SimRuntime.iOS-16-4'
+ )
+ ),
+ )
+
+ yield api.test(
+ 'mac_13_explicit_runtime_version_not_mounted',
+ api.platform.name('mac'),
+ api.platform.mac_release('13.5.1'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef', 'toolchain_ver': '123abc',
+ 'runtime_versions': ['ios-16-4_14e300c']
+ }
+ }
+ ),
+ api.step_data(
+ 'install runtimes.list runtimes',
+ stdout=api.raw_io.output_text('== Runtimes ==\n')
+ ),
+ api.step_data(
+ 'install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg',
+ retcode=1
+ ),
+ api.step_data(
+ 'install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg (2)',
+ api.json.output({
+ 'result': {
+ 'pin': {'package': 'xxx', 'instance_id': 'xxx'},
+ 'registered_by':
+ 'xxx',
+ 'registered_ts':
+ 'xxx',
+ 'tags': [
+ {
+ 'tag': 'ios_runtime_build:20e247',
+ 'registered_by': 'xxx', 'registered_ts': 'xxx'
+ },
+ {
+ 'tag': 'ios_runtime_version:ios-16-4',
+ 'registered_by': 'xxx', 'registered_ts': 'xxx'
+ },
+ ],
+ }
+ }),
+ ),
+ api.step_data(
+ 'list runtimes',
+ stdout=api.raw_io.output_text(
+ '== Runtimes ==\n' +
+ 'iOS 16.4 (16.4 - 20E247) - com.apple.CoreSimulator.SimRuntime.iOS-16-4'
+ )
+ ),
+ )
+
+ yield api.test(
+ 'mac_13_explicit_runtime_version_build_verion_failure',
+ api.platform.name('mac'),
+ api.platform.mac_release('13.5.1'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef', 'toolchain_ver': '123abc',
+ 'runtime_versions': ['ios-16-4_14e300c']
+ }
+ }
+ ),
+ api.step_data(
+ 'install runtimes.list runtimes',
+ stdout=api.raw_io.output_text('== Runtimes ==\n')
+ ),
+ api.step_data(
+ 'install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg',
+ retcode=1
+ ),
+ api.step_data(
+ 'install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg (2)',
+ api.json.output({
+ 'result': {
+ 'pin': {'package': 'xxx', 'instance_id': 'xxx'},
+ 'registered_by':
+ 'xxx',
+ 'registered_ts':
+ 'xxx',
+ 'tags': [{
+ 'tag': 'ios_runtime_build_invalid_tag',
+ 'registered_by': 'xxx', 'registered_ts': 'xxx'
+ }],
+ }
+ }),
+ ),
+ status='INFRA_FAILURE'
+ )
+
+ yield api.test(
+ 'mac_13_explicit_runtime_version_clean',
+ api.platform.name('mac'),
+ api.platform.mac_release('13.5.1'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef',
+ 'toolchain_ver': '123abc',
+ 'runtime_versions': ['ios-16-4_14e300c'],
+ 'cleanup_cache': True,
+ }
+ }
+ ),
+ api.step_data(
+ 'Cleaning up runtimes cache.Cleaning up mounted simulator runtimes',
+ stdout=api.raw_io.output_text('No matching images found to delete'),
+ stderr=api.raw_io.output_text('No matching images found to delete')
+ ),
+ api.step_data(
+ 'install runtimes.cipd describe ios-16-4_14e300c.cipd describe infra_internal/ios/xcode/ios_runtime_dmg',
+ api.json.output({
+ 'result': {
+ 'pin': {'package': 'xxx', 'instance_id': 'xxx'},
+ 'registered_by':
+ 'xxx',
+ 'registered_ts':
+ 'xxx',
+ 'tags': [
+ {
+ 'tag': 'ios_runtime_build:20e247',
+ 'registered_by': 'xxx', 'registered_ts': 'xxx'
+ },
+ {
+ 'tag': 'ios_runtime_version:ios-16-4',
+ 'registered_by': 'xxx', 'registered_ts': 'xxx'
+ },
+ ],
+ }
+ }),
+ ),
+ api.step_data(
+ 'list runtimes',
+ stdout=api.raw_io.output_text(
+ '== Runtimes ==\n' +
+ 'iOS 16.4 (16.4 - 20E247) - com.apple.CoreSimulator.SimRuntime.iOS-16-4'
+ )
+ ),
+ )
+
+ yield api.test(
+ 'failed_to_delete_runtimes_err_in_stdout',
+ api.platform.name('mac'),
+ api.platform.mac_release('13.5.1'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef',
+ 'toolchain_ver': '123abc',
+ 'runtime_versions': ['ios-16-4_14e300c', 'ios-16-2_14c18'],
+ 'cleanup_cache': True,
+ }
+ }
+ ),
+ api.step_data(
+ 'Cleaning up runtimes cache.Cleaning up mounted simulator runtimes',
+ stdout=api.raw_io.output_text('Some error')
+ ),
+ status='INFRA_FAILURE'
+ )
+ yield api.test(
+ 'failed_to_delete_runtimes_err_in_stderr',
+ api.platform.name('mac'),
+ api.platform.mac_release('13.5.1'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef',
+ 'toolchain_ver': '123abc',
+ 'runtime_versions': ['ios-16-4_14e300c', 'ios-16-2_14c18'],
+ 'cleanup_cache': True,
+ }
+ }
+ ),
+ api.step_data(
+ 'Cleaning up runtimes cache.Cleaning up mounted simulator runtimes',
+ stderr=api.raw_io.output_text('Some error')
+ ),
+ status='INFRA_FAILURE'
+ )
+ yield api.test(
+ 'mac_13_cleanup_no_runtimes',
+ api.platform.name('mac'),
+ api.platform.mac_release('13.5.1'),
+ api.properties(
+ **{
+ '$flutter/osx_sdk': {
+ 'sdk_version': 'deadbeef',
+ 'toolchain_ver': '123abc',
+ 'cleanup_cache': True,
+ }
+ }
+ ),
+ )