What happened
When compiling a TypeScript application that imports perry/ui for the Android target (--target android) using the WinGet-installed Perry CLI, the build fails at the linking stage with Error: perry/ui imported but libperry_ui_android.a not found..
Inspecting the WinGet package installation directory (aarch64-linux-android\release\) reveals that only libperry_runtime.a and libperry_stdlib.a are included, and libperry_ui_android.a is completely missing from the release archive.
What you expected
The WinGet release package should bundle libperry_ui_android.a under the aarch64-linux-android/release/ directory alongside runtime and stdlib archives, allowing users to cross-compile Android UI applications out of the box without needing to build the UI backend manually from source.
Minimal reproduction
import { App, Text } from 'perry/ui';
App({ title: 'Sample Android App', width: 400, height: 300, body: Text('Hello Android') });
Command you ran:
perry compile main.ts --target android -o sample.apk
Environment
• Perry version: 0.5.1182
• Host OS: Windows 11
• Target: android ( aarch64-linux-android )
• Rust toolchain (if building from source): N/A (prebuilt binary)
• Installed via: winget
Diagnostic output
auto-optimize: Perry workspace source not found, using prebuilt libperry_runtime.a + libperry_stdlib.a Linking (runtime-only)...
Error: perry/ui imported but libperry_ui_android.a not found. Build with: RUSTC_BOOTSTRAP=1 RUSTFLAGS="-Z tls- model=global-dynamic" cargo build --release -p perry-ui-android --target aarch64-linux-android
Anything else
In .github/workflows/release-packages.yml , the Windows package assembly step explicitly copies only the runtime and stdlib archives into staging/aarch64-linux-android/release :
$androidLibs = @("libperry_runtime.a", "libperry_stdlib.a")
Furthermore, the CI build step for Windows release packages only compiles perry-runtime and perry-stdlib for aarch64-linux-android (around lines 422-423):
cargo build --release --target aarch64-linux-android -p perry-runtime
cargo build --release --target aarch64-linux-android -p perry-stdlib
To resolve this issue, perry-ui-android needs to be added to both the cargo build --release --target aarch64-linux-android CI leg and the $androidLibs array when packaging the WinGet zip archive.
What happened
When compiling a TypeScript application that imports
perry/uifor the Android target (--target android) using the WinGet-installed Perry CLI, the build fails at the linking stage withError: perry/ui imported but libperry_ui_android.a not found..Inspecting the WinGet package installation directory (
aarch64-linux-android\release\) reveals that onlylibperry_runtime.aandlibperry_stdlib.aare included, andlibperry_ui_android.ais completely missing from the release archive.What you expected
The WinGet release package should bundle
libperry_ui_android.aunder theaarch64-linux-android/release/directory alongside runtime and stdlib archives, allowing users to cross-compile Android UI applications out of the box without needing to build the UI backend manually from source.Minimal reproduction
Command you ran:
Environment
• Perry version: 0.5.1182
• Host OS: Windows 11
• Target: android ( aarch64-linux-android )
• Rust toolchain (if building from source): N/A (prebuilt binary)
• Installed via: winget
Diagnostic output
Anything else
In
.github/workflows/release-packages.yml, the Windows package assembly step explicitly copies only the runtime and stdlib archives into staging/aarch64-linux-android/release :Furthermore, the CI build step for Windows release packages only compiles perry-runtime and perry-stdlib for
aarch64-linux-android(around lines 422-423):To resolve this issue,
perry-ui-androidneeds to be added to both thecargo build --release --target aarch64-linux-androidCI leg and the$androidLibsarray when packaging the WinGet zip archive.