Skip to content

Revert "Ship gen_snapshot for linux-arm64 hosts targeting Android"#186693

Merged
auto-submit[bot] merged 3 commits into
flutter:masterfrom
flutteractionsbot:revert-182552-1779128473
May 20, 2026
Merged

Revert "Ship gen_snapshot for linux-arm64 hosts targeting Android"#186693
auto-submit[bot] merged 3 commits into
flutter:masterfrom
flutteractionsbot:revert-182552-1779128473

Conversation

@flutteractionsbot

Copy link
Copy Markdown
Contributor

Reverts: Ship gen_snapshot for linux-arm64 hosts targeting Android

Initiated by: @eyebrowsoffire

Reason for reverting: We do not have any bots capable of servicing this builder, and it is breaking our releases as well as flutter precache --all

Original PR Author: @dbebawy

Reviewed By: @reidbaker

The original PR description is provided below:

Summary

Enable Android profile and release builds on ARM64 Linux hosts (AWS Graviton, GCP Tau T2A, self-hosted ARM64 runners, etc.), which currently fail because gen_snapshot is only shipped for linux-x64 hosts.

Supersedes #182275 and #182276 — combined into a single atomic commit per reviewer feedback.

Engine changes

  • BUILD.gn: Make gen_snapshot and analyze_snapshot zip output names host-architecture-aware (linux-arm64.zip vs linux-x64.zip) using explicit if (host_os == "linux" && host_cpu == "arm64") branching, matching the existing pattern for mac/windows.
  • linux_arm64_android_aot_engine.json (new): CI builder config following the secondary builder pattern (matching mac_android_aot_engine.json). Only produces host-specific archives — shared artifacts (artifacts.zip, symbols.zip, embedding/abi jars) continue to be produced by the existing x64 Linux builder.
  • .ci.yaml: New builder entry with bringup: true, os=Linux, cpu=arm64.

Framework changes

  • flutter_cache.dart: Convert _linuxBinaryDirs from a hardcoded linux-x64 const list to a function parameterized by host architecture, using the existing cache.getHostPlatformArchName() pattern from LinuxEngineArtifacts.
  • artifacts.dart: Clean up stale TODO comment — replace with accurate explanation of why darwin-arm64 is remapped to darwin-x64 (universal binary). No Linux remapping needed since Linux ships native binaries per host architecture.
  • Tests: Add tests for both x64 and arm64 host artifact resolution in cache_test.dart and artifacts_test.dart, following the existing LinuxEngineArtifacts test pattern.

Infrastructure notes

  • The builder is set to bringup: true to allow stabilization before becoming a blocking builder.
  • Requires ARM64 Linux machines in the LUCI swarming pool (os=Linux + cpu=arm64).
  • 8 build configurations: {arm, arm64, x64, riscv64} × {profile, release}. This matches the x64 Linux builder's target coverage. The macOS equivalent has 6 builds (no riscv64).
  • Uses RBE (--rbe) for remote compilation.

Fixes #75864
Fixes #168980

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Test plan

Verified by PR CI (x64 hosts)

  • linux_android_aot_engine (x64) passed — BUILD.gn change still produces linux-x64.zip correctly
  • mac_android_aot_engine passed — darwin-x64.zip unaffected
  • windows_android_aot_engine passed — windows-x64.zip unaffected
  • ci.yaml validation passed — builder JSON and .ci.yaml entry are structurally valid
  • Archive paths are unique across all builder configs (verified locally)
  • Unit tests pass for AndroidGenSnapshotArtifacts.getBinaryDirs() returning linux-x64 entries on x64 hosts and linux-arm64 entries on arm64 hosts
  • Unit tests pass for getArtifactPath resolving gen_snapshot to correct host-architecture path on both x64 and arm64 Linux

Requires ARM64 Linux hardware (post-bringup)

The new linux_arm64_android_aot_engine builder is bringup: true and does not run on PR checks. The BUILD.gn code path (host_cpu == "arm64") is only exercised on ARM64 hosts. The following need to be validated once the builder runs on ARM64 infrastructure:

  • gen_snapshot compiles and links on ARM64 Linux
  • CI builder produces linux-arm64.zip archives for all Android target CPUs (arm, arm64, x64, riscv64) in both profile and release modes
  • analyze_snapshot produces analyze-snapshot-linux-arm64.zip for 64-bit targets
  • Artifacts download correctly on an ARM64 Linux host via flutter precache

@flutteractionsbot flutteractionsbot requested a review from a team as a code owner May 18, 2026 18:21
@flutteractionsbot flutteractionsbot requested review from mboetger and removed request for a team May 18, 2026 18:21
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label May 18, 2026
@github-actions github-actions Bot added platform-android Android applications specifically tool Affects the "flutter" command-line tool. See also t: labels. engine flutter/engine related. See also e: labels. team-android Owned by Android platform team labels May 18, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

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 removes Linux ARM64 support for Android engine artifacts, updating CI configurations, build scripts, and artifact management within the Flutter tool to default to x64 on Linux hosts. Feedback suggests maintaining the use of injected dependencies for host platform detection and preserving descriptive documentation in artifacts.dart to ensure testability and clarity.

Comment on lines +603 to +606
// TODO(cbracken): Build Android gen_snapshot as Arm64 binary to run
// natively on Apple Silicon. See:
// https://github.com/flutter/flutter/issues/152281
HostPlatform hostPlatform = getCurrentHostPlatform();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This revert replaces a descriptive comment with a TODO and reverts to using the global getCurrentHostPlatform() function. It is better to keep the improved documentation and the use of the injected _operatingSystemUtils.hostPlatform for better testability, as these changes are independent of the Linux ARM64 support being reverted. The previous comment followed the style guide by explaining the "why" and "how" of the remapping logic.

Suggested change
// TODO(cbracken): Build Android gen_snapshot as Arm64 binary to run
// natively on Apple Silicon. See:
// https://github.com/flutter/flutter/issues/152281
HostPlatform hostPlatform = getCurrentHostPlatform();
// macOS gen_snapshot ships as a universal binary under the darwin-x64
// directory name, so remap darwin-arm64 to darwin-x64 for path resolution.
HostPlatform hostPlatform = _operatingSystemUtils.hostPlatform;
References
  1. Optimize for readability. Documentation should be useful: Explain the why and the how. (link)

@eyebrowsoffire eyebrowsoffire added the autosubmit Merge PR when tree becomes green via auto submit App label May 18, 2026
eyebrowsoffire
eyebrowsoffire previously approved these changes May 18, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 19, 2026
@auto-submit

auto-submit Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/186693, because - The status or check suite Linux analyze has failed. Please fix the issues identified (or deflake) before re-applying this label.

@github-actions github-actions Bot removed the CICD Run CI/CD label May 19, 2026
@eyebrowsoffire eyebrowsoffire added the autosubmit Merge PR when tree becomes green via auto submit App label May 19, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue May 19, 2026
Merged via the queue into flutter:master with commit 038a8b6 May 20, 2026
202 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 20, 2026
@eyebrowsoffire eyebrowsoffire added cp: beta cherry pick this pull request to beta release candidate branch and removed cp: beta cherry pick this pull request to beta release candidate branch labels May 20, 2026
@flutteractionsbot

Copy link
Copy Markdown
Contributor Author

Failed to create CP due to merge conflicts.
You will need to create the PR manually. See the cherrypick wiki for more info.

auto-submit Bot pushed a commit to flutter/packages that referenced this pull request May 20, 2026
flutter/flutter@259aeae...e03b91f

2026-05-20 engine-flutter-autoroll@skia.org Roll Packages from ade10ca to 1dfbada (6 revisions) (flutter/flutter#186811)
2026-05-20 brunocorona.alcantar@gmail.com Fix AnimatedList.separated assert when removing last item mid-removal… (flutter/flutter#186389)
2026-05-20 engine-flutter-autoroll@skia.org Roll Skia from d45969a5752e to 5f4f454b9662 (2 revisions) (flutter/flutter#186809)
2026-05-20 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from -F9Ci3Opxt06MixDl... to iKCvaD58jKStYGla0... (flutter/flutter#186796)
2026-05-20 engine-flutter-autoroll@skia.org Roll Skia from 19ad9707e5c6 to d45969a5752e (2 revisions) (flutter/flutter#186792)
2026-05-20 engine-flutter-autoroll@skia.org Roll Skia from 3471ebf5af0c to 19ad9707e5c6 (9 revisions) (flutter/flutter#186772)
2026-05-20 mdebbar@google.com [web] Refactor webparagraph painters to separate CK properly (flutter/flutter#186684)
2026-05-19 31859944+LongCatIsLooong@users.noreply.github.com Enable Swift testing in the iOS embedder (flutter/flutter#185712)
2026-05-19 mdebbar@google.com [web] Rename WebParagraph goldens (flutter/flutter#186680)
2026-05-19 engine-flutter-autoroll@skia.org Roll Skia from f1b406860c5e to 3471ebf5af0c (5 revisions) (flutter/flutter#186745)
2026-05-19 154381524+flutteractionsbot@users.noreply.github.com Revert "Ship gen_snapshot for linux-arm64 hosts targeting Android" (flutter/flutter#186693)
2026-05-19 bkonyi@google.com [ Tool ] Remove legacy analytics code (flutter/flutter#184994)
2026-05-19 chingjun@google.com Update Vulkan enum values (flutter/flutter#186694)
2026-05-19 1961493+harryterkelsen@users.noreply.github.com fix(web): Fixes CSS override detection when the browser has a default font size (flutter/flutter#186474)
2026-05-19 30870216+gaaclarke@users.noreply.github.com adds linux impeller hello world integration test (flutter/flutter#186715)
2026-05-19 jason-simmons@users.noreply.github.com Update the list of binaries in the code signing verification test to include new Dart snapshots (flutter/flutter#186754)
2026-05-19 brunocorona.alcantar@gmail.com Make EdgeDraggingAutoScroller respect ScrollPhysics (flutter/flutter#186541)
2026-05-19 bkonyi@google.com [ Widget Preview ] Fix inspector split resize focus loss over WebViews (flutter/flutter#186432)
2026-05-19 engine-flutter-autoroll@skia.org Roll Packages from b9bdd37 to ade10ca (1 revision) (flutter/flutter#186746)
2026-05-19 jason-simmons@users.noreply.github.com Manual Dart roll from 8e30b88e4d5a to 66873d2da857 (flutter/flutter#186690)
2026-05-19 bkonyi@google.com [ Widget Preview ] Improve zoom behavior and add zoom slider (flutter/flutter#186422)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
eyebrowsoffire added a commit to eyebrowsoffire/flutter that referenced this pull request May 20, 2026
…lutter#186693)

Reverts: [Ship gen_snapshot for linux-arm64 hosts targeting
Android](flutter#182552)

Initiated by: @eyebrowsoffire

Reason for reverting: We do not have any bots capable of servicing this
builder, and it is breaking our releases as well as `flutter precache
--all`

Original PR Author: @dbebawy

Reviewed By: @reidbaker

The original PR description is provided below:

## Summary

Enable Android **profile** and **release** builds on ARM64 Linux hosts
(AWS Graviton, GCP Tau T2A, self-hosted ARM64 runners, etc.), which
currently fail because `gen_snapshot` is only shipped for `linux-x64`
hosts.

Supersedes flutter#182275 and flutter#182276 — combined into a single atomic commit
per reviewer feedback.

### Engine changes

- **`BUILD.gn`**: Make `gen_snapshot` and `analyze_snapshot` zip output
names host-architecture-aware (`linux-arm64.zip` vs `linux-x64.zip`)
using explicit `if (host_os == "linux" && host_cpu == "arm64")`
branching, matching the existing pattern for mac/windows.
- **`linux_arm64_android_aot_engine.json`** (new): CI builder config
following the secondary builder pattern (matching
`mac_android_aot_engine.json`). Only produces host-specific archives —
shared artifacts (`artifacts.zip`, `symbols.zip`, embedding/abi jars)
continue to be produced by the existing x64 Linux builder.
- **`.ci.yaml`**: New builder entry with `bringup: true`, `os=Linux`,
`cpu=arm64`.

### Framework changes

- **`flutter_cache.dart`**: Convert `_linuxBinaryDirs` from a hardcoded
`linux-x64` const list to a function parameterized by host architecture,
using the existing `cache.getHostPlatformArchName()` pattern from
`LinuxEngineArtifacts`.
- **`artifacts.dart`**: Clean up stale TODO comment — replace with
accurate explanation of why `darwin-arm64` is remapped to `darwin-x64`
(universal binary). No Linux remapping needed since Linux ships native
binaries per host architecture.
- **Tests**: Add tests for both x64 and arm64 host artifact resolution
in `cache_test.dart` and `artifacts_test.dart`, following the existing
`LinuxEngineArtifacts` test pattern.

### Infrastructure notes

- The builder is set to `bringup: true` to allow stabilization before
becoming a blocking builder.
- Requires ARM64 Linux machines in the LUCI swarming pool (`os=Linux` +
`cpu=arm64`).
- 8 build configurations: {arm, arm64, x64, riscv64} × {profile,
release}. This matches the x64 Linux builder's target coverage. The
macOS equivalent has 6 builds (no riscv64).
- Uses RBE (`--rbe`) for remote compilation.

Fixes flutter#75864
Fixes flutter#168980

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

## Test plan

### Verified by PR CI (x64 hosts)

- [x] `linux_android_aot_engine` (x64) passed — `BUILD.gn` change still
produces `linux-x64.zip` correctly
- [x] `mac_android_aot_engine` passed — `darwin-x64.zip` unaffected
- [x] `windows_android_aot_engine` passed — `windows-x64.zip` unaffected
- [x] `ci.yaml validation` passed — builder JSON and `.ci.yaml` entry
are structurally valid
- [x] Archive paths are unique across all builder configs (verified
locally)
- [x] Unit tests pass for `AndroidGenSnapshotArtifacts.getBinaryDirs()`
returning `linux-x64` entries on x64 hosts and `linux-arm64` entries on
arm64 hosts
- [x] Unit tests pass for `getArtifactPath` resolving `gen_snapshot` to
correct host-architecture path on both x64 and arm64 Linux

### Requires ARM64 Linux hardware (post-bringup)

The new `linux_arm64_android_aot_engine` builder is `bringup: true` and
does not run on PR checks. The `BUILD.gn` code path (`host_cpu ==
"arm64"`) is only exercised on ARM64 hosts. The following need to be
validated once the builder runs on ARM64 infrastructure:

- [ ] `gen_snapshot` compiles and links on ARM64 Linux
- [ ] CI builder produces `linux-arm64.zip` archives for all Android
target CPUs (arm, arm64, x64, riscv64) in both profile and release modes
- [ ] `analyze_snapshot` produces `analyze-snapshot-linux-arm64.zip` for
64-bit targets
- [ ] Artifacts download correctly on an ARM64 Linux host via `flutter
precache`

---------

Co-authored-by: Jackson Gardner <jacksongardner@google.com>
matthewhendrix pushed a commit to matthewhendrix/flutter that referenced this pull request May 23, 2026
…lutter#186693)

Reverts: [Ship gen_snapshot for linux-arm64 hosts targeting
Android](flutter#182552)

Initiated by: @eyebrowsoffire

Reason for reverting: We do not have any bots capable of servicing this
builder, and it is breaking our releases as well as `flutter precache
--all`

Original PR Author: @dbebawy

Reviewed By: @reidbaker

The original PR description is provided below:

## Summary

Enable Android **profile** and **release** builds on ARM64 Linux hosts
(AWS Graviton, GCP Tau T2A, self-hosted ARM64 runners, etc.), which
currently fail because `gen_snapshot` is only shipped for `linux-x64`
hosts.

Supersedes flutter#182275 and flutter#182276 — combined into a single atomic commit
per reviewer feedback.

### Engine changes

- **`BUILD.gn`**: Make `gen_snapshot` and `analyze_snapshot` zip output
names host-architecture-aware (`linux-arm64.zip` vs `linux-x64.zip`)
using explicit `if (host_os == "linux" && host_cpu == "arm64")`
branching, matching the existing pattern for mac/windows.
- **`linux_arm64_android_aot_engine.json`** (new): CI builder config
following the secondary builder pattern (matching
`mac_android_aot_engine.json`). Only produces host-specific archives —
shared artifacts (`artifacts.zip`, `symbols.zip`, embedding/abi jars)
continue to be produced by the existing x64 Linux builder.
- **`.ci.yaml`**: New builder entry with `bringup: true`, `os=Linux`,
`cpu=arm64`.

### Framework changes

- **`flutter_cache.dart`**: Convert `_linuxBinaryDirs` from a hardcoded
`linux-x64` const list to a function parameterized by host architecture,
using the existing `cache.getHostPlatformArchName()` pattern from
`LinuxEngineArtifacts`.
- **`artifacts.dart`**: Clean up stale TODO comment — replace with
accurate explanation of why `darwin-arm64` is remapped to `darwin-x64`
(universal binary). No Linux remapping needed since Linux ships native
binaries per host architecture.
- **Tests**: Add tests for both x64 and arm64 host artifact resolution
in `cache_test.dart` and `artifacts_test.dart`, following the existing
`LinuxEngineArtifacts` test pattern.

### Infrastructure notes

- The builder is set to `bringup: true` to allow stabilization before
becoming a blocking builder.
- Requires ARM64 Linux machines in the LUCI swarming pool (`os=Linux` +
`cpu=arm64`).
- 8 build configurations: {arm, arm64, x64, riscv64} × {profile,
release}. This matches the x64 Linux builder's target coverage. The
macOS equivalent has 6 builds (no riscv64).
- Uses RBE (`--rbe`) for remote compilation.

Fixes flutter#75864
Fixes flutter#168980

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

## Test plan

### Verified by PR CI (x64 hosts)

- [x] `linux_android_aot_engine` (x64) passed — `BUILD.gn` change still
produces `linux-x64.zip` correctly
- [x] `mac_android_aot_engine` passed — `darwin-x64.zip` unaffected
- [x] `windows_android_aot_engine` passed — `windows-x64.zip` unaffected
- [x] `ci.yaml validation` passed — builder JSON and `.ci.yaml` entry
are structurally valid
- [x] Archive paths are unique across all builder configs (verified
locally)
- [x] Unit tests pass for `AndroidGenSnapshotArtifacts.getBinaryDirs()`
returning `linux-x64` entries on x64 hosts and `linux-arm64` entries on
arm64 hosts
- [x] Unit tests pass for `getArtifactPath` resolving `gen_snapshot` to
correct host-architecture path on both x64 and arm64 Linux

### Requires ARM64 Linux hardware (post-bringup)

The new `linux_arm64_android_aot_engine` builder is `bringup: true` and
does not run on PR checks. The `BUILD.gn` code path (`host_cpu ==
"arm64"`) is only exercised on ARM64 hosts. The following need to be
validated once the builder runs on ARM64 infrastructure:

- [ ] `gen_snapshot` compiles and links on ARM64 Linux
- [ ] CI builder produces `linux-arm64.zip` archives for all Android
target CPUs (arm, arm64, x64, riscv64) in both profile and release modes
- [ ] `analyze_snapshot` produces `analyze-snapshot-linux-arm64.zip` for
64-bit targets
- [ ] Artifacts download correctly on an ARM64 Linux host via `flutter
precache`

---------

Co-authored-by: Jackson Gardner <jacksongardner@google.com>
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
…r#11747)

flutter/flutter@259aeae...e03b91f

2026-05-20 engine-flutter-autoroll@skia.org Roll Packages from ade10ca to 1dfbada (6 revisions) (flutter/flutter#186811)
2026-05-20 brunocorona.alcantar@gmail.com Fix AnimatedList.separated assert when removing last item mid-removal… (flutter/flutter#186389)
2026-05-20 engine-flutter-autoroll@skia.org Roll Skia from d45969a5752e to 5f4f454b9662 (2 revisions) (flutter/flutter#186809)
2026-05-20 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from -F9Ci3Opxt06MixDl... to iKCvaD58jKStYGla0... (flutter/flutter#186796)
2026-05-20 engine-flutter-autoroll@skia.org Roll Skia from 19ad9707e5c6 to d45969a5752e (2 revisions) (flutter/flutter#186792)
2026-05-20 engine-flutter-autoroll@skia.org Roll Skia from 3471ebf5af0c to 19ad9707e5c6 (9 revisions) (flutter/flutter#186772)
2026-05-20 mdebbar@google.com [web] Refactor webparagraph painters to separate CK properly (flutter/flutter#186684)
2026-05-19 31859944+LongCatIsLooong@users.noreply.github.com Enable Swift testing in the iOS embedder (flutter/flutter#185712)
2026-05-19 mdebbar@google.com [web] Rename WebParagraph goldens (flutter/flutter#186680)
2026-05-19 engine-flutter-autoroll@skia.org Roll Skia from f1b406860c5e to 3471ebf5af0c (5 revisions) (flutter/flutter#186745)
2026-05-19 154381524+flutteractionsbot@users.noreply.github.com Revert "Ship gen_snapshot for linux-arm64 hosts targeting Android" (flutter/flutter#186693)
2026-05-19 bkonyi@google.com [ Tool ] Remove legacy analytics code (flutter/flutter#184994)
2026-05-19 chingjun@google.com Update Vulkan enum values (flutter/flutter#186694)
2026-05-19 1961493+harryterkelsen@users.noreply.github.com fix(web): Fixes CSS override detection when the browser has a default font size (flutter/flutter#186474)
2026-05-19 30870216+gaaclarke@users.noreply.github.com adds linux impeller hello world integration test (flutter/flutter#186715)
2026-05-19 jason-simmons@users.noreply.github.com Update the list of binaries in the code signing verification test to include new Dart snapshots (flutter/flutter#186754)
2026-05-19 brunocorona.alcantar@gmail.com Make EdgeDraggingAutoScroller respect ScrollPhysics (flutter/flutter#186541)
2026-05-19 bkonyi@google.com [ Widget Preview ] Fix inspector split resize focus loss over WebViews (flutter/flutter#186432)
2026-05-19 engine-flutter-autoroll@skia.org Roll Packages from b9bdd37 to ade10ca (1 revision) (flutter/flutter#186746)
2026-05-19 jason-simmons@users.noreply.github.com Manual Dart roll from 8e30b88e4d5a to 66873d2da857 (flutter/flutter#186690)
2026-05-19 bkonyi@google.com [ Widget Preview ] Improve zoom behavior and add zoom slider (flutter/flutter#186422)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
dbebawy added a commit to dbebawy/flutter that referenced this pull request Jun 25, 2026
Relands flutter#182552, reverted in flutter#186693 because the linux-arm64 builder
introduced in that PR had no bots in the LUCI pool and `flutter precache
--all` started 404'ing on missing `linux-arm64.zip` artifacts after the
beta cut.

This reland takes the direction @jtmcdole laid out on the original PR
on 2026-05-20 ("bypass the linux_arm64 tooling requirement since we
don't have official binaries in cipd"): the new
`linux_arm64_android_aot_engine` builder runs on the **existing
linux-x64 bot pool** and cross-compiles the host `gen_snapshot` binary
to linux-arm64. No new arm64 bots, no dependency on the
`flutter/android/sdk/all` CIPD package getting a linux-arm64 platform
build.

Engine code changes (+20 / -7 across 6 files):

- DEPS: drop `host_cpu == "arm64"` clause on the linux-arm64 clang CIPD
  download so x64 builders also fetch it (the clang binary is never
  executed; cross-compile happens via `--target=aarch64-linux-gnu`
  using the x64 clang).

- engine/src/build/config/BUILDCONFIG.gn: introduce `host_clang_cpu`,
  a new gn arg defaulting to `host_cpu`. Represents the CPU of
  build-time tools that run on the builder, distinct from `host_cpu`
  (the CPU the produced host binary runs on). No-op for native builds.

- engine/src/build/toolchain/linux/BUILD.gn: clang binary path is now
  keyed on `host_clang_cpu` instead of `host_cpu`, so the executable
  used during the build stays the x64 clang even when producing arm64
  output.

- engine/src/flutter/common/config.gni: the prebuilt Dart SDK path for
  build-time tooling (frontend server, kernel-to-AOT-snapshot) follows
  `host_clang_cpu`, so it resolves to the x64 dart-sdk on the builder.

- engine/src/flutter/shell/platform/android/BUILD.gn: zip names use
  `linux-\$host_cpu.zip` interpolation (matching what `flutter precache`
  looks for on arm64 hosts), and the gen_snapshot zip's deps now mirror
  what analyze_snapshot already does -- depend only on the host binary
  instead of `generate_snapshot_bins`, which runs gen_snapshot during
  the build (impossible when cross-compiled to aarch64).

- engine/src/flutter/tools/gn: add a `--host-cpu` flag, apply it in
  both `is_host_build()` and the cross-target (`else`) branches (the
  original PR only set host_cpu in the `is_host_build` branch, which is
  why `--host-cpu=arm64 --android` silently produced x86_64), and set
  `host_clang_cpu` to the build-machine CPU only when cross-compiling.

Plus CI plumbing for this reland:

- engine/src/flutter/ci/builders/linux_arm64_android_aot_engine.json:
  new builder config based on the reverted PR's version with four
  deltas: drone_dimensions drop `cpu=arm64` (runs on x64 pool), gn args
  add `--host-cpu arm64`, gclient_variables add
  `download_android_deps: false` and `download_jdk: false`, and ninja
  targets are the explicit `zip_archives/.../linux-arm64.zip` paths
  rather than the `flutter/shell/platform/android:gen_snapshot`
  umbrella target.

- engine/src/flutter/.ci.yaml: matching builder entry, same shape as
  the reverted PR's entry, `cpu=arm64` removed from drone_dimensions,
  `bringup: true`.

The framework changes from the reverted PR (flutter_tools cache /
artifact-path resolution) are intentionally NOT included here. They
land in a follow-up PR once the new builder has produced
`linux-arm64.zip` to GCS for at least one release. That sequencing is
the direct fix for the `flutter precache --all` 404 that triggered the
original revert: artifacts before manifest.

Empirically validated on native linux-x64 hardware (Debian 12 Docker,
real Intel x86_64, no QEMU):

- Original validation 2026-05-29 against `c7f49fe0` produced
  `linux-arm64.zip` (1.77 MB) and `analyze-snapshot-linux-arm64.zip`
  (2.8 MB).

- Fresh re-validation 2026-06-04 against `14c05c42` (then-current
  `main`): patches apply cleanly, `ninja clang_arm64/gen_snapshot`
  exits 0 in 6m37s `-j8`, output binary is ELF aarch64 PIE,
  glibc-linked, not Android bionic. Binary SHA256:
  898413a122ef33d42044fb0a2aa3259803f051ef9063b4d8ddd5e4eb7fa49cd0.

Runtime smoke test on real arm64 hardware (Graviton / arm64 VM / etc.)
is still owed before flipping `bringup: true` to false. QEMU user-mode
segfaults on gen_snapshot -- a known qemu limitation with executable
mmap / TLS-heavy runtimes, not a binary defect.

Fixes flutter#75864
Fixes flutter#168980
via-guy pushed a commit to via-guy/flutter that referenced this pull request Jun 26, 2026
…lutter#186693)

Reverts: [Ship gen_snapshot for linux-arm64 hosts targeting
Android](flutter#182552)

Initiated by: @eyebrowsoffire

Reason for reverting: We do not have any bots capable of servicing this
builder, and it is breaking our releases as well as `flutter precache
--all`

Original PR Author: @dbebawy

Reviewed By: @reidbaker

The original PR description is provided below:

## Summary

Enable Android **profile** and **release** builds on ARM64 Linux hosts
(AWS Graviton, GCP Tau T2A, self-hosted ARM64 runners, etc.), which
currently fail because `gen_snapshot` is only shipped for `linux-x64`
hosts.

Supersedes flutter#182275 and flutter#182276 — combined into a single atomic commit
per reviewer feedback.

### Engine changes

- **`BUILD.gn`**: Make `gen_snapshot` and `analyze_snapshot` zip output
names host-architecture-aware (`linux-arm64.zip` vs `linux-x64.zip`)
using explicit `if (host_os == "linux" && host_cpu == "arm64")`
branching, matching the existing pattern for mac/windows.
- **`linux_arm64_android_aot_engine.json`** (new): CI builder config
following the secondary builder pattern (matching
`mac_android_aot_engine.json`). Only produces host-specific archives —
shared artifacts (`artifacts.zip`, `symbols.zip`, embedding/abi jars)
continue to be produced by the existing x64 Linux builder.
- **`.ci.yaml`**: New builder entry with `bringup: true`, `os=Linux`,
`cpu=arm64`.

### Framework changes

- **`flutter_cache.dart`**: Convert `_linuxBinaryDirs` from a hardcoded
`linux-x64` const list to a function parameterized by host architecture,
using the existing `cache.getHostPlatformArchName()` pattern from
`LinuxEngineArtifacts`.
- **`artifacts.dart`**: Clean up stale TODO comment — replace with
accurate explanation of why `darwin-arm64` is remapped to `darwin-x64`
(universal binary). No Linux remapping needed since Linux ships native
binaries per host architecture.
- **Tests**: Add tests for both x64 and arm64 host artifact resolution
in `cache_test.dart` and `artifacts_test.dart`, following the existing
`LinuxEngineArtifacts` test pattern.

### Infrastructure notes

- The builder is set to `bringup: true` to allow stabilization before
becoming a blocking builder.
- Requires ARM64 Linux machines in the LUCI swarming pool (`os=Linux` +
`cpu=arm64`).
- 8 build configurations: {arm, arm64, x64, riscv64} × {profile,
release}. This matches the x64 Linux builder's target coverage. The
macOS equivalent has 6 builds (no riscv64).
- Uses RBE (`--rbe`) for remote compilation.

Fixes flutter#75864
Fixes flutter#168980

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

## Test plan

### Verified by PR CI (x64 hosts)

- [x] `linux_android_aot_engine` (x64) passed — `BUILD.gn` change still
produces `linux-x64.zip` correctly
- [x] `mac_android_aot_engine` passed — `darwin-x64.zip` unaffected
- [x] `windows_android_aot_engine` passed — `windows-x64.zip` unaffected
- [x] `ci.yaml validation` passed — builder JSON and `.ci.yaml` entry
are structurally valid
- [x] Archive paths are unique across all builder configs (verified
locally)
- [x] Unit tests pass for `AndroidGenSnapshotArtifacts.getBinaryDirs()`
returning `linux-x64` entries on x64 hosts and `linux-arm64` entries on
arm64 hosts
- [x] Unit tests pass for `getArtifactPath` resolving `gen_snapshot` to
correct host-architecture path on both x64 and arm64 Linux

### Requires ARM64 Linux hardware (post-bringup)

The new `linux_arm64_android_aot_engine` builder is `bringup: true` and
does not run on PR checks. The `BUILD.gn` code path (`host_cpu ==
"arm64"`) is only exercised on ARM64 hosts. The following need to be
validated once the builder runs on ARM64 infrastructure:

- [ ] `gen_snapshot` compiles and links on ARM64 Linux
- [ ] CI builder produces `linux-arm64.zip` archives for all Android
target CPUs (arm, arm64, x64, riscv64) in both profile and release modes
- [ ] `analyze_snapshot` produces `analyze-snapshot-linux-arm64.zip` for
64-bit targets
- [ ] Artifacts download correctly on an ARM64 Linux host via `flutter
precache`

---------

Co-authored-by: Jackson Gardner <jacksongardner@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD engine flutter/engine related. See also e: labels. platform-android Android applications specifically team-android Owned by Android platform team tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

5 participants