Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/actions/prepare-android-gradle/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Prepare private Android Gradle state
description: Avoid persistent runner Gradle caches and select the job JDK.
runs:
using: composite
steps:
- name: Isolate Gradle and select the job JDK
shell: bash
run: |
set -euo pipefail
gradle_root="$(mktemp -d "$RUNNER_TEMP/zstandard-gradle.XXXXXX")"
# RUNNER_TEMP is removed by the runner after this job. Never clear the
# operator's Gradle cache or stop daemons owned by other jobs.
printf 'org.gradle.daemon=false\norg.gradle.workers.max=2\n' > "$gradle_root/gradle.properties"
printf 'GRADLE_USER_HOME=%s\n' "$gradle_root" >> "$GITHUB_ENV"
# Flutter otherwise prefers an installed Android Studio JBR. The
# setup-flutter launcher keeps this setting in the job's own profile.
flutter config --jdk-dir="${JAVA_HOME:?The job JDK is required}"
14 changes: 14 additions & 0 deletions .github/actions/setup-flutter/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ and removes only its own simulator UUID. Setup does not install Xcode or accept
Apple agreements. The reconciliation keeps develop's existing test matrices,
coverage thresholds and complete package publication workflow.

The iOS integration and release-candidate jobs additionally use a disposable
copy of Flutter 3.47.2 with the official simulator log-readiness fix backported
from flutter/flutter#193142. The SDK in the shared tool cache is unchanged.
The job's existing launcher selects the private copy through `FLUTTER_ROOT`,
and cleanup removes only that job's marked directory. See
[`../../patches/README.md`](../../patches/README.md) for provenance and removal.

The Linux dependency action reuses installed packages and downloads missing
packages into a private prefix with their dependency closure. It never runs
sudo, package maintainer scripts, dpkg repair or host package installation.
Expand All @@ -44,3 +51,10 @@ search variables that would override the NDK sysroot. The mixed x86_64/AArch64
release job retains private native metadata and clears those variables only
for the cross build, preserving the AArch64 compiler sysroot. WebAssembly
regeneration uses the same isolation for Emscripten.

Android integration and candidate builds use `prepare-android-gradle` after JDK
setup. Its job-owned Gradle home bypasses persistent runner caches, bounds worker
concurrency and keeps daemons local to the invocation. Candidate validation also
separates modern and legacy consumer caches. Flutter selects the job's JDK in its
private settings profile; the operator's Gradle cache and Flutter settings stay
unchanged.
2 changes: 1 addition & 1 deletion .github/actions/setup-flutter/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ runs:
using: composite
steps:
- name: Install Flutter
uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 # v2
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: ${{ inputs.flutter-version }}
Expand Down
20 changes: 20 additions & 0 deletions .github/patches/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Flutter iOS log readiness backport

`flutter-ios-log-readiness.patch` backports Flutter's official fix and its three
regression tests from commit `c3ed85ef987759ee54a6bce275490cde2a238dc1`
([flutter/flutter#193142](https://github.com/flutter/flutter/pull/193142)).
The first hunk's unchanged context is shortened to fit stable 3.47.2, and the
test fixture omits the newer simulator constructor's `cpuArch` argument.
The production Dart change is identical to upstream. Flutter's source and
tests retain their existing BSD license headers.

The simulator log stream must deliver its readiness header before Flutter
launches the test app. Otherwise it can miss the app's one-time VM service URL
and wait indefinitely after a successful build (flutter/flutter#181771).

The setup script accepts only the reviewed Flutter 3.47.2 commit
`d3b14c876900e553bc736ca19295fc09e3853e8e`. It patches a job-owned SDK copy,
rebuilds that copy's tool snapshot on its next invocation and leaves the shared
SDK unchanged. The original tests and the 900-second integration limit remain.
CI runs the upstream delayed-log-stream regression tests against the patched
SDK. Remove this backport when the selected stable SDK includes the fix.
Loading
Loading