You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
4.**`package.yaml` uses `eval()`** for variable resolution — be careful with template strings.
48
52
5.**`debuild()` auto-syncs** from Windows to WSL via `[sync]` config before packaging.
49
53
6.**GN flag `is_termux=true`** activates custom BUILD.gn rules that add `-llog -lm` for Android logging symbols.
54
+
7.**`utils.py __MODE__` must be `('debug', 'release', 'profile')`** — debug first! `Output.any` picks the first existing directory. If release comes first, `output.any` points to release (product mode) dart-sdk snapshots, breaking the entire Flutter CLI.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+18Lines changed: 18 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [3.41.5-termux] - 2026-03-25
9
+
10
+
### Added
11
+
- Flutter version upgrade: 3.35.0 → 3.41.5 (Dart 3.11.3)
12
+
-**Linux release/profile engine builds**: `build_all()` now compiles all three Linux modes (debug, release, profile)
13
+
- Full build matrix verified on device (6/6): Linux debug/release/profile + APK debug/release/profile
14
+
15
+
### Fixed
16
+
-**`flutter build linux` (release/profile) failure**: `build_all()` was only building debug mode engine for Linux, leaving `linux_release_arm64/` and `linux_profile_arm64/` empty in the deb package
17
+
-**`utils.py __MODE__` ordering bug**: Original order `('release', 'debug', 'profile')` caused `Output.any` to select release (product mode) dart-sdk snapshots when release directory exists, breaking the entire Flutter CLI. Fixed to `('debug', 'release', 'profile')`
18
+
19
+
### Technical Details
20
+
- Build output now includes 5 directories: `linux_debug_arm64/`, `linux_release_arm64/`, `linux_profile_arm64/`, `android_release_arm64/`, `android_profile_arm64/`
21
+
-`build_all()` expanded from 8 to 12 steps to include Linux release/profile configure+build
22
+
- Deb package size increased from ~541MB to ~662MB due to additional engine artifacts
@@ -119,10 +134,17 @@ In `build.py` `build()` method:
119
134
120
135
**Important**: `flutter_gtk` target must be enabled, otherwise `flutter build linux` fails.
121
136
137
+
## Internal Patterns
138
+
139
+
-**`@utils.record` / `@utils.recordm`**: Decorators that auto-log all method calls with args. Set `NO_RECORD=1` to disable.
140
+
-**`Build.sync()`**: Detects Windows vs WSL via `platform.system()`. On Windows, wraps `cp` in `wsl -e bash -c`; on WSL, runs directly.
141
+
-**`Package.__format__()`**: Uses `string.Template.safe_substitute()` for `$variable` expansion in `package.yaml`.
142
+
-**`package.yaml``define` blocks**: Use `eval()` with globals (`root`, `arch`, `output`, `version`) — never put untrusted strings here.
143
+
122
144
## Known Limitations
123
145
124
146
1.**APK only supports ARM64**: android-arm and android-x64 gen_snapshot cannot be cross-compiled (BoringSSL 32-bit issues, sysroot incompatibility)
125
-
2.Uses debug mode binaries due to sysroot conflicts (glibc vs bionic headers)
147
+
2.**`utils.py __MODE__` must be `('debug', 'release', 'profile')`**: debug first! `Output.any` picks the first existing directory. If release comes first, product mode dart-sdk snapshots break the entire Flutter CLI.
126
148
3. See `BUILD_GUIDE.md` for detailed troubleshooting
6.**Windows↔WSL sync**: `build.toml [sync]` section defines paths to copy from Windows mount to WSL native fs before `debuild`, preventing stale-file issues.
77
79
80
+
7.**`utils.py __MODE__` must be `('debug', 'release', 'profile')`**: `Output.any` picks the first existing build directory. If `release` is first and `linux_release_arm64/` exists, `output.any` selects it — its `product` mode dart-sdk snapshots will break the entire Flutter CLI. Debug must always be first.
81
+
78
82
## Termux Runtime: post_install.sh Auto-Fixes
79
83
80
84
`post_install.sh` automatically handles these ARM64 compatibility issues:
0 commit comments