Repository navigation
native: build the Linux wheels in manylinux_2_28, test Python 3.15, document platforms - #83
Merged
Merged
Conversation
…ocument platforms The Linux image is built in the manylinux_2_28 containers (glibc 2.28) instead of manylinux_2_34. The wheel tag never drops below the container policy, auditwheel is gated against it, and a new gate installs the wheel and opens a database inside the 2_28 container. Python 3.15 joins the informational pyver legs (no jpype1 wheel: two test files left out). NOTICE names the right module and system libraries. The install, which-package, index and CI pages list the platforms, the glibc floors, the unsupported platforms and Python 3.15. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This was referenced Oct 26, 2026
…nus 3.15 (JPype has no cp315 wheel yet) Co-Authored-By: Claude Opus 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.
Closes the glibc, Python 3.15, notices and platform-docs gaps found in the production audit of the native
arcadedbwheels. The ranked list of the remaining gaps is in.notes/PRODUCTION-GAPS.mdof the working copy (not part of this PR).Linux wheels: manylinux_2_34 to manylinux_2_28
The Linux legs now build the image in
quay.io/pypa/manylinux_2_28_{x86_64,aarch64}(AlmaLinux 8, glibc 2.28, gcc 14). This adds RHEL 8 and Rocky 8, Debian 10 and 11, and Ubuntu 20.04 to the supported systems.Evidence that the floor was only a link-time property of the 2.34 container:
libarcadedb.so, x86_64 and aarch64) references only two glibc symbols above 2.17 that matter:pthread_getattr_np@GLIBC_2.32and theGLIBC_2.34group (dlopen,dlsym,dlclose,dladdrand thepthread_*calls). glibc 2.34 merged libpthread and libdl into libc, so a build against 2.34 versions those symbols as 2.32 and 2.34. Built against 2.28 they bind to libpthread and libdl with their old versions.bin/javaneeds GLIBC_2.2.5,libjvm.soGLIBC_2.7,libjava.soGLIBC_2.9).native-image --shared -march=compatibilitylibrary links and needs glibc 2.17 at most (NEEDED: libz, libpthread, libdl, libm, librt, libc).Changes: containers and
plat_reinscripts/select_native_matrix.py; the glibc gate oftest-native.ymlis 2.28 now;build_wheel.pygets--glibc-policy(default 2.28) so the tag is never below the policy of the build container (the symbols alone would say 2.17, which would be an unverified promise becauselibjvector-x86_64.soneedsGLIBCXX_3.4.21); the auditwheel gate checks that the tag auditwheel grants is not above the wheel's tag instead of requiring equality; thednf installof the container is skipped whenzlib-devel unzip whichare installed (they are in the 2_28 image, and the AlmaLinux 8 appstream metadata failed in my test); a new gate runsscripts/smoke_wheel.py(import, SQL, openCypher) inside the manylinux_2_28 container with only the wheel installed, so the glibc 2.28 claim is run, not only inferred from symbols.arcadedb-jvmstays at manylinux_2_34 (the bundled Amazon Corretto JRE sets that floor); it is not touched here.Python 3.15
uv 0.12.0 (the pinned version) lists
cpython-3.15.0. The wheel ispy3-noneand loads its library withctypes. On Python 3.15.0, with the linux-x86_64 wheel of run 40238118922, thepyversubset gave 269 passed, 0 failed locally. The only 4 errors were tests oftest_vector.pythat build Java arrays with jpype1, which has no cp315 wheel (1.7.1; the sdist needs a JDK and cmake).ladybug, used by the full suite, has no cp315 wheel either.So 3.15 is added to the
pyverlegs (informational, never gates a release) withjpype: false, which dropstest_parameter_binding.pyandtest_vector.pyand does not install jpype1. The full parity run stays on 3.11 to 3.14. The wheel gets the 3.15 classifier.arcadedb-jvmcannot install on 3.15 until JPype ships a wheel for it (it depends onjpype1>=1.5.0).Notices
native/wheel/NOTICE:arcadedb_native.ENGINE_VERSIONwas a stale name (nowarcadedb.ENGINE_VERSION); the GraalVM source line names the substratevm commit from the release file of the GraalVM CE build; the list of dynamically linked and not shipped system libraries now covers Linux (includinglibpthread,libdl,librtof the 2.28 build), macOS and Windows (the dumpbin record of run 40238118922 listsVCRUNTIME140.dll,VCRUNTIME140_1.dlland theapi-ms-win-crt-*DLLs).THIRD_PARTY_NOTICES.mdis generated and unchanged.Docs
The install page now has a Requirements table with both wheel tags and the glibc floors, the platforms that are not built (Intel Mac, Alpine and other musl systems, Windows on ARM, older Linux) with what to do instead, the wheel size, and the Python 3.15 note. The which-package table, the index and the CI page follow. Intel Macs are not supported by decision: Apple has sold only Apple Silicon since 2023, macOS 26 is the last release for Intel Macs, and GitHub is phasing out Intel macOS runners.
Checks run
tests/test_select_native_matrix.py: 10 passed (it pins the new legs, the 2.28 containers and the workflow floor).actionlintontest-native.yml: clean.smoke_wheel.pyrun against the linux-x86_64 wheel of run 40238118922 on Python 3.12: ok.auditwheel.txt: 2_28 tag fails on the old 2_34 wheel as it should.test-native.ymldispatched on this branch for all four platforms: https://github.com/ArcadeData/arcadedb-python/actions/runs/40249725819. Do not merge unless linux-x86_64 and linux-aarch64 show themanylinux_2_28tag, the new glibc 2.28 smoke gate passes, and the parity gate is 0 failed on every platform.🤖 Generated with Claude Code