Enable long path support on Windows bots

By default, our Windows bots don't have long path support enabled and
thus, are limited to paths with a maximum of 260 characters. This breaks
some tooling that relies on files with longer paths; for example, some
parts of the Windows SDK -- in particular .winmd files under the
SDK's References directory, which we make use of while generating WinRT
header files with the cppwinrt tool.

Bug: https://github.com/flutter/flutter/issues/82058
Change-Id: Ic6ab55721b24e61ecfb21631778c513afd203154
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/13300
Commit-Queue: Chris Bracken <cbracken@google.com>
Reviewed-by: Godofredo Contreras <godofredoc@google.com>
diff --git a/recipe_modules/flutter_deps/api.py b/recipe_modules/flutter_deps/api.py
index 9711538..21278af 100644
--- a/recipe_modules/flutter_deps/api.py
+++ b/recipe_modules/flutter_deps/api.py
@@ -396,6 +396,33 @@
           ],
       )
 
+  def enable_long_paths(self, env, env_prefixes, version=None):
+    """Enables long path support in Windows.
+
+    Args:
+      env(dict): Current environment variables.
+      env_prefixes(dict): Current environment prefixes variables.
+    """
+
+    if not self.m.platform.is_win:
+      # noop for non windows platforms.
+      return
+    with self.m.context(env=env, env_prefixes=env_prefixes):
+      self.m.step(
+          'Enable long path support',
+          [
+              'powershell.exe',
+              ' '.join([
+                  'New-ItemProperty',
+                  '-Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem"',
+                  '-Name "LongPathsEnabled"',
+                  '-Value 1',
+                  '-PropertyType DWORD',
+                  '-Force'
+              ])
+          ],
+      )
+
   def ios_signing(self, env, env_prefixes, version=None):
     """Installs ninja.
 
diff --git a/recipe_modules/flutter_deps/examples/full.expected/windows.json b/recipe_modules/flutter_deps/examples/full.expected/windows.json
index b77c748..c69ed77 100644
--- a/recipe_modules/flutter_deps/examples/full.expected/windows.json
+++ b/recipe_modules/flutter_deps/examples/full.expected/windows.json
@@ -855,6 +855,46 @@
     "name": "Install Certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\android",
+      "ANDROID_SDK_ROOT": "[CACHE]\\android",
+      "CHROME_EXECUTABLE": "[CACHE]\\chrome\\chrome\\chrome.exe",
+      "CHROME_NO_SANDBOX": "true",
+      "COCOON_PATH": "[CACHE]\\cocoon",
+      "FLUTTER_XCODE_CODE_SIGN_STYLE": "Manual",
+      "FLUTTER_XCODE_DEVELOPMENT_TEAM": "S8QB4VV633",
+      "FLUTTER_XCODE_PROVISIONING_PROFILE_SPECIFIER": "match Development *",
+      "GOPATH": "[CLEANUP]\\go_path",
+      "GRADLE_OPTS": "-Dorg.gradle.daemon=false",
+      "GRADLE_USER_HOME": "[CACHE]\\gradle"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\dart_sdk",
+        "[CACHE]\\chrome\\chrome",
+        "[CACHE]\\chrome\\drivers",
+        "[CACHE]\\go\\bin",
+        "[CLEANUP]\\go_path\\bin",
+        "[CACHE]\\go\\bin",
+        "[CLEANUP]\\go_path\\bin",
+        "[CLEANUP]\\tmp_tmp_1\\vpython",
+        "[CACHE]\\android\\platform-tools",
+        "[CACHE]\\android\\tools",
+        "[START_DIR]\\firebase",
+        "[CACHE]\\cmake\\bin",
+        "[CACHE]\\ninja",
+        "[CACHE]\\clang\\bin",
+        "[CLEANUP]\\tmp_tmp_2\\curl"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "name": "$result"
   }
 ]
\ No newline at end of file
diff --git a/recipe_modules/flutter_deps/examples/full.py b/recipe_modules/flutter_deps/examples/full.py
index cfb2423..ea852dc 100644
--- a/recipe_modules/flutter_deps/examples/full.py
+++ b/recipe_modules/flutter_deps/examples/full.py
@@ -53,6 +53,7 @@
   api.flutter_deps.cocoon(env, env_prefixes, 'refs/heads/master')
   api.flutter_deps.dart_sdk(env, env_prefixes, '')
   api.flutter_deps.certs(env, env_prefixes, '')
+  api.flutter_deps.enable_long_paths(env, env_prefixes, '')
 
   # Gems dependency requires to run from a flutter_environment.
   checkout_path = api.path['start_dir'].join('flutter\ sdk')
diff --git a/recipes/engine.expected/win.json b/recipes/engine.expected/win.json
index a5da277..348a1f2 100644
--- a/recipes/engine.expected/win.json
+++ b/recipes/engine.expected/win.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_maven_or_bitcode.json b/recipes/engine.expected/win_maven_or_bitcode.json
index a5da277..348a1f2 100644
--- a/recipes/engine.expected/win_maven_or_bitcode.json
+++ b/recipes/engine.expected/win_maven_or_bitcode.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_maven_or_bitcode_no_lto.json b/recipes/engine.expected/win_maven_or_bitcode_no_lto.json
index e943b1c..7169843 100644
--- a/recipes/engine.expected/win_maven_or_bitcode_no_lto.json
+++ b/recipes/engine.expected/win_maven_or_bitcode_no_lto.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_maven_or_bitcode_publish_cipd.json b/recipes/engine.expected/win_maven_or_bitcode_publish_cipd.json
index a5da277..348a1f2 100644
--- a/recipes/engine.expected/win_maven_or_bitcode_publish_cipd.json
+++ b/recipes/engine.expected/win_maven_or_bitcode_publish_cipd.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_maven_or_bitcode_publish_cipd_no_lto.json b/recipes/engine.expected/win_maven_or_bitcode_publish_cipd_no_lto.json
index e943b1c..7169843 100644
--- a/recipes/engine.expected/win_maven_or_bitcode_publish_cipd_no_lto.json
+++ b/recipes/engine.expected/win_maven_or_bitcode_publish_cipd_no_lto.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_no_lto.json b/recipes/engine.expected/win_no_lto.json
index e943b1c..7169843 100644
--- a/recipes/engine.expected/win_no_lto.json
+++ b/recipes/engine.expected/win_no_lto.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_publish_cipd.json b/recipes/engine.expected/win_publish_cipd.json
index a5da277..348a1f2 100644
--- a/recipes/engine.expected/win_publish_cipd.json
+++ b/recipes/engine.expected/win_publish_cipd.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_publish_cipd_no_lto.json b/recipes/engine.expected/win_publish_cipd_no_lto.json
index e943b1c..7169843 100644
--- a/recipes/engine.expected/win_publish_cipd_no_lto.json
+++ b/recipes/engine.expected/win_publish_cipd_no_lto.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_upload.json b/recipes/engine.expected/win_upload.json
index 0df56d2..f797250 100644
--- a/recipes/engine.expected/win_upload.json
+++ b/recipes/engine.expected/win_upload.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_upload_maven_or_bitcode.json b/recipes/engine.expected/win_upload_maven_or_bitcode.json
index 0df56d2..f797250 100644
--- a/recipes/engine.expected/win_upload_maven_or_bitcode.json
+++ b/recipes/engine.expected/win_upload_maven_or_bitcode.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_upload_maven_or_bitcode_no_lto.json b/recipes/engine.expected/win_upload_maven_or_bitcode_no_lto.json
index 42b6273..aa2446f 100644
--- a/recipes/engine.expected/win_upload_maven_or_bitcode_no_lto.json
+++ b/recipes/engine.expected/win_upload_maven_or_bitcode_no_lto.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_upload_maven_or_bitcode_publish_cipd.json b/recipes/engine.expected/win_upload_maven_or_bitcode_publish_cipd.json
index 0df56d2..f797250 100644
--- a/recipes/engine.expected/win_upload_maven_or_bitcode_publish_cipd.json
+++ b/recipes/engine.expected/win_upload_maven_or_bitcode_publish_cipd.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_upload_maven_or_bitcode_publish_cipd_no_lto.json b/recipes/engine.expected/win_upload_maven_or_bitcode_publish_cipd_no_lto.json
index 42b6273..aa2446f 100644
--- a/recipes/engine.expected/win_upload_maven_or_bitcode_publish_cipd_no_lto.json
+++ b/recipes/engine.expected/win_upload_maven_or_bitcode_publish_cipd_no_lto.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_upload_no_lto.json b/recipes/engine.expected/win_upload_no_lto.json
index 42b6273..aa2446f 100644
--- a/recipes/engine.expected/win_upload_no_lto.json
+++ b/recipes/engine.expected/win_upload_no_lto.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_upload_publish_cipd.json b/recipes/engine.expected/win_upload_publish_cipd.json
index 0df56d2..f797250 100644
--- a/recipes/engine.expected/win_upload_publish_cipd.json
+++ b/recipes/engine.expected/win_upload_publish_cipd.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.expected/win_upload_publish_cipd_no_lto.json b/recipes/engine.expected/win_upload_publish_cipd_no_lto.json
index 42b6273..aa2446f 100644
--- a/recipes/engine.expected/win_upload_publish_cipd_no_lto.json
+++ b/recipes/engine.expected/win_upload_publish_cipd_no_lto.json
@@ -121,6 +121,23 @@
     "name": "Print pub.dev certs"
   },
   {
+    "cmd": [
+      "powershell.exe",
+      "New-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -PropertyType DWORD -Force"
+    ],
+    "env": {
+      "ANDROID_HOME": "[CACHE]\\builder\\src\\third_party\\android_tools\\sdk",
+      "GOMA_DIR": "[CACHE]\\goma\\client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]\\certs",
+        "[CACHE]\\builder\\src\\third_party\\dart\\tools\\sdks\\dart-sdk\\bin"
+      ]
+    },
+    "name": "Enable long path support"
+  },
+  {
     "cmd": [],
     "name": "Checkout source code"
   },
diff --git a/recipes/engine.py b/recipes/engine.py
index 2fe2f07..d6d3dbc 100644
--- a/recipes/engine.py
+++ b/recipes/engine.py
@@ -1544,6 +1544,9 @@
   api.flutter_deps.certs(env, env_prefixes)
   api.os_utils.print_pub_certs()
 
+  # Enable long path support on Windows.
+  api.flutter_deps.enable_long_paths(env, env_prefixes)
+
   api.repo_util.engine_checkout(cache_root, env, env_prefixes)
 
   # Delete derived data on mac. This is a noop for other platforms.