Skip to content

native: finish the 64-bit foundation (coffeecatch x86_64 fix, engine ed05faa, drop armeabi-v7a)#7

Merged
xroche merged 3 commits into
masterfrom
native-64bit-followup
Jul 16, 2026
Merged

native: finish the 64-bit foundation (coffeecatch x86_64 fix, engine ed05faa, drop armeabi-v7a)#7
xroche merged 3 commits into
masterfrom
native-64bit-followup

Conversation

@xroche

@xroche xroche commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Finishes the native foundation that Phase A (#5) left half-done. The coffeecatch bump to 9a0bdce carries the x86_64 ucontext fix (xroche/coffeecatch#46) and the i386 redefinition fix against the modern NDK sysroot. Without it the x86_64 ABI does not compile, which is why x86_64 was declared in Application.mk but built by neither the committed pin nor CI.

The engine moves from 627ae2b to engine master (ed05faa). That range fixes a 32-bit chunked-transfer overflow (#593), files of 2GB and over (#568), an hts_free_opt leak on every crawl (#585), an unbounded filter-matcher recursion (#590/#575), and --update destroying a good mirrored copy (#584/#560), and it adds scheme-aware proxy parsing with SOCKS5 (#566/#570), all in sources Android compiles. Two new modules come with it, htscodec.c and htsproxy.c, now in the build; brotli and zstd stay compile-off, so htscodec falls back to zlib and pulls no new dependencies. The JNI surface is untouched.

The ABI set is now arm64-v8a plus x86_64. Dropping 32-bit armeabi-v7a is safe: Play allows 64-bit-only builds, and minSdk 24 already excludes almost all 32-bit-only hardware. That leaves the armv7 exidx-merge gating dead, so it goes, and Application.mk, the CI ABI matrix and the Gradle abiFilters now agree on the same two ABIs.

Part of #4.

xroche and others added 3 commits July 16, 2026 08:52
Advances coffeecatch from the 2017 pin (e64ca5a) to 9a0bdce, which carries the
x86_64 ucontext fix (xroche/coffeecatch#46) plus the i386 redefinition fix
against the modern NDK sysroot. Required for the x86_64 ABI: coffeecatch's
legacy ucontext block #errors on x86_64 without it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Xavier Roche <roche@httrack.com>
Advances the vendored engine from 627ae2b (3.49.12) to ed05faa (engine master),
picking up fixes that land in the Android-compiled sources: a 32-bit
chunked-transfer overflow guard (#593), the >=2GB file-size fix (#568), an
hts_free_opt per-crawl leak fix (#585), a filter-matcher recursion-depth cap
(#590/#575), --update data-loss fixes (#584/#560), scheme-aware proxy parsing
with SOCKS5 support (#566/#570), and content-coding decode factored into new
modules (#556). The JNI surface (htslibjni.c) is untouched. Adds the two new
engine sources htscodec.c and htsproxy.c to the build; brotli/zstd stay
compile-off (HTS_USEBROTLI/HTS_USEZSTD default 0), so htscodec falls back to
zlib and pulls no new deps.

Drops the 32-bit armeabi-v7a ABI: the build now ships arm64-v8a + x86_64 only.
Play allows 64-bit-only builds and minSdk 24 already excludes almost all
32-bit-only hardware. Removes the now-dead armv7 exidx-merge linker gating and
aligns Application.mk, the CI ABI matrix, and the Gradle abiFilters to the same
two-ABI set.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Xavier Roche <roche@httrack.com>
The ABI finalization left the v7a default behind in both OpenSSL scripts. CI
never trips over it because android.yml sets ABIS at job level, but running
fetch-openssl-statics.sh with no ABIS against a tree built from the new two-ABI
set dies on the missing armeabi-v7a/lib/libssl.a, and the Docker image passes no
ABIS at all, so it spent a third of its OpenSSL build baking a v7a tree nothing
can use.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Xavier Roche <roche@httrack.com>
@xroche
xroche merged commit 6535b68 into master Jul 16, 2026
4 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.

1 participant