Repository navigation
jdk-21, jdk-25, jdk-27: OpenJDK from source, booted by gen-5's reproduced boot JDKs; the JVM ladder leaves pkgs - #913
Closed
bryan-minimal wants to merge 15 commits into
Closed
bryan-minimal wants to merge 15 commits into
bryan-minimal wants to merge 15 commits into
Conversation
The first three rungs get an aarch64 spec next to the x86_64 one, which is unchanged (same spec hashes). On aarch64 each builds with the toolchain gcc against the system glibc through build-aarch64.sh, derived from build.sh: SR=/usr and the system loader instead of the bedrock sysroot, no per-process loader wrappers, and config.sub / config.guess refreshed from automake (the tarballs predate aarch64). JamVM has no aarch64 port upstream; jamvm-1.5.1 applies Simon South's (2020, carried by Guix) and regenerates its build system. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…vm-2.0.0, ecj4 Same treatment as the first three rungs (x86_64 spec hashes unchanged). jamvm-2.0.0 adds Simon South's aarch64 port ahead of the two Guix fixes it already carries, and regenerates its build system. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
icedtea-7's HotSpot drop already carries the AArch64 port; aarch64 adds Guix's c++98 patch for sharedRuntime_aarch64.cpp. icedtea-8 drops the duplicate call_VM_leaf_base using-declaration in interp_masm_aarch64.hpp that gcc 11+ rejects (Guix's patch-for-aarch64). x86_64 specs unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Same treatment as the earlier rungs (x86_64 spec hashes unchanged, checked for all 17). OpenJDK knows aarch64, so no config.sub refresh; each aarch64 build drops the duplicate call_VM_leaf_base using-declaration in interp_masm_aarch64.hpp where a release has it (gcc 11+ rejects it; Guix's patch-for-aarch64). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ieeefp.h predates aarch64 and fails with 'Endianess not declared'; classpath-0.93/0.99/devel add the __aarch64__ case on aarch64 (Guix's classpath-aarch64-support.patch, inserted with python3 since the rungs carry no patch tool). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
glibc 2.42+ declares uabs(int) in <stdlib.h>, which collides with HotSpot's own overloads in the aarch64 build; rename them to hs_uabs as icedtea-8 already does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On aarch64 the bundled libpng enables its ARM NEON paths, but the JDK build never compiles libpng's neon sources, so libsplashscreen fails to link (png_init_filter_functions_neon). Prepend PNG_ARM_NEON_OPT=0 to every bundled pngpriv.h in icedtea-7/8 and openjdk-9..25 on aarch64. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The x86_64 recipes pin the boot JVM to AVX2 against an AVX-512 miscompile; the option does not exist on aarch64, so every java step of the build failed. Drop it from the aarch64 recipes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mip check --fix; spec hashes unchanged on both arches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…f shipping Temurin Same upstream tags Temurin builds from (jdk25u jdk-25.0.4.1-ga, jdk21u jdk-21.0.12.1-ga), booted by the openjdk-25 / openjdk-21 rungs and compiled by the production toolchain on both arches. Same /usr/lib/jvm layout, outputs and tests; CDS archives and src.zip are left out because they do not reproduce. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
…configure; --with-source-date implies it) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
openjdk-26 (jdk26u jdk-26.0.2.1-ga) is the openjdk-25 rung moved up one, booted by openjdk-25 on both arches. jdk-27 (jdk27u jdk-27-ga, Temurin's jdk-27+35) is booted by it, same recipe as jdk-25. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… bedrock gcc outside its loader wrapper Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 19, 2026
This was referenced Oct 27, 2026
…e ladder leaves pkgs The 28-rung JVM ladder now lives in gominimal/bootstrap and is published as gen-5, where each rung was built from source on the hex0-rooted toolchain and reproduced byte for byte on two independent machines per arch. openjdk-21, openjdk-25 and openjdk-26 are the gen-5 tarballs pinned by sha, with the runtime deps the rungs declared; the other 15 openjdk rungs and the 11 below them (jikes, classpath, jamvm, ant, ecj, icedtea) are removed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Member
Author
|
Superseded by #1242, which merges this branch and repoints every bootstrap pin at gen-11 of gominimal/bootstrap. Closing to stop the duplicate world rebuilds; the branch stays. |
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.
jdk-21,jdk-25andjdk-27build OpenJDK from the jdk21u/jdk25u/jdk27u tag archives on both arches, booted byopenjdk-21,openjdk-25andopenjdk-26. Those three are now prebuilt boot JDKs from gen-5 of gominimal/bootstrap, pinned by sha, and the rest of the JVM ladder leaves pkgs.What gen-5 is
The 28-rung ladder (jikes → classpath → jamvm → ant/ecj → icedtea-7/8 → openjdk-9 … 26) and its 51 support packages were ported to gominimal/bootstrap and built there from the hex0-rooted toolchain roots. Every rung was built on two independent machines per arch (amd64: an AMD c4d and an Intel c3; arm64: two Axions) and admitted only when both produced identical trees. The objects live in
gs://minimal-bootstrap/gen-5/sha256/<sha>/…, public read and create-only, listed ingenerations/gen-5/manifest.jsonandMANIFEST.txt, and were verified anonymously after upload.Getting there took five rounds of the two-machine compare; everything it found was build-time iteration over an unordered collection (directory order, identity hashes,
Set.of's per-run salt,Class.getMethods()), none of which a two-round seal on one machine can see. The fixes are patches in bootstrap'soverlays/jvm/.Changed here
openjdk-21(21.0.2),openjdk-25(25.0.2),openjdk-26(26.0.2.1): prebuilt specs, both arches, keeping the runtime deps the source rungs declared (zlib, freetype, the X libraries, …).jdk-21/25/27and theirBOOT=/usr/lib/openjdk-Nare unchanged.openjdk-9…-20,-22,-23,-24,icedtea-7/8,jamvm-1.5.1/2.0.0,classpath-0.93/0.99/devel,ant-bootstrap-1.8.4,ecj-bootstrap-3.2.2,ecj4-bootstrap-4.2.1,jikes-1.22. Nothing outside the ladder imported them.Cost
The ladder no longer rebuilds in every world: 26 packages gone from main, the three boot JDKs fetched instead of built. This CI run is the real test of the gen-5 boot JDKs as roots on both arches.
🤖 Generated with Claude Code