Skip to content

Support Android/Bionic Python packaging and document Termux compatibility #637

Description

@afourniernv

Problem

NeMo Relay publishes Python wheels for glibc, musl, macOS, and Windows, but not Android/Bionic. This blocks consumers that declare Relay as a dependency on Android. NousResearch/hermes-agent#76643 currently works around the failure by excluding Relay on Android and falling back to its no-op Relay host.

The recent musllinux packaging work does not cover this case: Termux binaries use Android Bionic, not musl.

There are two distinct compatibility targets:

  • Official CPython on Android (Python 3.13+, PEP 738), which selects android_<api>_<abi> wheels accepted by PyPI.
  • Legacy Termux Python installations that identify as linux/aarch64 while linking against Bionic. PyPI does not accept a generic linux_aarch64 binary wheel, and those environments may not select PEP 738 Android tags.

Proposed work

  • Build and publish CPython ABI3 wheels for android_24_arm64_v8a and android_24_x86_64.
  • Smoke-test wheel installation and import nemo_relay in an Android x86_64 emulator in CI.
  • Validate the ARM64 artifact on an Android device or ARM64 emulator before documenting it as supported.
  • Document the supported Android Python versions and explicitly distinguish them from older Termux Python environments.
  • Confirm whether current Termux Python selects PEP 738 Android tags. If it does not, keep consumer dependency markers fail-open and track any Termux-native distribution path separately.

Acceptance criteria

  • Release workflows collect and publish both Android wheel artifacts.
  • Wheel filenames use valid PEP 738 platform tags.
  • CI installs and imports the x86_64 wheel under Android.
  • ARM64 runtime validation is recorded before release.
  • Installation documentation states the Android and Termux support boundary.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions