-
Notifications
You must be signed in to change notification settings - Fork 29.8k
[ Tool ] Add support for linux riscv64 architecture #178711
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request adds support for the riscv64 architecture for desktop Linux applications in the Flutter tool. The changes are consistent across multiple files, adding the new architecture to enums, switch statements, and build configurations. My review focuses on improving code readability in one of the new logic blocks. Overall, the changes look good and are a solid step towards supporting Flutter on RISC-V.
8851c72 to
16fd221
Compare
|
I think my last modification fixed all the tests (formatting, and changing a test case expected output to include riscv64). The last failing "Windows tool_tests_commands" test might be an infra issue, as it seems to have timed out waiting for a prompt... I'm not sure that it is related to my PR. It seems I can't trigger a retry myself. @jtmcdole what do you think? |
reidbaker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved but I would want someone from the engine team to take a look before this lands.
reidbaker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure where you are on the process of landing this feature but I would have expected to see a test that built for risc-v as part of this pr to ensure we dont regress on the ability to build.
|
Thank you! About the testing part, I wasn't sure that the testing infrastructure had riscv64 support; and I would rather have untested RISC-V support than no RISC-V support at all. If you confirm that I could write automatic tests that would run on riscv64, or enable riscv64 for existing tests, I can try! |
|
At the minimum I would expect that you could author a test that attempted to build the risc-v code. That code would be required before we can publish an RISC-V engine binary. |
|
I tried to understand the test infrastructure and add a test that is basically a copy of the one present on arm64, adapted for riscv64. Is that what you had in mind? Edit: Again, the failed CI check seems to be a timeout unrelated to the test I added, on |
reidbaker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for adding a build test. This should still be approved by someone on the engine team but I no longer see any issues.
gaaclarke
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. @reidbaker the tests here assert that the tool will attempt to build riscv64 but we don't actually buildit as part of CI right? We should consider adding that as a follow up.
Correct, I am viewing this feature as in progress and this test makes sure we dont accidentally break support but it will require building the engine manually. I actually think if this pr added ci support for publishing risc-v we might not take it without leads approval. |
|
I also submitted #178712 to allow building the engine (either locally or in CI). I started a discussion there, that is still ongoing it seems. Having official tool support could still be useful even if you don't plan/want to build the engine on CI, as it would allow third-party actors to use the official tool with their third-party built engine using |
|
Was I added in error, @reidbaker? I don't have much experience with this part of the codebase. |
Yes sorry! Removed. |
|
cc @robert-ancell as this change adds riscv64 support to Flutter Linux. |
|
Drive by comment: When we added Windows Arm64 artifacts we broke If you haven't already, please check that this command still works on Linux hosts. |
9bb6271 to
c88e8fa
Compare
|
I pushed an update. This makes the However, maybe that was not the right place in the code? Disabling it at the argument-parsing level can make sure that users will not even see the feature, but maybe this is not what we want. Please review and tell me, I can change that, this is just a first draft for the feature. Thank you! EDIT: It seems that this broke multiple tests. Fixing.... |
0e13adc to
38460c1
Compare
This adds support for buildind desktop linux applications for riscv64 on the flutter tool, as well as basic riscv64 support for the tool.
38460c1 to
49d212d
Compare
|
The google testing is the only one failing now. Is that a real fail, or a temporary/infra thing? |
zanderso
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
A Googler will need to follow step 5 of https://github.com/flutter/flutter/blob/master/docs/contributing/Feature-flags.md. @bkonyi would you be able to help out with that 2 line change?
This is a real failure from a custom implementation of the tool. Let me take a quick look. |
|
This PR is 700+ commits behind master; updating to pick up changes. |
|
Applying another fix internally |
In #178711, `packages/flutter_tools/lib/src/flutter_cache.dart` was updated to add 'riscv' downloading in the `FlutterRunnerDebugSymbols`. This class is not well named and is responsible for downloading "the debug symbols for flutter runner for Fuchsia development." We do not produce fuchsia riscv. Fixes #180775
Roll Flutter from 01d37bc to 73769a2 (65 revisions) flutter/flutter@01d37bc...73769a2 2026-01-10 engine-flutter-autoroll@skia.org Roll Dart SDK from 5e855c2bb3ef to 87fbfd5381b6 (1 revision) (flutter/flutter#180800) 2026-01-10 engine-flutter-autoroll@skia.org Roll Skia from b2b109f0e980 to f39cc645b1dd (2 revisions) (flutter/flutter#180796) 2026-01-10 engine-flutter-autoroll@skia.org Roll Dart SDK from b7963905e6a2 to 5e855c2bb3ef (2 revisions) (flutter/flutter#180794) 2026-01-10 ahmedsameha1@gmail.com Make sure that a CupertinoTabScaffold doesn't crash in 0x0 environment (flutter/flutter#179824) 2026-01-10 engine-flutter-autoroll@skia.org Roll Dart SDK from d25ad331b7ea to b7963905e6a2 (2 revisions) (flutter/flutter#180783) 2026-01-10 ahmedsameha1@gmail.com Make sure that a Container doesn't crash in 0x0 environment (flutter/flutter#180350) 2026-01-10 ahmedsameha1@gmail.com Make sure that an Expansible doesn't crash in 0x0 environment (flutter/flutter#180478) 2026-01-10 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Enabled some disabled impeller fragment shader dart tests (#180759)" (flutter/flutter#180785) 2026-01-09 dkwingsmt@users.noreply.github.com Merge `widget_tester_leaks_free_test.dart` into `widget_tester_test.dart` (flutter/flutter#180600) 2026-01-09 codefu@google.com fix: there are no riscv fuchsia artifacts (flutter/flutter#180779) 2026-01-09 engine-flutter-autoroll@skia.org Roll Skia from 7386219151e6 to b2b109f0e980 (1 revision) (flutter/flutter#180771) 2026-01-09 chinmaygarde@google.com Re-prioritize pipeline compile jobs and perform them eagerly instead of waiting. (flutter/flutter#180022) 2026-01-09 30870216+gaaclarke@users.noreply.github.com Enabled some disabled impeller fragment shader dart tests (flutter/flutter#180759) 2026-01-09 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from rxeg-6UB678HKJ4UQ... to 83Favz_zzMzdVuOHg... (flutter/flutter#180765) 2026-01-09 jhy03261997@gmail.com [A11y ] Add `clearSemantics`in table (flutter/flutter#180665) 2026-01-09 chinmaygarde@google.com Update CODEOWNERS to remove chinmaygarde. (flutter/flutter#180703) 2026-01-09 vhaudiquet343@hotmail.fr [ Tool ] Add support for linux riscv64 architecture (flutter/flutter#178711) 2026-01-09 engine-flutter-autoroll@skia.org Roll Skia from e9b3264ade0c to 7386219151e6 (12 revisions) (flutter/flutter#180754) 2026-01-09 engine-flutter-autoroll@skia.org Roll Dart SDK from fe2ba2c5dd50 to d25ad331b7ea (10 revisions) (flutter/flutter#180741) 2026-01-09 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Unpin google_mobile_ads (#180573)" (flutter/flutter#180761) 2026-01-09 koichi20021217@gmail.com Fix typo in dropdown_menu.dart (flutter/flutter#180172) 2026-01-09 engine-flutter-autoroll@skia.org Roll Packages from 039a026 to 51fe1d9 (1 revision) (flutter/flutter#180742) 2026-01-09 goderbauer@google.com Unpin google_mobile_ads (flutter/flutter#180573) 2026-01-09 evanwall@buffalo.edu Update flutter changelog for 3.38.6 (flutter/flutter#180708) 2026-01-08 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fix iOS xattr removal to clear all extended attributes (#180355)" (flutter/flutter#180709) 2026-01-08 ahmedsameha1@gmail.com Make sure that an EditableText doesn't crash in 0x0 environment (flutter/flutter#180457) 2026-01-08 matt.kosarek@canonical.com Implementation of tooltip windows for win32 (flutter/flutter#179147) 2026-01-08 mdebbar@google.com [web] Don't serve files outside of project (flutter/flutter#180699) 2026-01-08 engine-flutter-autoroll@skia.org Roll Skia from 837be28dd218 to e9b3264ade0c (1 revision) (flutter/flutter#180702) 2026-01-08 sokolovskyi.konstantin@gmail.com Add new motion accessibility features to iOS. (flutter/flutter#178102) 2026-01-08 104009581+Saqib198@users.noreply.github.com Fix iOS xattr removal to clear all extended attributes (flutter/flutter#180355) 2026-01-08 bkonyi@google.com [ Widget Preview ] Move widget_preview_scaffold tests to `dev/integration_tests/widget_preview_scaffold` (flutter/flutter#180658) 2026-01-08 30870216+gaaclarke@users.noreply.github.com De-interleaves engine dart test output (flutter/flutter#180651) 2026-01-08 zhongliu88889@gmail.com [web] Fix SemanticsService.announce not working inside dialogs (flutter/flutter#179958) 2026-01-08 engine-flutter-autoroll@skia.org Roll Skia from 42233226ac56 to 837be28dd218 (2 revisions) (flutter/flutter#180693) 2026-01-08 iinozemtsev@google.com Roll Dart SDK to 3.11.0-296.2.beta (flutter/flutter#180685) 2026-01-08 116356835+AbdeMohlbi@users.noreply.github.com Improve code quality in `AndroidTouchProcessorTest.java` (flutter/flutter#180583) 2026-01-08 1961493+harryterkelsen@users.noreply.github.com Revert "Reverts "[reland] Unify canvas creation and Surface code in S…kwasm and CanvasKit (#179473)" (#180152)" (flutter/flutter#180610) 2026-01-08 engine-flutter-autoroll@skia.org Roll Skia from a0c407bce408 to 42233226ac56 (4 revisions) (flutter/flutter#180688) 2026-01-08 bkonyi@google.com [ Tool ] Fix flake in overall_experience_test.dart (flutter/flutter#180655) 2026-01-08 engine-flutter-autoroll@skia.org Roll Packages from 9705815 to 039a026 (6 revisions) (flutter/flutter#180684) 2026-01-08 104147021+MohammedTarigg@users.noreply.github.com flutter_tools: Auto-generate ExportOptions.plist for manual iOS code signing (flutter/flutter#177888) 2026-01-08 engine-flutter-autoroll@skia.org Roll Skia from 58837e160874 to a0c407bce408 (2 revisions) (flutter/flutter#180679) 2026-01-08 engine-flutter-autoroll@skia.org Roll Skia from 1e3266fdba86 to 58837e160874 (1 revision) (flutter/flutter#180677) 2026-01-08 engine-flutter-autoroll@skia.org Roll Skia from 3c47ea10638f to 1e3266fdba86 (4 revisions) (flutter/flutter#180675) 2026-01-08 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from dTvN_JVSCfGFRasvH... to rxeg-6UB678HKJ4UQ... (flutter/flutter#180673) ...
This adds support for buildind desktop linux applications for riscv64 on the flutter tool, as well as basic riscv64 support for the tool.
This is a first move towards fixing #99963. Along with #178712 that allows building an engine for
riscv64, this PR allows me to build and run the flutter 'hello world' app on RISC-V hardware:This allows someone who built a flutter engine and exposed it on a webserver to run commands like:
This means that even if Google does not want to support Flutter on RISC-V officially (hosting the artifacts), community-managed servers could host the RISC-V flutter engines/artifacts. It also means that internally, companies using Flutter on RISC-V would just have to build their engine and setup such a server, and it allows them to use the upstream Flutter tool.
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.