change_install_name.py was operating on framework library files
in-place, which breaks GN's timestamp analysis handling since a file
can't be both an input and output of an action. As a result no-op builds
on macOS were not actually no-ops.
This changes the script to operate on an output copy, both fixing the
no-op build issue, and simplifying the GN framework construction scripts
by combining the copy step and the install-name step.
Fixes https://github.com/flutter/flutter/issues/33465
* Find the arm64 local engine build if the attached device is arm64
* Overwrite any previously copied gdbserver binary even if the binary is read only
* Stop any currently running gdbserver process for the package being debugged
Copies and renames the architecture-dependent iOS variants of
gen_snapshot to a destination directory. Now that the armv7-emitting
variant of gen_snapshot is 64-bit we can no longer bundle up
gen_snapshot as a fat binary with the x86 armv7 variant merged with the
x86_64 arm64 variant.
Prior to this the Android embedder code would extract the icudtl.dat asset out
of the APK and write it to local disk during the first startup of the app.
This change will make that work unnecessary and eliminate the risk of ICU
failures due to errors in the extraction process.
This adds create_macos_gen_snapshot.py, which can be used to generate a
multi-architecture (x86_64, i386) gen_snapshot fat binary. The resulting
binary can then be run in the desired mode using:
/usr/bin/arch -i386 path/to/gen_snapshot
/usr/bin/arch -x86_64 path/to/gen_snapshot
When creating AOT snapshots for iOS, running as an i386 binary will
generate armv7 code, whereas running as an x86_64 binary will generate
arm64 code.
The primary user of this script is the build bot.
This enforces that iOS Flutter.framework builds include arm64, armv7,
and x86_64 (simulator) architectures. This change also eliminates the
previous --device-out-dir option, which has been replaced by
--arm64-out-dir.
This adds support for --armv7-out-dir and renames --device-out-dir to
--arm64-out-dir for clarity. It preserves --device-out-dir as a fallback
until the bot recipe has been updated to use --arm64-out-dir.