Skip to content

Bug(WinGet): libperry_ui_android.a for Android target not bundled in WinGet package #5875

Description

@keufcp

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugConfirmed defect or regression

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions