Install arm64ruby based on cpu
Instead of relying on a property, this CL changes to depend on bot cpu. This way a builder (which can run on either arm64 or x64) can install arm64ruby only for arm64 bots.
Existing `Mac_arm64_ios` builders all pass with the arm64ruby.
https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/bb99b69dfb852d43e87c55b09eed2437b29304cb10fa3afe8ff73225411a9199/+/build.proto?server=chromium-swarm.appspot.com
https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/429b18a9c9746a78b51280513c9c22444fdd7d96e1743415d198d2c4c548e2f4/+/build.proto?server=chromium-swarm.appspot.com
https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/69eaafb4c69499ab0be0293da96a24b6e433ca6e0d6b020d6715dfd95aee5d54/+/build.proto?server=chromium-swarm.appspot.com
https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/4e2d76fc19e60e1df5b88f8257a23799d06c3ecace473a8294b2b24e00f125c7/+/build.proto?server=chromium-swarm.appspot.com
https://luci-milo.appspot.com/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/e7a53eed7e0d00c13952d2fb55f59029bef077e7a2db561f01337f4c978390d9/+/build.proto
https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/7c24d1dff932c444812c6e4c9f6ca1be0d1e9dddd7b8c3ad4c218eee5af2d760/+/build.proto?server=chromium-swarm.appspot.com
https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/f72c5585987850abb526e62b949ef0717fa3fa1e70faa1ab92ce51bacd155945/+/build.proto?server=chromium-swarm.appspot.com
https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/032f067a81e7c7f55a70bf9279693d468079fa376a108adfe1ba684c109fc04e/+/build.proto?server=chromium-swarm.appspot.com
https://luci-milo.appspot.com/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/2d9ddab7db2c47bd1b80825f8fe4a6370d4ed0d0462f66212a3a8316c15623cf/+/build.proto
https://luci-milo.appspot.com/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/70d3a200c8749b86178a5e2998e5b69ef4cc6ee678e15555ce6ac4c016f5a624/+/build.proto
Change-Id: Ie750dafb34b067e1b831508bda24176ed0b4e3de
Bug: https://github.com/flutter/flutter/issues/110561
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/33541
Commit-Queue: Keyong Han <keyonghan@google.com>
Reviewed-by: Jenn Magder <magder@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 bca5988..23d8c0e 100644
--- a/recipe_modules/flutter_deps/api.py
+++ b/recipe_modules/flutter_deps/api.py
@@ -262,7 +262,7 @@
# For more, see CI section on https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:disabling_the_daemon
env['GRADLE_OPTS'] = '-Dorg.gradle.daemon=false'
- def arm64ruby(self, env, env_prefixes):
+ def arm64ruby(self, env, env_prefixes, gem_dir):
"""Installs arm64 Ruby.
Context of arm64ruby:
@@ -277,8 +277,10 @@
self.m.cipd.ensure(ruby_path, ruby)
paths = env_prefixes.get('PATH', [])
paths.insert(0, ruby_path.join('bin'))
- env_prefixes['PATH'] = paths
env['RUBY_HOME'] = ruby_path.join('bin')
+ env['GEM_HOME'] = gem_dir.join('ruby', '3.1.0')
+ paths.append(gem_dir.join('ruby', '3.1.0', 'bin'))
+ env_prefixes['PATH'] = paths
def gems(self, env, env_prefixes, gemfile_dir):
"""Installs mac gems.
@@ -288,16 +290,16 @@
env_prefixes(dict): Current environment prefixes variables.
gemfile_dir(Path): The path to the location of the repository gemfile.
"""
- arm64_ruby = 'arm64ruby'
deps_list = self.m.properties.get('dependencies', [])
deps = [d['dependency'] for d in deps_list]
if 'gems' not in deps:
# Noop if gems property is not set.
return
- if arm64_ruby in deps:
- self.arm64ruby(env, env_prefixes)
gem_file = self.m.repo_util.sdk_checkout_path().join('flutter')
gem_dir = self.m.path['start_dir'].join('gems')
+ env['GEM_HOME'] = gem_dir
+ if self.m.platform.arch == 'arm':
+ self.arm64ruby(env, env_prefixes, gem_dir)
with self.m.step.nest('Install gems'):
self.m.file.ensure_directory('mkdir gems', gem_dir)
# Temporarily install bundler
@@ -307,7 +309,6 @@
['gem', 'install', 'bundler', '--install-dir', '.'],
infra_step=True,
)
- env['GEM_HOME'] = gem_dir
paths = env_prefixes.get('PATH', [])
temp_paths = copy.deepcopy(paths)
temp_paths.append(gem_dir.join('bin'))
@@ -321,10 +322,7 @@
self.m.step('install gems', ['bundler', 'install'], infra_step=True)
# Update envs to the final destination.
self.m.file.listdir('list bundle', gem_dir, recursive=True)
- if arm64_ruby in deps:
- env['GEM_HOME'] = gem_dir.join('ruby', '3.1.0')
- paths.append(gem_dir.join('ruby', '3.1.0', 'bin'))
- else:
+ if self.m.platform.arch != 'arm':
env['GEM_HOME'] = gem_dir.join('ruby', '2.6.0')
paths.append(gem_dir.join('ruby', '2.6.0', 'bin'))
env_prefixes['PATH'] = paths
diff --git a/recipe_modules/flutter_deps/examples/full.expected/with-arm64ruby.json b/recipe_modules/flutter_deps/examples/full.expected/with-arm64ruby.json
index f351e94..be86c9e 100644
--- a/recipe_modules/flutter_deps/examples/full.expected/with-arm64ruby.json
+++ b/recipe_modules/flutter_deps/examples/full.expected/with-arm64ruby.json
@@ -898,7 +898,7 @@
"cwd": "[START_DIR]/dev/ci/mac",
"env": {
"DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GEM_HOME": "[START_DIR]/gems",
+ "GEM_HOME": "[START_DIR]/gems/ruby/3.1.0",
"GIT_BRANCH": "",
"LUCI_BRANCH": "",
"LUCI_CI": "True",
@@ -914,6 +914,7 @@
"[CACHE]/ruby/bin",
"[START_DIR]/flutter\\ sdk/bin",
"[START_DIR]/flutter\\ sdk/bin/cache/dart-sdk/bin",
+ "[START_DIR]/gems/ruby/3.1.0/bin",
"[START_DIR]/gems/bin",
"[START_DIR]/flutter\\ sdk/bin",
"[START_DIR]/flutter\\ sdk/bin/cache/dart-sdk/bin"
@@ -933,7 +934,7 @@
"cwd": "[START_DIR]/dev/ci/mac",
"env": {
"DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GEM_HOME": "[START_DIR]/gems",
+ "GEM_HOME": "[START_DIR]/gems/ruby/3.1.0",
"GIT_BRANCH": "",
"LUCI_BRANCH": "",
"LUCI_CI": "True",
@@ -949,6 +950,7 @@
"[CACHE]/ruby/bin",
"[START_DIR]/flutter\\ sdk/bin",
"[START_DIR]/flutter\\ sdk/bin/cache/dart-sdk/bin",
+ "[START_DIR]/gems/ruby/3.1.0/bin",
"[START_DIR]/gems/bin",
"[START_DIR]/flutter\\ sdk/bin",
"[START_DIR]/flutter\\ sdk/bin/cache/dart-sdk/bin"
diff --git a/recipe_modules/flutter_deps/examples/full.py b/recipe_modules/flutter_deps/examples/full.py
index 9bd51e2..ca9a7af 100644
--- a/recipe_modules/flutter_deps/examples/full.py
+++ b/recipe_modules/flutter_deps/examples/full.py
@@ -93,8 +93,9 @@
)
yield api.test(
- 'with-arm64ruby', api.properties(dependencies=[{"dependency": "gems"}, {"dependency": "arm64ruby"}]),
+ 'with-arm64ruby', api.properties(dependencies=[{"dependency": "gems"}]),
api.repo_util.flutter_environment_data(checkout_path),
+ api.platform.arch('arm'),
)
yield api.test(