Run global generators from inside an engine context.

This is required because some of the global generators are using dart
binaries.

Bug: https://github.com/flutter/flutter/issues/81855
Change-Id: I7ca33b1f7c79f213e8fd54631e572bc5fe6468f8
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/33620
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
Reviewed-by: Keyong Han <keyonghan@google.com>
diff --git a/recipes/engine_v2/engine_v2.expected/basic_linux.json b/recipes/engine_v2/engine_v2.expected/basic_linux.json
index 2f0a42c..3298acc 100644
--- a/recipes/engine_v2/engine_v2.expected/basic_linux.json
+++ b/recipes/engine_v2/engine_v2.expected/basic_linux.json
@@ -784,6 +784,11 @@
       "OS": "linux",
       "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
     },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
     "luci_context": {
       "realm": {
         "name": "proj:try"
diff --git a/recipes/engine_v2/engine_v2.expected/basic_mac.json b/recipes/engine_v2/engine_v2.expected/basic_mac.json
index 57ac209..17988b9 100644
--- a/recipes/engine_v2/engine_v2.expected/basic_mac.json
+++ b/recipes/engine_v2/engine_v2.expected/basic_mac.json
@@ -939,6 +939,11 @@
       "OS": "darwin",
       "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
     },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
     "luci_context": {
       "realm": {
         "name": "proj:try"
diff --git a/recipes/engine_v2/engine_v2.py b/recipes/engine_v2/engine_v2.py
index ddd8312..8f7985e 100644
--- a/recipes/engine_v2/engine_v2.py
+++ b/recipes/engine_v2/engine_v2.py
@@ -140,13 +140,13 @@
               deps = api.properties.get('dependencies', [])
               api.flutter_deps.required_deps(env, env_prefixes, deps)
               with api.context(env=env, cwd=full_engine_checkout):
-                _run_global_generator(api, generator_task, full_engine_checkout)
+                _run_global_generator(api, generator_task, full_engine_checkout, env, env_prefixes)
           else:
             # Install dependencies.
             deps = api.properties.get('dependencies', [])
             api.flutter_deps.required_deps(env, env_prefixes, deps)
             with api.context(env=env, cwd=full_engine_checkout):
-              _run_global_generator(api, generator_task, full_engine_checkout)
+              _run_global_generator(api, generator_task, full_engine_checkout, env, env_prefixes)
     api.file.listdir('Final List checkout', full_engine_checkout.join('src', 'out'), recursive=True)
     api.file.listdir('Final List checkout 2', full_engine_checkout.join('src', 'flutter', 'sky'), recursive=True)
   # Global archives
@@ -172,14 +172,16 @@
       )
 
 
-def _run_global_generator(api, generator_task, full_engine_checkout):
+def _run_global_generator(api, generator_task, full_engine_checkout, env, env_prefixes):
   cmd = [generator_task.get('language')] if generator_task.get('language') else []
   api.file.listdir('List checkout', full_engine_checkout.join('src', 'out'), recursive=True)
   script = generator_task.get('script')
   full_path_script = full_engine_checkout.join('src', script)
   cmd.append(full_path_script)
   cmd.extend(generator_task.get('parameters', []))
-  api.step(generator_task.get('name'), cmd)
+  # Run within an engine context to make dart available.
+  with api.context(env=env, env_prefixes=env_prefixes):
+    api.step(generator_task.get('name'), cmd)
 
 
 def GenTests(api):