Skip to content

Add android/arm64 release binary for Termux (#28) - #29

Merged
drogers0 merged 3 commits into
mainfrom
android-arm64-release
Jul 15, 2026
Merged

Add android/arm64 release binary for Termux (#28)#29
drogers0 merged 3 commits into
mainfrom
android-arm64-release

Conversation

@drogers0

Copy link
Copy Markdown
Owner

Closes #28.

Problem

gh extension install drogers0/gh-image fails on Android (Termux). Termux builds gh with GOOS=android, so it installs an extension by downloading the release asset named <GOOS>-<GOARCH> — literally android-arm64. The release matrix built only darwin/linux/windows, so no such asset existed and the install aborted.

This is a build/release-matrix gap, not a code gap.

Changes (reduced scope of the #28 plan)

  • .goreleaser.yml — add android to the goos matrix and ignore android/amd64 (it requires external cgo linking, and we build with CGO_ENABLED=0). The existing name_template: "{{ .Os }}-{{ .Arch }}" already renders the android-arm64 asset name gh looks for.
  • .github/workflows/test.yml — add an android/arm64 cross-compile step. The android target isn't exercised by go build ./... on the runner, so a future dependency that needs cgo on android would otherwise only surface at tag time when the release fails. Compiling it in CI is the check that matters.
  • README.md — list Android/Termux in the supported platforms and add a caveat: there's no desktop browser cookie store on Termux, so supply the session token via GH_SESSION_TOKEN (extract it on a desktop with gh image extract-token).

No source changes. kooky compiles for android/arm64; at runtime on Termux browser extraction finds nothing and main.go already falls through to its existing --token/GH_SESSION_TOKEN error.

Doc syncs to architecture.md, SKILL.md, and the submission guide (steps 4–6 of the plan) are intentionally left out of this PR to keep it focused.

Validation

  • GOOS=android GOARCH=arm64 CGO_ENABLED=0 go build .ELF 64-bit LSB pie executable, ARM aarch64 ... interpreter /system/bin/linker64 (PIE, Bionic — runnable under Android).
  • goreleaser build --snapshot --clean → produced android_arm64_v8.0 plus the 6 existing targets, no android/amd64 attempted.
  • go vet ./... and go test -race -cover ./... green.

The android-arm64 asset appears once a release is tagged; the fix is inert until then.

drogers0 added 3 commits July 15, 2026 11:25
gh builds under Termux with GOOS=android and installs the extension by
downloading the release asset named <GOOS>-<GOARCH>, i.e. android-arm64.
The release matrix built only darwin/linux/windows, so the asset was
absent and 'gh extension install drogers0/gh-image' aborted on Android.

- .goreleaser.yml: add android to the goos matrix; ignore android/amd64
  (requires cgo, which we build without). name_template already yields
  the android-arm64 asset name gh looks for.
- test.yml: cross-compile android/arm64 in CI so a future dependency
  that needs cgo on android fails a PR rather than a tag-time release.
- README: list Android/Termux and document GH_SESSION_TOKEN as the auth
  path there (no desktop browser cookie store to extract from).

No source changes: kooky compiles for android/arm64 and main.go already
falls through to its --token/GH_SESSION_TOKEN error when no cookie store
is found.
@drogers0
drogers0 merged commit 44f4b93 into main Jul 15, 2026
2 checks passed
@drogers0
drogers0 deleted the android-arm64-release branch July 15, 2026 16:59
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.

Add support for the android-arm64 architecture

1 participant