Files
hermes-agent/constraints-termux.txt
Guillaume D.Isabelle (Ilex) 99049aa1f5 fix(termux): gate uvloop behind optional extra to unblock Android installs
uvloop (pulled in by uvicorn[standard]) cannot build on Android/Termux
because libuv's ./configure script fails on the non-FHS Bionic layout.
This bricks `pip install -e '.[termux]'` and `hermes update` on every
Android device.

Decompose `uvicorn[standard]` in core dependencies:
- Keep `uvicorn` (without [standard]) as a core dep
- Add `httptools` and `watchfiles` directly (both build cleanly on
  Android with ANDROID_API_LEVEL set)
- Gate `uvloop` behind a new `[uvloop]` optional extra
- Include `[uvloop]` in `[all]` so desktop/server installs retain the
  performance benefit automatically
- Omit `[uvloop]` from `[termux]` and `[termux-all]`

Also update the `[web]` extra to use plain `uvicorn` (without
[standard]) since httptools/watchfiles are now core deps — this
prevents `[termux-all]` (which includes `[web]`) from re-introducing
the uvloop dependency.

Update constraints-termux.txt with documentation explaining the
uvloop exclusion rationale.

uvicorn falls back to the stdlib asyncio event loop when uvloop is
absent — no hermes codepath requires uvloop specifically.

Tested on: Termux 0.119 / Android 10 / aarch64 / Python 3.13.12

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-20 12:00:44 -07:00

23 lines
845 B
Plaintext

# Termux / Android dependency constraints for Hermes Agent.
#
# Usage:
# python -m pip install -e '.[termux]' -c constraints-termux.txt
#
# These pins keep the tested Android install path stable when upstream packages
# move faster than Termux-compatible wheels / sdists.
#
# NOTE: uvloop is excluded from the Termux install path because libuv's
# ./configure script does not run on Android (non-FHS layout, bionic libc).
# uvicorn falls back to the stdlib asyncio event loop automatically when
# uvloop is absent — no performance-critical codepath depends on it.
# The [uvloop] optional extra is included in [all] but intentionally omitted
# from [termux] and [termux-all]. See pyproject.toml for details.
ipython<10
jedi>=0.18.1,<0.20
parso>=0.8.4,<0.9
stack-data>=0.6,<0.7
pexpect>4.3,<5
matplotlib-inline>=0.1.7,<0.2
asttokens>=2.1,<3