mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-11-04 00:33:12 +00:00
fix(ci): build macOS arm64 with Flutter 3.44 (#16821)
* fix(ci): build macOS arm64 with Flutter 3.44 Flutter 3.24.5's macOS engine can crash in attributedSubstringForProposedRange with an out-of-bounds range on an empty string (#16817). The fix (flutter/flutter#153157) landed after 3.24 and was never cherry-picked, and 3.44 has the bounds check. So macOS arm64 now builds with Flutter 3.44.9, the same way Windows arm64 does: the 3.44 bridge artifact and the shared source patch script. The script uses GNU `sed -i`, which BSD sed on macOS rejects, so the step puts GNU sed first on PATH. The 3.24 dropdown patch is skipped, because 3.44 already has that fix. macOS x86_64 stays on 3.24.5: 3.44's FlutterMacOS needs macOS 10.15 there, and the build targets 10.14. The Dart tests move to the x86_64 job, so CI still runs them against the 3.24.5 sources that most platforms ship. Refs #16817 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(ci): keep CocoaPods on macOS arm64 and run Dart tests on both arches Flutter 3.44 turns on Swift Package Manager by default. On the first `flutter build macos` it would migrate Runner.xcodeproj and Runner.xcscheme, and build file_selector_macos, path_provider_foundation, url_launcher_macos and video_player_avfoundation through SwiftPM while the other 12 plugins stay on CocoaPods. If the migration fails, the build fails. All 16 macOS plugins still ship a podspec, so turning SwiftPM off keeps arm64 on the CocoaPods-only path the 3.24.5 build uses, and this change only swaps the engine. The Dart tests now run on both macOS jobs: x86_64 covers the 3.24.5 sources most platforms ship, and arm64 covers the patched 3.44 sources it ships. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: update comments that still call Windows arm64 the only Flutter 3.44 build The FLUTTER_WINDOWS_ARM_VERSION note, the Windows source-patch step and the header of apply_flutter_3.44_source_patches.sh still said Windows arm64 is the only Flutter 3.44 target. They now mention macOS arm64 too, and the script header records that macOS needs GNU sed for its `sed -i` calls. Comments only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: make test_RustDesk_interval_sleep deterministic The test recorded tick times as wall-clock seconds, rounded to the nearest second, and asserted all 5 were unique. If the runner stalled for close to a second, two correct ticks rounded to the same value and the test failed (macOS arm64 CI on #16821: left 5, right 4). It now runs on tokio's paused clock and checks what ThrottledInterval guarantees: ticks are at least 0.9 * period apart. A plain tokio interval bursts its missed ticks with no gap, so a lost throttle still fails. This needs tokio's test-util feature for the existing dev-dependency. It adds no crates, so Cargo.lock is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
29d1ab26a1
commit
4ec4ec3d14
5 files changed
+62
-37
No files matched your search
@@ -2,19 +2,22 @@
|
||||
# Applies the Flutter 3.44-only source/pubspec changes on the fly, in CI only.
|
||||
#
|
||||
# Windows arm64 needs Flutter >= 3.44 (the first stable release shipping an arm64 Dart SDK +
|
||||
# engine), which renamed DialogTheme/TabBarTheme -> *Data and needs newer extended_text/
|
||||
# google_fonts. Every other platform is still on Flutter 3.24.5, where the old names/versions
|
||||
# are required, so these changes are kept OUT of the committed sources and applied here instead.
|
||||
# engine), and macOS arm64 builds with 3.44 for its NSTextInputContext crash fix
|
||||
# (https://github.com/rustdesk/rustdesk/issues/16817). 3.44 renamed DialogTheme/TabBarTheme ->
|
||||
# *Data and needs newer extended_text/google_fonts. Every other platform is still on Flutter
|
||||
# 3.24.5, where the old names/versions are required, so these changes are kept OUT of the
|
||||
# committed sources and applied here instead.
|
||||
#
|
||||
# Used by BOTH the Windows arm64 build (flutter-build.yml) and its dedicated bridge artifact
|
||||
# (bridge.yml) so they share an identical 3.44 source state -- the generated *.freezed.dart must
|
||||
# compile against the same Flutter/freezed version the arm64 build resolves.
|
||||
# Used by BOTH arm64 builds (flutter-build.yml) and their shared bridge artifact (bridge.yml) so
|
||||
# they share an identical 3.44 source state -- the generated *.freezed.dart must compile against
|
||||
# the same Flutter/freezed version the arm64 builds resolve.
|
||||
#
|
||||
# Remove this script (and commit the changes) once upstream bumps Flutter across the board.
|
||||
#
|
||||
# Run from the repository root. sed is used (not a git-apply patch) because the checked-out
|
||||
# sources are CRLF on the windows-11-arm runner; the substitutions below are anchor-free and
|
||||
# therefore CRLF-safe.
|
||||
# therefore CRLF-safe. The calls are GNU sed (`sed -i` without a suffix); the macOS arm64 job
|
||||
# puts GNU sed first on PATH because BSD sed rejects them.
|
||||
set -euo pipefail
|
||||
|
||||
readonly NO_MATCHES=0
|
||||
|
||||
Reference in new issue
Block a user