Repository navigation
arcadedb-jvm: bundle Eclipse Temurin 25 and tag the Linux wheels manylinux_2_28 - #86
Merged
Merged
Conversation
…linux_2_28 The jlink step took its JDK from the amazoncorretto:25 image (Amazon Linux 2023), whose binaries all need GLIBC_2.34. Temurin's Linux JDK needs glibc 2.17 at most on x86_64 and aarch64, and JPype's own Linux wheels are manylinux_2_28, so the wheels are tagged manylinux_2_28 like the native ones. verify_wheel_platform_tag.py expects the higher of the floor (2.28) and the JRE's requirement. test-jvm.yml installs the built wheel in a quay.io/pypa/manylinux_2_28 container on both Linux legs and runs SELECT 1. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…DK fallback The eclipse-temurin JDK has no jmods directory (JEP 493), so the jmods-only branch of the jre-builder stage fell back to copying the whole JDK: a 251 MB JRE and a 130 MB wheel, which scripts/verify_wheel_size.py rejects (over 100 MB). jlink links from the run-time image when --module-path is absent (40 MB JRE in the same image). The silent fallback is removed so a jlink failure stops the build. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Linux
arcadedb-jvmwheels weremanylinux_2_34, which excludes RHEL, Rocky and AlmaLinux 8, Debian 10 and 11 and Ubuntu 20.04. The native wheels move tomanylinux_2_28in #83. This does the same for the JVM wheels, so the two packages are a choice and not a platform split.Why it was 2_34
The floor came from the bundled JRE, and the JRE came from the
amazoncorretto:25Docker image, which is Amazon Linux 2023 (glibc 2.34). That image's JDK is built against it. It is the image, not the vendor. I scanned the JDKs for the highestGLIBC_x.ythey reference (the same scanscripts/verify_wheel_platform_tag.pydoes):amazoncorretto:25image (25.0.5)bin/java,lib/libjava.soSo this takes the JDK from
eclipse-temurin:25-jdk(multi-arch, carries the Temurin tarball unchanged, no download step in the Dockerfile). jlink copies the libraries of the JDK it runs, so the bundled JRE gets the same floor. Both Corretto and Temurin are GPLv2 with the Classpath Exception, redistributable under the same terms; nothing in the repo names Corretto as the bundled vendor.Why 2_28 and not 2_17
The wheel itself is pure Python plus the JRE and the jars, so the only other floor is the Python dependency: JPype 1.7.1 publishes
manylinux_2_28Linux wheels (manylinux_2_24andmanylinux_2_28tags for x86_64 and aarch64), and a lower tag would send pip to a source build. The native wheels usemanylinux_2_28too. The jars the wheel carries (gremlin, grpcw and jline are excluded) hold JNI libraries for x86_64 and aarch64 that need glibc 2.17 at most.Changes
scripts/Dockerfile.build:jre-builderiseclipse-temurin:25-jdk(apt instead of yum forbinutils);WHEEL_PLATismanylinux_2_28_x86_64/manylinux_2_28_aarch64; the comment says why.scripts/verify_wheel_platform_tag.py: the expected tag is the higher ofMANYLINUX_FLOOR(2.28) and the JRE's requirement. It still fails a tag above that (the #4037 case) and a tag below it.--jreprints the same tag.tests/test_wheel_platform_tag.pycovers a 2.17 JRE at the floor, a tag below the floor, a tag above both, and--jre..github/workflows/test-jvm.yml: on both Linux legs, the built wheel is installed inquay.io/pypa/manylinux_2_28_{x86_64,aarch64}withpip install --only-binary=:all:, thenimport arcadedbandSELECT 1. pip refuses a wheel tagged above 2.28 there, so this guards the floor.Verification
Dispatched on this branch (all legs): Test JVM 40250801621 and Test Python Examples 40250804041. The bar: wheel tag
manylinux_2_28, all legs green, the new container step green on linux/amd64 and linux/arm64.actionlintis clean andtests/test_wheel_platform_tag.pypasses (10 tests, run without the package installed).Not in this PR
The docs still name the JVM wheel as glibc 2.34:
docs/modules/ROOT/pages/installation.adoc(the JVM tag rows) anddocs/modules/ROOT/pages/which-package.adoc(the Platforms row). #83, #84 and #85 rewrite exactly those lines, so I left them to avoid three rebases; they need a one-line follow-up once those merge.scripts/after_tag_verify.shcheckspip download --platform manylinux_2_34_*, which pip expands to the lower tags, so it still accepts the 2_28 wheels.🤖 Generated with Claude Code