Skip to content

Add armv7a emulator CI job#34

Merged
jappeace merged 4 commits intojappeace:masterfrom
jappeace-sloth:armv7a-emulator-ci
Apr 7, 2026
Merged

Add armv7a emulator CI job#34
jappeace merged 4 commits intojappeace:masterfrom
jappeace-sloth:armv7a-emulator-ci

Conversation

@jappeace-sloth
Copy link
Copy Markdown

Summary

  • Parameterize nix/emulator-all.nix with androidArch so the same test infrastructure builds single-arch APKs for either aarch64 or armv7a
  • Add emulator-armv7a attribute to nix/ci.nix
  • Add android-armv7a-emulator GitHub Actions job that builds and runs armv7a emulator integration tests

Depends on #33 (armv7a cross-compilation support).

Test plan

  • nix-instantiate nix/ci.nix -A emulator-all evaluates successfully (aarch64 path unchanged)
  • nix-instantiate nix/ci.nix -A emulator-armv7a evaluates successfully (new armv7a path)
  • CI android job passes (existing aarch64 emulator tests)
  • CI android-armv7a-emulator job passes (new armv7a emulator tests)

🤖 Generated with Claude Code

jappeace-sloth and others added 4 commits April 6, 2026 22:33
Enables haskell-mobile to cross-compile for armv7a-android, targeting
Wear OS devices that ship 32-bit ARM userspace only (e.g. OnePlus Watch 3).

Key changes:
- Parameterize nix/lib.nix, cross-deps.nix, android.nix with androidArch
- Multi-arch APK support in mkApk (accepts sharedLibs list)
- Update nixpkgs pin for GHC LLVM backend fix (NixOS/nixpkgs#440774)
- Patch nixpkgs compiler-rt for armv7a: add to ARM32 arch set, fix
  baremetal arch detection, exclude os_version_check.c (no pthread.h)
- Patch LLVM package set: use libstdcxxClang (no libcxx dep) for Android
  to avoid unbuildable libcxx bootstrap (GNU ld.bfd can't link Android libs)
- Disable profiled libraries for armv7a (LLVM ARM backend llc crash in
  ARMAsmPrinter::emitXXStructor)

Closes jappeace#28

Prompt: continue implementing armv7a-android support (issue jappeace#28), fixing
libcxx bootstrap linker issue and LLVM profiling crash

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Parameterize emulator-all.nix with androidArch so the same test
infrastructure can build single-arch APKs for either aarch64 or armv7a.
Add emulator-armv7a attribute to ci.nix and a matching GitHub Actions job
that builds and runs the armv7a emulator integration tests.

Prompt: Implement the plan to add armv7a emulator CI job
Tokens: ~70k input, ~5k output

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prompt: explain what armeabi-v7a is for in CI and nix code
Tokens: ~80k input, ~1k output

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
API 34 x86_64 emulator only has arm64-v8a translation, not
armeabi-v7a. API 30 google_apis_playstore still includes 32-bit
ARM translation, which is needed to run Wear OS armv7a APKs in
the emulator.

Prompt: fix armv7a emulator CI failing with INSTALL_FAILED_NO_MATCHING_ABIS
Tokens: ~100k input, ~3k output

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jappeace jappeace merged commit 93516d4 into jappeace:master Apr 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants