Clean up xcode cache only when needed

This CL
1) cleans up only the specific versioned xcode when needed
2) cleans up xcode cache when explicitly asked by `cleanup_cache: true`
3) cleans up xcode cache when polluted

This is a no-op for existing workflows where xcode cache has been installed correctly.

This CL takes effect only when
1) new xcode version is being updated
2) a build is cancelled during xcode installation
which left over an incomplete xcode.

Change-Id: I9269204537c5dad4e1f2fec2f7a51f4d694c0473
Bug: https://github.com/flutter/flutter/issues/117541
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/42900
Reviewed-by: Ricardo Amador <ricardoamador@google.com>
Reviewed-by: Yusuf Mohsinally <mohsinally@google.com>
Commit-Queue: Keyong Han <keyonghan@google.com>
(cherry picked from commit c9902e4e5cfb4420978fe5b5ffd3de8840b37cec)
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/44546
Reviewed-by: Xilai Zhang <xilaizhang@google.com>
diff --git a/recipe_modules/adhoc_validation/examples/full.expected/mac.json b/recipe_modules/adhoc_validation/examples/full.expected/mac.json
index 5885cb1..ae4752e 100644
--- a/recipe_modules/adhoc_validation/examples/full.expected/mac.json
+++ b/recipe_modules/adhoc_validation/examples/full.expected/mac.json
@@ -44,6 +44,34 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter sdk/bin",
+        "[START_DIR]/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "name": "Docs.xcode not installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipe_modules/osx_sdk/api.py b/recipe_modules/osx_sdk/api.py
index d1abca9..daf6fda 100644
--- a/recipe_modules/osx_sdk/api.py
+++ b/recipe_modules/osx_sdk/api.py
@@ -49,12 +49,6 @@
     self._tool_ver = 'latest'
     self._cleanup_cache = False
 
-  def _clean_cache(self):
-    # TODO(keyonghan): ideally we can cleanup a specific version of xcode cache.
-    # https://github.com/flutter/flutter/issues/117541
-    if self._cleanup_cache:
-      self.m.file.rmtree('Cleaning up Xcode cache', self.m.path['cache'].join('osx_sdk'))
-
   def initialize(self):
     """Initializes xcode, and ios versions.
 
@@ -71,7 +65,11 @@
       self._tool_ver = self._sdk_properties['toolchain_ver'].lower()
 
     if 'runtime_versions' in self._sdk_properties:
-      self._runtime_versions = self._sdk_properties['runtime_versions']
+      # Sorts the runtime versions to make xcode cache path deterministic, without
+      # being affected by how user orders the runtime versions.
+      runtime_versions = self._sdk_properties['runtime_versions']
+      runtime_versions.sort(reverse=True)
+      self._runtime_versions = runtime_versions
 
     if 'sdk_version' in self._sdk_properties:
       self._sdk_version = self._sdk_properties['sdk_version'].lower()
@@ -142,19 +140,20 @@
     finally:
       with self.m.context(infra_steps=True):
         self.m.step('reset XCode', ['sudo', 'xcode-select', '--reset'])
-        self._clean_cache()
+
+  def _clean_cache(self):
+    """Cleans up cache when specified or polluted.
+
+    Cleans up only corresponding versioned xcode instead of the whole `osx_sdk`.
+    """
+    if self._cleanup_cache or self._cache_polluted():
+      self.m.file.rmtree('Cleaning up Xcode cache', self._cache_dir())
 
   def _ensure_sdk(self, kind):
-    """Ensures the mac_toolchain tool and OS X SDK packages are installed.
+    """Ensures the mac_toolchain tool and OSX SDK packages are installed.
 
     Returns Path to the installed sdk app bundle."""
-    runtime_version = None
-    sdk_version = 'xcode_' + self._sdk_version
-    if self._runtime_versions:
-      runtime_version = "_".join(self._runtime_versions)
-      sdk_version = sdk_version + '_runtime_' + runtime_version
-    cache_dir = self.m.path['cache'].join(_XCODE_CACHE_PATH).join(sdk_version)
-
+    cache_dir = self._cache_dir()
     ef = self.m.cipd.EnsureFile()
     ef.add_package(self._tool_pkg, self._tool_ver)
     self.m.cipd.ensure(cache_dir, ef)
@@ -208,3 +207,68 @@
           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)
     return sdk_app
+
+  def _cache_polluted(self):
+    """Checks if cache is polluted.
+
+    CIPD ensures package whenever called, but just checks on some levels, like
+    `.xcode_versions` and `.cipd`. It misses the case where the `xcode` and runtime
+    are finished installing, but the files are not finished copying over to destination.
+
+    The above case causes cache polluted where xcode is installed incompletely:
+    the xcode path exists but no runtime exists.
+
+    All installed xcode contains runtime, either the default one or the extra
+    specified runtimes by tests.
+
+    This is a workaround to detect incomplete xcode installation as cipd is not
+    able to detect some incomplete installation cases and reinstall.
+    """
+    cache_polluted = False
+    sdk_app_dir = self._cache_dir()
+    if not self.m.path.exists(sdk_app_dir):
+      self.m.step('xcode not installed', ['echo', sdk_app_dir])
+      return cache_polluted
+    if not self._runtime_exists():
+      cache_polluted = True
+      self.m.step('cache polluted due to missing runtime', ['echo', 'xcode is installed without runtime'])
+    return cache_polluted
+
+  def _cache_dir(self):
+    """Returns xcode cache dir.
+
+    For an xcode without runtime, the path looks like
+        xcode_<xcode-version>
+
+    For an xcode with runtimes, the path looks like
+        xcode_<xcode-version>_runtime1_<runtime1-version>_..._runtimeN_<runtimeN-version>
+    """
+    runtime_version = None
+    sdk_version = 'xcode_' + self._sdk_version
+    if self._runtime_versions:
+      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_exists(self):
+    """Checks runtime existence in the installed xcode.
+
+    Checks `iOS.simruntime` for default runtime.
+    Checks each specific runtime version for specified ones.
+    """
+    runtime_exists = True
+    sdk_app_dir = self._cache_dir().join('XCode.app')
+    if self._runtime_versions:
+      for version in self._runtime_versions:
+        runtime_name = 'iOS %s.simruntime' % version.lower().replace('ios-', '').replace('-', '.')
+        runtime_path = sdk_app_dir.join(*_RUNTIMESPATH).join(runtime_name)
+        if not self.m.path.exists(runtime_path):
+          runtime_exists = False
+          self.m.step('runtime: %s does not exist' % runtime_name, ['echo', runtime_path])
+          break
+    else:
+      runtime_path = sdk_app_dir.join(*_RUNTIMESPATH).join('iOS.simruntime')
+      if not self.m.path.exists(runtime_path):
+        runtime_exists = False
+        self.m.step('iOS.simruntime does not exists', ['echo', runtime_path])
+    return runtime_exists
diff --git a/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json b/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json
index 1424d8e..82b44ac 100644
--- a/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json
+++ b/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json
@@ -1,6 +1,14 @@
 [
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9c40b"
+    ],
+    "infra_step": true,
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json b/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json
index fccf182..2648907 100644
--- a/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json
+++ b/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json
@@ -1,6 +1,14 @@
 [
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_12a7209"
+    ],
+    "infra_step": true,
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
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 b7b0b9a..193d491 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
@@ -1,10 +1,39 @@
 [
   {
     "cmd": [
+      "echo",
+      "[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": "runtime: iOS 14.0.simruntime does not exist"
+  },
+  {
+    "cmd": [
+      "echo",
+      "xcode is installed without runtime"
+    ],
+    "infra_step": true,
+    "name": "cache polluted due to missing runtime"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "rmtree",
+      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0"
+    ],
+    "infra_step": true,
+    "name": "Cleaning up Xcode cache"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0",
+      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0",
       "-ensure-file",
       "infra/tools/mac_toolchain/${platform} 123abc",
       "-max-threads",
@@ -30,14 +59,14 @@
   },
   {
     "cmd": [
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/mac_toolchain",
+      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/mac_toolchain",
       "install",
       "-kind",
       "mac",
       "-xcode-version",
       "deadbeef",
       "-output-dir",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/XCode.app",
+      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app",
       "-cipd-package-prefix",
       "flutter_internal/ios/xcode",
       "-with-runtime=False"
@@ -55,43 +84,14 @@
       "ensure-directory",
       "--mode",
       "0777",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes"
+      "[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"
   },
   {
     "cmd": [
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/mac_toolchain",
-      "install-runtime",
-      "-cipd-package-prefix",
-      "flutter_internal/ios/xcode",
-      "-runtime-version",
-      "ios-13-0",
-      "-output-dir",
-      "[CACHE]/osx_sdk/xcode_runtime_ios-13-0"
-    ],
-    "infra_step": true,
-    "name": "install xcode runtime ios-13-0"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copytree",
-      "--symlinks",
-      "[CACHE]/osx_sdk/xcode_runtime_ios-13-0/iOS.simruntime",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-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-13-0_ios-14-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.0.simruntime"
-  },
-  {
-    "cmd": [
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/mac_toolchain",
+      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/mac_toolchain",
       "install-runtime",
       "-cipd-package-prefix",
       "flutter_internal/ios/xcode",
@@ -113,10 +113,39 @@
       "copytree",
       "--symlinks",
       "[CACHE]/osx_sdk/xcode_runtime_ios-14-0/iOS.simruntime",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 14.0.simruntime"
+      "[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-13-0_ios-14-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 14.0.simruntime"
+    "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"
+  },
+  {
+    "cmd": [
+      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/mac_toolchain",
+      "install-runtime",
+      "-cipd-package-prefix",
+      "flutter_internal/ios/xcode",
+      "-runtime-version",
+      "ios-13-0",
+      "-output-dir",
+      "[CACHE]/osx_sdk/xcode_runtime_ios-13-0"
+    ],
+    "infra_step": true,
+    "name": "install xcode runtime ios-13-0"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copytree",
+      "--symlinks",
+      "[CACHE]/osx_sdk/xcode_runtime_ios-13-0/iOS.simruntime",
+      "[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"
   },
   {
     "cmd": [
@@ -132,7 +161,7 @@
       "sudo",
       "xcode-select",
       "--switch",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/XCode.app"
+      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-14-0_ios-13-0/XCode.app"
     ],
     "infra_step": true,
     "name": "select XCode"
diff --git a/recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version_nosymlink.json b/recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version_nosymlink.json
deleted file mode 100644
index b7b0b9a..0000000
--- a/recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version_nosymlink.json
+++ /dev/null
@@ -1,177 +0,0 @@
-[
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0",
-      "-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-13-0_ios-14-0/mac_toolchain",
-      "install",
-      "-kind",
-      "mac",
-      "-xcode-version",
-      "deadbeef",
-      "-output-dir",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/XCode.app",
-      "-cipd-package-prefix",
-      "flutter_internal/ios/xcode",
-      "-with-runtime=False"
-    ],
-    "infra_step": true,
-    "name": "install xcode"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes"
-    ],
-    "infra_step": true,
-    "name": "Ensuring runtimes directory"
-  },
-  {
-    "cmd": [
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/mac_toolchain",
-      "install-runtime",
-      "-cipd-package-prefix",
-      "flutter_internal/ios/xcode",
-      "-runtime-version",
-      "ios-13-0",
-      "-output-dir",
-      "[CACHE]/osx_sdk/xcode_runtime_ios-13-0"
-    ],
-    "infra_step": true,
-    "name": "install xcode runtime ios-13-0"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copytree",
-      "--symlinks",
-      "[CACHE]/osx_sdk/xcode_runtime_ios-13-0/iOS.simruntime",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-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-13-0_ios-14-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 13.0.simruntime"
-  },
-  {
-    "cmd": [
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-0/mac_toolchain",
-      "install-runtime",
-      "-cipd-package-prefix",
-      "flutter_internal/ios/xcode",
-      "-runtime-version",
-      "ios-14-0",
-      "-output-dir",
-      "[CACHE]/osx_sdk/xcode_runtime_ios-14-0"
-    ],
-    "infra_step": true,
-    "name": "install xcode runtime ios-14-0"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copytree",
-      "--symlinks",
-      "[CACHE]/osx_sdk/xcode_runtime_ios-14-0/iOS.simruntime",
-      "[CACHE]/osx_sdk/xcode_deadbeef_runtime_ios-13-0_ios-14-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-13-0_ios-14-0/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 14.0.simruntime"
-  },
-  {
-    "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-13-0_ios-14-0/XCode.app"
-    ],
-    "infra_step": true,
-    "name": "select XCode"
-  },
-  {
-    "cmd": [
-      "xcrun",
-      "simctl",
-      "list"
-    ],
-    "infra_step": true,
-    "name": "list simulators"
-  },
-  {
-    "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"
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json b/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json
index 356c389..8c52cf8 100644
--- a/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json
+++ b/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json
@@ -7,7 +7,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "rmtree",
-      "[CACHE]/osx_sdk"
+      "[CACHE]/osx_sdk/xcode_deadbeef"
     ],
     "infra_step": true,
     "name": "Cleaning up Xcode cache"
@@ -112,19 +112,6 @@
     "name": "reset XCode"
   },
   {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "rmtree",
-      "[CACHE]/osx_sdk"
-    ],
-    "infra_step": true,
-    "name": "Cleaning up Xcode cache (2)"
-  },
-  {
     "name": "$result"
   }
 ]
\ No newline at end of file
diff --git a/recipe_modules/osx_sdk/examples/full.expected/mac.json b/recipe_modules/osx_sdk/examples/full.expected/mac.json
index 708d77e..58a24d1 100644
--- a/recipe_modules/osx_sdk/examples/full.expected/mac.json
+++ b/recipe_modules/osx_sdk/examples/full.expected/mac.json
@@ -1,6 +1,14 @@
 [
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "infra_step": true,
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipe_modules/osx_sdk/examples/full.expected/no_runtime_version.json b/recipe_modules/osx_sdk/examples/full.expected/no_runtime_version.json
new file mode 100644
index 0000000..0d4547e
--- /dev/null
+++ b/recipe_modules/osx_sdk/examples/full.expected/no_runtime_version.json
@@ -0,0 +1,133 @@
+[
+  {
+    "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_deadbeef/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime"
+    ],
+    "infra_step": true,
+    "name": "iOS.simruntime does not exists"
+  },
+  {
+    "cmd": [
+      "echo",
+      "xcode is installed without runtime"
+    ],
+    "infra_step": true,
+    "name": "cache polluted due to missing runtime"
+  },
+  {
+    "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",
+      "flutter_internal/ios/xcode",
+      "-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": [
+      "gn",
+      "gen",
+      "out/Release"
+    ],
+    "name": "gn"
+  },
+  {
+    "cmd": [
+      "ninja",
+      "-C",
+      "out/Release"
+    ],
+    "name": "ninja"
+  },
+  {
+    "cmd": [
+      "sudo",
+      "xcode-select",
+      "--reset"
+    ],
+    "infra_step": true,
+    "name": "reset XCode"
+  },
+  {
+    "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 daa4ebb..c428caa 100644
--- a/recipe_modules/osx_sdk/examples/full.py
+++ b/recipe_modules/osx_sdk/examples/full.py
@@ -33,21 +33,15 @@
       }})
   )
 
-  p = api.path['cache'].join(
-      'osx_sdk', 'XCode.app', 'Contents', 'Developer', 'Platforms',
+  runtime_path = api.path['cache'].join(
+      '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')
 
-  yield api.test(
-      'explicit_runtime_version_nosymlink',
-      api.platform.name('mac'),
-      api.properties(**{'$flutter/osx_sdk': {
-          'sdk_version': 'deadbeef', 'toolchain_ver': '123abc',
-          'runtime_versions': ['ios-13-0', 'ios-14-0']
-      }}),
-      api.os_utils.is_symlink(True),
-      api.path.exists(p),
-  )
+  sdk_app_path = api.path['cache'].join('osx_sdk',
+                                       'xcode_deadbeef',
+                                       'XCode.app')
 
   yield api.test(
       'explicit_runtime_version',
@@ -57,7 +51,24 @@
           'runtime_versions': ['ios-13-0', 'ios-14-0']
       }}),
       api.os_utils.is_symlink(False),
-      api.path.exists(p),
+      api.path.exists(runtime_path),
+  )
+
+  runtime_path = api.path['cache'].join(
+      'osx_sdk', 'xcode_deadbeef',
+      'XCode.app', 'Contents', 'Developer', 'Platforms',
+      'iPhoneOS.platform', 'Library', 'Developer', 'CoreSimulator',
+      'Profiles', 'Runtimes', 'iOS.simruntime')
+
+  yield api.test(
+      'no_runtime_version',
+      api.platform.name('mac'),
+      api.properties(**{'$flutter/osx_sdk': {
+          'sdk_version': 'deadbeef', 'toolchain_ver': '123abc',
+      }}),
+      api.os_utils.is_symlink(False),
+      api.path.exists(runtime_path),
+      api.path.exists(sdk_app_path),
   )
 
   yield api.test(
diff --git a/recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json b/recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json
index a331b4f..57675e9 100644
--- a/recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json
+++ b/recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json
@@ -536,6 +536,47 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+      "USE_EMULATOR": null
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json b/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json
index cabebc9..bc55fb9 100644
--- a/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json
+++ b/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json
@@ -536,6 +536,47 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+      "USE_EMULATOR": null
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json b/recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json
index 7ef01c0..e23a2b8 100644
--- a/recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json
+++ b/recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json
@@ -456,6 +456,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_deadbeef"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_flutter_flutter-3.8-candidate.10.json
index 141097d..2c2c33d 100644
--- a/recipes/engine/engine.expected/mac_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_flutter_main.json b/recipes/engine/engine.expected/mac_flutter_main.json
index 19ec7cb..ce80645 100644
--- a/recipes/engine/engine.expected/mac_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_font_subset_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_font_subset_flutter_flutter-3.8-candidate.10.json
index 141097d..2c2c33d 100644
--- a/recipes/engine/engine.expected/mac_font_subset_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_font_subset_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_font_subset_flutter_main.json b/recipes/engine/engine.expected/mac_font_subset_flutter_main.json
index 19ec7cb..ce80645 100644
--- a/recipes/engine/engine.expected/mac_font_subset_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_font_subset_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_font_subset_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_font_subset_prod_flutter-3.8-candidate.10.json
index ff1faa6..bd625a2 100644
--- a/recipes/engine/engine.expected/mac_font_subset_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_font_subset_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_font_subset_prod_main.json b/recipes/engine/engine.expected/mac_font_subset_prod_main.json
index 5d5b256..c8ea2a5 100644
--- a/recipes/engine/engine.expected/mac_font_subset_prod_main.json
+++ b/recipes/engine/engine.expected/mac_font_subset_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_font_subset_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_font_subset_staging_flutter-3.8-candidate.10.json
index f12bd90..c5b7bf1 100644
--- a/recipes/engine/engine.expected/mac_font_subset_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_font_subset_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_font_subset_staging_main.json b/recipes/engine/engine.expected/mac_font_subset_staging_main.json
index 0de90b7..9873e05 100644
--- a/recipes/engine/engine.expected/mac_font_subset_staging_main.json
+++ b/recipes/engine/engine.expected/mac_font_subset_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_no_lto_flutter_flutter-3.8-candidate.10.json
index 7907e90..e85c448 100644
--- a/recipes/engine/engine.expected/mac_no_lto_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_no_lto_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_flutter_main.json b/recipes/engine/engine.expected/mac_no_lto_flutter_main.json
index 33a7e7f..d576171 100644
--- a/recipes/engine/engine.expected/mac_no_lto_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_no_lto_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
index 7907e90..e85c448 100644
--- a/recipes/engine/engine.expected/mac_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_font_subset_flutter_main.json b/recipes/engine/engine.expected/mac_no_lto_font_subset_flutter_main.json
index 33a7e7f..d576171 100644
--- a/recipes/engine/engine.expected/mac_no_lto_font_subset_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_no_lto_font_subset_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_font_subset_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
index 2f288ec..0f02167 100644
--- a/recipes/engine/engine.expected/mac_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_font_subset_prod_main.json b/recipes/engine/engine.expected/mac_no_lto_font_subset_prod_main.json
index 4e9a129..eb35b96 100644
--- a/recipes/engine/engine.expected/mac_no_lto_font_subset_prod_main.json
+++ b/recipes/engine/engine.expected/mac_no_lto_font_subset_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_font_subset_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
index 6c99202..711fb1e 100644
--- a/recipes/engine/engine.expected/mac_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_font_subset_staging_main.json b/recipes/engine/engine.expected/mac_no_lto_font_subset_staging_main.json
index a3eba81..c747513 100644
--- a/recipes/engine/engine.expected/mac_no_lto_font_subset_staging_main.json
+++ b/recipes/engine/engine.expected/mac_no_lto_font_subset_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_no_lto_prod_flutter-3.8-candidate.10.json
index 2f288ec..0f02167 100644
--- a/recipes/engine/engine.expected/mac_no_lto_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_no_lto_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_prod_main.json b/recipes/engine/engine.expected/mac_no_lto_prod_main.json
index 4e9a129..eb35b96 100644
--- a/recipes/engine/engine.expected/mac_no_lto_prod_main.json
+++ b/recipes/engine/engine.expected/mac_no_lto_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_no_lto_staging_flutter-3.8-candidate.10.json
index 6c99202..711fb1e 100644
--- a/recipes/engine/engine.expected/mac_no_lto_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_no_lto_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_no_lto_staging_main.json b/recipes/engine/engine.expected/mac_no_lto_staging_main.json
index a3eba81..c747513 100644
--- a/recipes/engine/engine.expected/mac_no_lto_staging_main.json
+++ b/recipes/engine/engine.expected/mac_no_lto_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_prod_flutter-3.8-candidate.10.json
index ff1faa6..bd625a2 100644
--- a/recipes/engine/engine.expected/mac_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_prod_main.json b/recipes/engine/engine.expected/mac_prod_main.json
index 5d5b256..c8ea2a5 100644
--- a/recipes/engine/engine.expected/mac_prod_main.json
+++ b/recipes/engine/engine.expected/mac_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_flutter_flutter-3.8-candidate.10.json
index 141097d..2c2c33d 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_flutter_main.json b/recipes/engine/engine.expected/mac_publish_cipd_flutter_main.json
index 19ec7cb..ce80645 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_flutter_flutter-3.8-candidate.10.json
index 141097d..2c2c33d 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_flutter_main.json b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_flutter_main.json
index 19ec7cb..ce80645 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_prod_flutter-3.8-candidate.10.json
index ff1faa6..bd625a2 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_prod_main.json b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_prod_main.json
index 5d5b256..c8ea2a5 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_prod_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_staging_flutter-3.8-candidate.10.json
index f12bd90..c5b7bf1 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_staging_main.json b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_staging_main.json
index 0de90b7..9873e05 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_font_subset_staging_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_font_subset_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_flutter_flutter-3.8-candidate.10.json
index 7907e90..e85c448 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_flutter_main.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_flutter_main.json
index 33a7e7f..d576171 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
index 7907e90..e85c448 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_flutter_main.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_flutter_main.json
index 33a7e7f..d576171 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
index 2f288ec..0f02167 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_prod_main.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_prod_main.json
index 4e9a129..eb35b96 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_prod_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
index 6c99202..711fb1e 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_staging_main.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_staging_main.json
index a3eba81..c747513 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_staging_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_font_subset_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_prod_flutter-3.8-candidate.10.json
index 2f288ec..0f02167 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_prod_main.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_prod_main.json
index 4e9a129..eb35b96 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_prod_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_staging_flutter-3.8-candidate.10.json
index 6c99202..711fb1e 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_staging_main.json b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_staging_main.json
index a3eba81..c747513 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_no_lto_staging_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_no_lto_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_prod_flutter-3.8-candidate.10.json
index ff1faa6..bd625a2 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_prod_main.json b/recipes/engine/engine.expected/mac_publish_cipd_prod_main.json
index 5d5b256..c8ea2a5 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_prod_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_publish_cipd_staging_flutter-3.8-candidate.10.json
index f12bd90..c5b7bf1 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_publish_cipd_staging_main.json b/recipes/engine/engine.expected/mac_publish_cipd_staging_main.json
index 0de90b7..9873e05 100644
--- a/recipes/engine/engine.expected/mac_publish_cipd_staging_main.json
+++ b/recipes/engine/engine.expected/mac_publish_cipd_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_staging_flutter-3.8-candidate.10.json
index f12bd90..c5b7bf1 100644
--- a/recipes/engine/engine.expected/mac_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_staging_main.json b/recipes/engine/engine.expected/mac_staging_main.json
index 0de90b7..9873e05 100644
--- a/recipes/engine/engine.expected/mac_staging_main.json
+++ b/recipes/engine/engine.expected/mac_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_flutter_flutter-3.8-candidate.10.json
index 8f8da24..530ec39 100644
--- a/recipes/engine/engine.expected/mac_upload_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_flutter_main.json b/recipes/engine/engine.expected/mac_upload_flutter_main.json
index fa1572b..56754fa 100644
--- a/recipes/engine/engine.expected/mac_upload_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_upload_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_font_subset_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_font_subset_flutter_flutter-3.8-candidate.10.json
index 8f8da24..530ec39 100644
--- a/recipes/engine/engine.expected/mac_upload_font_subset_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_font_subset_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_font_subset_flutter_main.json b/recipes/engine/engine.expected/mac_upload_font_subset_flutter_main.json
index fa1572b..56754fa 100644
--- a/recipes/engine/engine.expected/mac_upload_font_subset_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_upload_font_subset_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_font_subset_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_font_subset_prod_flutter-3.8-candidate.10.json
index fb0dbaa..45ae6d7 100644
--- a/recipes/engine/engine.expected/mac_upload_font_subset_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_font_subset_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_font_subset_prod_main.json b/recipes/engine/engine.expected/mac_upload_font_subset_prod_main.json
index 109ddce..42baf2d 100644
--- a/recipes/engine/engine.expected/mac_upload_font_subset_prod_main.json
+++ b/recipes/engine/engine.expected/mac_upload_font_subset_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_font_subset_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_font_subset_staging_flutter-3.8-candidate.10.json
index 1b2ddd9..e06bdbd 100644
--- a/recipes/engine/engine.expected/mac_upload_font_subset_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_font_subset_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_font_subset_staging_main.json b/recipes/engine/engine.expected/mac_upload_font_subset_staging_main.json
index 296a316..57c0217 100644
--- a/recipes/engine/engine.expected/mac_upload_font_subset_staging_main.json
+++ b/recipes/engine/engine.expected/mac_upload_font_subset_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_no_lto_flutter_flutter-3.8-candidate.10.json
index ac7a15a..747759a 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_flutter_main.json b/recipes/engine/engine.expected/mac_upload_no_lto_flutter_main.json
index 27e6163..ee1a7d7 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
index ac7a15a..747759a 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_flutter_main.json b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_flutter_main.json
index 27e6163..ee1a7d7 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
index a4c8c3c..28c846d 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_prod_main.json b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_prod_main.json
index ff3bdd8..c176616 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_prod_main.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
index 3defdba..ddbc1ad 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_staging_main.json b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_staging_main.json
index 3fa5718..0ec2fff 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_staging_main.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_font_subset_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_no_lto_prod_flutter-3.8-candidate.10.json
index a4c8c3c..28c846d 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_prod_main.json b/recipes/engine/engine.expected/mac_upload_no_lto_prod_main.json
index ff3bdd8..c176616 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_prod_main.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_no_lto_staging_flutter-3.8-candidate.10.json
index 3defdba..ddbc1ad 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_no_lto_staging_main.json b/recipes/engine/engine.expected/mac_upload_no_lto_staging_main.json
index 3fa5718..0ec2fff 100644
--- a/recipes/engine/engine.expected/mac_upload_no_lto_staging_main.json
+++ b/recipes/engine/engine.expected/mac_upload_no_lto_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_prod_flutter-3.8-candidate.10.json
index fb0dbaa..45ae6d7 100644
--- a/recipes/engine/engine.expected/mac_upload_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_prod_main.json b/recipes/engine/engine.expected/mac_upload_prod_main.json
index 109ddce..42baf2d 100644
--- a/recipes/engine/engine.expected/mac_upload_prod_main.json
+++ b/recipes/engine/engine.expected/mac_upload_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_flutter_flutter-3.8-candidate.10.json
index 8f8da24..530ec39 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_flutter_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_flutter_main.json
index fa1572b..56754fa 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_flutter_flutter-3.8-candidate.10.json
index 8f8da24..530ec39 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_flutter_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_flutter_main.json
index fa1572b..56754fa 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_prod_flutter-3.8-candidate.10.json
index fb0dbaa..45ae6d7 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_prod_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_prod_main.json
index 109ddce..42baf2d 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_prod_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_staging_flutter-3.8-candidate.10.json
index 1b2ddd9..e06bdbd 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_staging_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_staging_main.json
index 296a316..57c0217 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_staging_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_font_subset_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_flutter_flutter-3.8-candidate.10.json
index ac7a15a..747759a 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_flutter_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_flutter_main.json
index 27e6163..ee1a7d7 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
index ac7a15a..747759a 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_flutter_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_flutter_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_flutter_main.json
index 27e6163..ee1a7d7 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_flutter_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_flutter_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
index a4c8c3c..28c846d 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_prod_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_prod_main.json
index ff3bdd8..c176616 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_prod_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
index 3defdba..ddbc1ad 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_staging_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_staging_main.json
index 3fa5718..0ec2fff 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_staging_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_font_subset_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_prod_flutter-3.8-candidate.10.json
index a4c8c3c..28c846d 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_prod_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_prod_main.json
index ff3bdd8..c176616 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_prod_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_staging_flutter-3.8-candidate.10.json
index 3defdba..ddbc1ad 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_staging_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_staging_main.json
index 3fa5718..0ec2fff 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_staging_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_no_lto_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_prod_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_prod_flutter-3.8-candidate.10.json
index fb0dbaa..45ae6d7 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_prod_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_prod_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_prod_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_prod_main.json
index 109ddce..42baf2d 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_prod_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_prod_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_staging_flutter-3.8-candidate.10.json
index 1b2ddd9..e06bdbd 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_publish_cipd_staging_main.json b/recipes/engine/engine.expected/mac_upload_publish_cipd_staging_main.json
index 296a316..57c0217 100644
--- a/recipes/engine/engine.expected/mac_upload_publish_cipd_staging_main.json
+++ b/recipes/engine/engine.expected/mac_upload_publish_cipd_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_staging_flutter-3.8-candidate.10.json b/recipes/engine/engine.expected/mac_upload_staging_flutter-3.8-candidate.10.json
index 1b2ddd9..e06bdbd 100644
--- a/recipes/engine/engine.expected/mac_upload_staging_flutter-3.8-candidate.10.json
+++ b/recipes/engine/engine.expected/mac_upload_staging_flutter-3.8-candidate.10.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine.expected/mac_upload_staging_main.json b/recipes/engine/engine.expected/mac_upload_staging_main.json
index 296a316..57c0217 100644
--- a/recipes/engine/engine.expected/mac_upload_staging_main.json
+++ b/recipes/engine/engine.expected/mac_upload_staging_main.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:staging"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine_lint.expected/mac host all.json b/recipes/engine/engine_lint.expected/mac host all.json
index dfd1f3a..3d1e8da 100644
--- a/recipes/engine/engine_lint.expected/mac host all.json
+++ b/recipes/engine/engine_lint.expected/mac host all.json
@@ -368,6 +368,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine_lint.expected/mac host branch.json b/recipes/engine/engine_lint.expected/mac host branch.json
index dfd1f3a..3d1e8da 100644
--- a/recipes/engine/engine_lint.expected/mac host branch.json
+++ b/recipes/engine/engine_lint.expected/mac host branch.json
@@ -368,6 +368,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine_lint.expected/mac host head.json b/recipes/engine/engine_lint.expected/mac host head.json
index 49f80bd..3370002 100644
--- a/recipes/engine/engine_lint.expected/mac host head.json
+++ b/recipes/engine/engine_lint.expected/mac host head.json
@@ -368,6 +368,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine_lint.expected/mac ios all.json b/recipes/engine/engine_lint.expected/mac ios all.json
index dfd1f3a..3d1e8da 100644
--- a/recipes/engine/engine_lint.expected/mac ios all.json
+++ b/recipes/engine/engine_lint.expected/mac ios all.json
@@ -368,6 +368,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine_lint.expected/mac ios branch.json b/recipes/engine/engine_lint.expected/mac ios branch.json
index dfd1f3a..3d1e8da 100644
--- a/recipes/engine/engine_lint.expected/mac ios branch.json
+++ b/recipes/engine/engine_lint.expected/mac ios branch.json
@@ -368,6 +368,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine_lint.expected/mac ios head.json b/recipes/engine/engine_lint.expected/mac ios head.json
index 49f80bd..3370002 100644
--- a/recipes/engine/engine_lint.expected/mac ios head.json
+++ b/recipes/engine/engine_lint.expected/mac ios head.json
@@ -368,6 +368,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine_unopt.expected/mac.json b/recipes/engine/engine_unopt.expected/mac.json
index 6c787fa..2d9333e 100644
--- a/recipes/engine/engine_unopt.expected/mac.json
+++ b/recipes/engine/engine_unopt.expected/mac.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine/engine_unopt.expected/mac_lto.json b/recipes/engine/engine_unopt.expected/mac_lto.json
index 6c787fa..2d9333e 100644
--- a/recipes/engine/engine_unopt.expected/mac_lto.json
+++ b/recipes/engine/engine_unopt.expected/mac_lto.json
@@ -393,6 +393,46 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_PREBUILT_DART_SDK": "True",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine_v2/builder.expected/mac.json b/recipes/engine_v2/builder.expected/mac.json
index 95f1391..2f7494c 100644
--- a/recipes/engine_v2/builder.expected/mac.json
+++ b/recipes/engine_v2/builder.expected/mac.json
@@ -217,6 +217,26 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "xcode not installed"
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine_v2/engine_v2.expected/basic_mac.json b/recipes/engine_v2/engine_v2.expected/basic_mac.json
index 4e35269..3042d21 100644
--- a/recipes/engine_v2/engine_v2.expected/basic_mac.json
+++ b/recipes/engine_v2/engine_v2.expected/basic_mac.json
@@ -505,6 +505,29 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.xcode not installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",
diff --git a/recipes/engine_v2/engine_v2.expected/codesign_release_branch.json b/recipes/engine_v2/engine_v2.expected/codesign_release_branch.json
index 62f9866..c7119d5 100644
--- a/recipes/engine_v2/engine_v2.expected/codesign_release_branch.json
+++ b/recipes/engine_v2/engine_v2.expected/codesign_release_branch.json
@@ -971,6 +971,29 @@
   },
   {
     "cmd": [
+      "echo",
+      "[CACHE]/osx_sdk/xcode_9f2000"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.xcode not installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
       "cipd",
       "ensure",
       "-root",