Skip to content

Add Mac M1 ARM machines to the prod pool #87508

Description

@jmagman

flutter-devicelab-mac-4 and flutter-devicelab-mac-5 are now in the staging pool as of #79430. Promote to the prod pool once all existing tests pass on those machines.

https://chromium-swarm.appspot.com/bot?id=flutter-devicelab-mac-4
https://chromium-swarm.appspot.com/bot?id=flutter-devicelab-mac-5

Blocked by #85654.

Activity

  1. godofredoc commented on Oct 20, 2021

    @godofredoc
    Contributor

    \cc @keyonghan as this is relevant to your design doc for rebasing benchmarks.

    @jmagman Mac M1s are ready to get moved to prod, which tests/benchmarks we want to run on them and which names should we use?

    E.g. in the past we used something like catalina_ but we have had to rename them and lose historical data. Ideally we should be able to completely detach the test name from the benchmark and be able to select the benchmark based on properties<host_os, phone_os, etc>.

  2. jmagman commented on Oct 20, 2021

    @jmagman
    MemberAuthor

    Let me know if this list needs to be pared down.

    hot_mode_dev_cycle_macos_target__benchmark
    flutter_gallery_ios__compile
    hello_world_ios__compile
    native_ui_tests_macos
    native_ui_tests_ios
    module_test_ios
    build_ios_framework_module_test
    plugin_lint_mac
    run_release_test
    integration_test_test
    hello_world_android__compile
    ios_app_with_extensions_test
    ios_content_validation_test
    macos_chrome_dev_mode
    build_aar_module_test

    @zanderso are there others you can think of? Do you have opinions about the names?

  3. zanderso commented on Nov 6, 2021

    @zanderso
    Member

    Sorry for the delayed response. The list from @jmagman lgtm.

  4. keyonghan commented on Nov 8, 2021

    @keyonghan
    Contributor

    From benchmark point view, this should not be blocked.
    We can view trending charts based on task name by simply filtering arch: m1.

  5. eggfly commented on Jan 12, 2022

    @eggfly
    Member

    This is also our team wanted. Please make this last step into infra to support macOS M1 platform on native ARM machine code, looking forward to it. 💪

  6. keyonghan commented on Feb 16, 2022

    @keyonghan
    Contributor

    Now tests are running in staging pool, but most tests hit pod install error. @jmagman any insight on how to workaround the issue?

    One example: https://ci.chromium.org/ui/p/flutter/builders/staging/Mac_arm64_staging%20hot_mode_dev_cycle_macos_target__benchmark/9/overview

    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stdout:                Don't forget to include the Crash Report log file under
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stdout:                DiagnosticReports directory in bug reports.
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stdout: 
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stdout: 
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr: [+3181 ms] Exception: Error running pod install
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stdout: [        ] "flutter run" took 5,518ms.
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr: [   +1 ms] 
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #1      RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:688:9)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #2      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1165:27)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #3      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #4      CommandRunner.runCommand (package:args/command_runner.dart:209:13)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #5      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:281:9)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #6      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #7      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:229:5)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #8      run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #9      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            #10     main (package:flutter_tools/executable.dart:94:3)
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr:            <asynchronous suspension>
    [hot_mode_dev_cycle_macos_target__benchmark] [STDOUT] stderr: 
    
  7. jmagman commented on Feb 16, 2022

    @jmagman
    MemberAuthor

    It's hitting something like #70796. On those machines, before the gem bundle install, we'll have to first run:

    arch -x86_64 sudo gem install ffi
    

    Hmm, the tool should be printing that, but I don't see it #94385.

    See also https://stackoverflow.com/a/65334677.

  8. jmagman commented on Feb 17, 2022

    @jmagman
    MemberAuthor

    BTW: replaced -x86_64 with -arm64 for our case.

    I think that's the problem, confusingly it needs to be -x86_64 in our case.

  9. godofredoc commented on Feb 17, 2022

    @godofredoc
    Contributor

    If this is needed for arm machines I'd suggest that we add it to the salt state packages for M1.

  10. keyonghan commented on Feb 17, 2022

    @keyonghan
    Contributor

    BTW: replaced -x86_64 with -arm64 for our case.

    I think that's the problem, confusingly it needs to be -x86_64 in our case.

    Switched to -arm64 when hitting below error with -x86_64 (a new build example):

    arch: posix_spawnp: gem: Bad CPU type in executable
    

    BTW: from the salt side (how we provision devicelab hosts), we have been using -arm64.

  11. 23 remaining items

  12. keyonghan commented on Apr 1, 2022

    @keyonghan
    Contributor

    It turns out that we have been using intel built python (#98057) to run the swarming server, which schedules/runs our builds.

    At this moment, I have manually brought up mac41 and mac42 in staging to run and pass these tests. But we need to enable these changes in our salt so that it can provision all bots with same python+pyobjc. As of now, these two bots may get back to old non-working python version if a salt refresh happens.

    Working on a CL to push the salt change.

  13. keyonghan commented on Apr 1, 2022

    @keyonghan
    Contributor

    Could we move the passing ones over to prod?

    I prefer to hold on this before we have a stable working python on the bots.

  14. jmagman commented on Apr 6, 2022

    @jmagman
    MemberAuthor

    @keyonghan can we also add Mac tool_integration_tests_* and Mac tool_tests_commands to Mac_arm64?
    /cc @christopherfujino

  15. jmagman commented on Apr 11, 2022

    @jmagman
    MemberAuthor

    @keyonghan can we also add Mac tool_integration_tests_* and Mac tool_tests_commands to Mac_arm64?

    @christopherfujino do you agree with adding these shards? You expressed concerns that only a subset of these probably need to run on arm64, and you didn't want the extra noise of double the flaky reports.

  16. christopherfujino commented on Apr 11, 2022

    @christopherfujino
    Contributor

    @keyonghan can we also add Mac tool_integration_tests_* and Mac tool_tests_commands to Mac_arm64?

    @christopherfujino do you agree with adding these shards? You expressed concerns that only a subset of these probably need to run on arm64, and you didn't want the extra noise of double the flaky reports.

    started an internal chat thread to discuss

  17. keyonghan commented on Apr 11, 2022

    @keyonghan
    Contributor

    There are still 6 Mac/ios tests failing consistently:

    /cc @jmagman could you help take a look at the first two?

  18. keyonghan commented on Apr 12, 2022

    @keyonghan
    Contributor

    https://chrome-internal-review.googlesource.com/c/infradata/config/+/4673717 to add half M1/ios test beds to prod, with which we can migrate those passing tests. /cc @jmagman (somehow I cannot add you to the CL as a reviewer. Maybe because you have never touched that repo before)

  19. jmagman commented on Apr 13, 2022

    @jmagman
    MemberAuthor
  20. jmagman commented on Apr 15, 2022

    @jmagman
    MemberAuthor

    @keyonghan what happened with your attempts to install x86 version of the ffi gem? That should resolve the ffi error.
    #87508 (comment)

  21. keyonghan commented on Apr 18, 2022

    @keyonghan
    Contributor

    @keyonghan what happened with your attempts to install x86 version of the ffi gem? That should resolve the ffi error.

    The workaround to use ffi and rosetta does not help. Using the customized ruby, here are the latest run results (three tests are still failing):

  22. keyonghan commented on Jun 15, 2022

    @keyonghan
    Contributor

    All requested tests have been available and running in prod. To sum up:

    Enabled arm64 android tests:

    • hello_world_android__compile
    • integration_test_test
    • run_release_test

    Enabled arm64 ios tests:

    • build_ios_framework_module_test
    • module_test_ios
    • plugin_lint_mac
    • flutter_gallery_ios__compile
    • hello_world_ios__compile
    • hot_mode_dev_cycle_macos_target__benchmark
    • ios_app_with_extensions_test
    • ios_content_validation_test
    • macos_chrome_dev_mode
    • run_release_test_macos

    Marking this as fixed.

  23. github-actions commented on Jun 30, 2022

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  24. locked as resolved and limited conversation to collaborators on Jun 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

c: contributor-productivityTeam-specific productivity, code health, technical debt.platform-macosBuilding on or for macOS specificallyteam-infraOwned by Infrastructure team

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions