Add a cipd dependency for curl. The curl binary in the debian linux images is very old and it doesn't include several fixes. We will be providing the curl binary over cipd to ensure we have a recent version of it. This is very important because most of the flutter tooling depends on curl to download dependencies. Change-Id: Id5ef97e492376726bf5fdb4a26a1f804d7dd42e0 Bug: https://github.com/flutter/flutter/issues/68242 Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/10780 Reviewed-by: Casey Hillers <chillers@google.com> Commit-Queue: Godofredo Contreras <godofredoc@google.com>
diff --git a/recipe_modules/flutter_deps/api.py b/recipe_modules/flutter_deps/api.py index 151ab91..6bae5c0 100644 --- a/recipe_modules/flutter_deps/api.py +++ b/recipe_modules/flutter_deps/api.py
@@ -49,6 +49,7 @@ available_deps = { 'open_jdk': self.open_jdk, 'goldctl': self.goldctl, + 'curl': self.curl, 'chrome_and_driver': self.chrome_and_driver, 'go_sdk': self.go_sdk, 'dashing': self.dashing, @@ -188,6 +189,17 @@ paths.append(vpython_path) env_prefixes['PATH'] = paths + def curl(self, env, env_prefixes, version): + """Installs curl.""" + version = version or 'latest' + curl_path = self.m.path.mkdtemp().join('curl') + curl = self.m.cipd.EnsureFile() + curl.add_package('flutter_internal/tools/curl/${platform}', version) + self.m.cipd.ensure(curl_path, curl) + paths = env_prefixes.get('PATH', []) + paths.append(curl_path) + env_prefixes['PATH'] = paths + def android_sdk(self, env, env_prefixes, version): """Installs android sdk.""" version = version or '29.0.2'
diff --git a/recipe_modules/flutter_deps/examples/full.expected/basic.json b/recipe_modules/flutter_deps/examples/full.expected/basic.json index 2676cba..cbb7aa0 100644 --- a/recipe_modules/flutter_deps/examples/full.expected/basic.json +++ b/recipe_modules/flutter_deps/examples/full.expected/basic.json
@@ -598,6 +598,34 @@ ] }, { + "cmd": [ + "cipd", + "ensure", + "-root", + "[CLEANUP]/tmp_tmp_2/curl", + "-ensure-file", + "flutter_internal/tools/curl/${platform} latest", + "-max-threads", + "0", + "-json-output", + "/path/to/tmp/json" + ], + "name": "ensure_installed (4)", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"flutter_internal/tools/curl/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@@@" + ] + }, + { "name": "$result" } ] \ No newline at end of file
diff --git a/recipe_modules/flutter_deps/examples/full.expected/flutter_engine.json b/recipe_modules/flutter_deps/examples/full.expected/flutter_engine.json index e52b4dc..1692024 100644 --- a/recipe_modules/flutter_deps/examples/full.expected/flutter_engine.json +++ b/recipe_modules/flutter_deps/examples/full.expected/flutter_engine.json
@@ -665,6 +665,34 @@ ] }, { + "cmd": [ + "cipd", + "ensure", + "-root", + "[CLEANUP]/tmp_tmp_2/curl", + "-ensure-file", + "flutter_internal/tools/curl/${platform} latest", + "-max-threads", + "0", + "-json-output", + "/path/to/tmp/json" + ], + "name": "ensure_installed (4)", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"flutter_internal/tools/curl/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@@@" + ] + }, + { "name": "$result" } ] \ No newline at end of file
diff --git a/recipe_modules/flutter_deps/examples/full.expected/goldTryjob.json b/recipe_modules/flutter_deps/examples/full.expected/goldTryjob.json index 2676cba..cbb7aa0 100644 --- a/recipe_modules/flutter_deps/examples/full.expected/goldTryjob.json +++ b/recipe_modules/flutter_deps/examples/full.expected/goldTryjob.json
@@ -598,6 +598,34 @@ ] }, { + "cmd": [ + "cipd", + "ensure", + "-root", + "[CLEANUP]/tmp_tmp_2/curl", + "-ensure-file", + "flutter_internal/tools/curl/${platform} latest", + "-max-threads", + "0", + "-json-output", + "/path/to/tmp/json" + ], + "name": "ensure_installed (4)", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"flutter_internal/tools/curl/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@@@" + ] + }, + { "name": "$result" } ] \ No newline at end of file
diff --git a/recipe_modules/flutter_deps/examples/full.expected/mac.json b/recipe_modules/flutter_deps/examples/full.expected/mac.json index 013606b..920b1f8 100644 --- a/recipe_modules/flutter_deps/examples/full.expected/mac.json +++ b/recipe_modules/flutter_deps/examples/full.expected/mac.json
@@ -661,6 +661,34 @@ }, { "cmd": [ + "cipd", + "ensure", + "-root", + "[CLEANUP]/tmp_tmp_2/curl", + "-ensure-file", + "flutter_internal/tools/curl/${platform} latest", + "-max-threads", + "0", + "-json-output", + "/path/to/tmp/json" + ], + "name": "ensure_installed (4)", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"flutter_internal/tools/curl/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": [ "python", "-u", "import sys; sys.exit(1)"
diff --git a/recipe_modules/flutter_deps/examples/full.expected/with-gems.json b/recipe_modules/flutter_deps/examples/full.expected/with-gems.json index 59e7a01..793df7c 100644 --- a/recipe_modules/flutter_deps/examples/full.expected/with-gems.json +++ b/recipe_modules/flutter_deps/examples/full.expected/with-gems.json
@@ -598,6 +598,34 @@ ] }, { + "cmd": [ + "cipd", + "ensure", + "-root", + "[CLEANUP]/tmp_tmp_2/curl", + "-ensure-file", + "flutter_internal/tools/curl/${platform} latest", + "-max-threads", + "0", + "-json-output", + "/path/to/tmp/json" + ], + "name": "ensure_installed (4)", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"flutter_internal/tools/curl/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": [], "name": "Install gems" },
diff --git a/recipe_modules/flutter_deps/examples/full.py b/recipe_modules/flutter_deps/examples/full.py index 53bacf9..5b3d86c 100644 --- a/recipe_modules/flutter_deps/examples/full.py +++ b/recipe_modules/flutter_deps/examples/full.py
@@ -49,6 +49,7 @@ api.flutter_deps.ninja(env, env_prefixes) api.flutter_deps.clang(env, env_prefixes) api.flutter_deps.ios_signing(env, env_prefixes) + api.flutter_deps.curl(env, env_prefixes, '') # Gems dependency requires to run from a flutter_environment. checkout_path = api.path['start_dir'].join('flutter\ sdk')