Install gems differently for old and new versions of xcode. New versions of xcode are missing ruby/config.h required to compile some of the gems. In this case we want to install the gems using the system level ruby. Change-Id: I3b770bdab80ccbb497c8b35c3f63c913a74fa296 Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/9140 Commit-Queue: Godofredo Contreras <godofredoc@google.com> Reviewed-by: Yusuf Mohsinally <mohsinally@google.com>
diff --git a/recipes/devicelab/devicelab_drone.expected/post-submit.json b/recipes/devicelab/devicelab_drone.expected/post-submit.json index b137877..3ae8f08 100644 --- a/recipes/devicelab/devicelab_drone.expected/post-submit.json +++ b/recipes/devicelab/devicelab_drone.expected/post-submit.json
@@ -220,11 +220,7 @@ "dart", "bin/run.dart", "-t", - "abc", - "--service-account-token-file", - "[CLEANUP]/tmp_tmp_1", - "--luci-builder", - "Linux abc" + "abc" ], "cwd": "[START_DIR]/flutter/dev/devicelab", "env": {
diff --git a/recipes/devicelab/devicelab_drone.expected/xcode.json b/recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json similarity index 100% copy from recipes/devicelab/devicelab_drone.expected/xcode.json copy to recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json
diff --git a/recipes/devicelab/devicelab_drone.expected/xcode.json b/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json similarity index 100% rename from recipes/devicelab/devicelab_drone.expected/xcode.json rename to recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json
diff --git a/recipes/devicelab/devicelab_drone.py b/recipes/devicelab/devicelab_drone.py index 1bd85e3..b7441cc 100644 --- a/recipes/devicelab/devicelab_drone.py +++ b/recipes/devicelab/devicelab_drone.py
@@ -15,8 +15,8 @@ 'recipe_engine/properties', 'recipe_engine/raw_io', 'recipe_engine/service_account', - 'recipe_engine/swarming', 'recipe_engine/step', + 'recipe_engine/swarming', ] @@ -51,9 +51,20 @@ "write token", access_token_path, access_token, include_log=False ) test_runner_command.extend([ - '--service-account-token-file', access_token_path, - '--luci-builder', api.properties.get('buildername')]) + '--service-account-token-file', access_token_path, '--luci-builder', + api.properties.get('buildername') + ]) # Run test + test_runner_command = ['dart', 'bin/run.dart', '-t', task_name] + test_runner_command.extend(service_account_args) + + # Gems are installed differently new and old versions of xcode. Pre xcode 12 + # the ruby sdk included in xcode was able to compile the gems correctly but + # with xcode 12 gems building from inside a xcode context fails. We use the + # bot name to identify if the builder is running on a devicelab bot which will + # be running xcode 12. + bot_id = api.swarming.bot_id + is_devicelab_bot = bot_id.startswith('flutter-devicelab') with api.context(env=env, env_prefixes=env_prefixes, cwd=devicelab_path): api.step('flutter doctor', ['flutter', 'doctor', '--verbose']) api.step('flutter update-packages', ['flutter', 'update-packages']) @@ -61,11 +72,19 @@ dep_list = {d['dependency']: d.get('version') for d in deps} if dep_list.has_key('xcode'): api.os_utils.clean_derived_data() - with api.osx_sdk('ios'): - api.flutter_deps.swift(dep_list.get('swift', 'latest')) + # Build gems here for xcode 12 or newer. + if is_devicelab_bot: api.flutter_deps.gems( env, env_prefixes, flutter_path.join('dev', 'ci', 'mac') ) + with api.osx_sdk('ios'): + api.flutter_deps.swift(dep_list.get('swift', 'latest')) + # Build gems here for xcode older than 12 we'll need to delete + # this path after migrating sdk and devicelab to xcode 12. + if not is_devicelab_bot: + api.flutter_deps.gems( + env, env_prefixes, flutter_path.join('dev', 'ci', 'mac') + ) api.os_utils.shutdown_simulators() with api.context(env=env, env_prefixes=env_prefixes), api.step.defer_results(): @@ -90,11 +109,21 @@ api.expect_exception('ValueError'), ) yield api.test( - "basic", api.properties(task_name='abc'), - api.repo_util.flutter_environment_data() + "basic", + api.properties(task_name='abc'), + api.repo_util.flutter_environment_data(), ) yield api.test( - "xcode", + "xcode-devicelab", + api.properties( + task_name='abc', + dependencies=[{'dependency': 'xcode'}, + {'dependency': 'swift', 'version': 'abc'}] + ), api.repo_util.flutter_environment_data(), + api.swarming.properties(bot_id='flutter-devicelab-mac-1') + ) + yield api.test( + "xcode-chromium-mac", api.properties( task_name='abc', dependencies=[{'dependency': 'xcode'}, @@ -109,6 +138,5 @@ pool='flutter.luci.prod', task_name='abc', upload_metrics=True - ), - api.repo_util.flutter_environment_data() + ), api.repo_util.flutter_environment_data() )