8000 stacks: java development loadout (jdk + maven + gradle + jdtls) by bryan-minimal · Pull Request #899 · gominimal/pkgs · GitHub
[go: up one dir, main page]

Skip to content

stacks: java development loadout (jdk + maven + gradle + jdtls) - #899

Merged
bryan-minimal merged 5 commits into
mainfrom
java-loadout
Nov 3, 2026
Merged

bryan-minimal merged 5 commits into
mainfrom
java-loadout

Conversation

@bryan-minimal
@bryan-minimal bryan-minimal commented Oct 16, 2026 •
Copy link
Copy Markdown
Member

What

Adds stacks/java/stack.ncl, an opt-in Java development loadout. It follows the aeneas / reveng loadout convention: a stack with no matches_project_if_any, a header comment that shows the workflow, and a build_cmd that smoke-tests every anchor tool.

Role Package Notes
JDK (compiler, runtime, jshell, jdb, jfr, jcmd, jlink, jdeps, javadoc) jdk-25 Pinned to the 25 line, like the maven / gradle stacks. jdk-25 links every usr/lib/jvm/bin/* into /usr/bin.
Build maven, gradle Both, so one session serves either kind of project.
LSP jdtls Its wrapper already redirects -data / -configuration to a writable cache.
Format / lint google-java-format, checkstyle, pmd, spotbugs On main since this PR opened.
Profile async-profiler asprof, jfrconv.
More mvnd, kotlin, jbang Maven daemon, kotlinc, single-file scripts.
Base base, curl Same as the maven / gradle stacks.

Env: JAVA_HOME=/usr/lib/jvm and MAVEN_OPTS=-Dmaven.repo.local=/state/m2/repository, the values the maven and gradle stacks already use. Gradle needs nothing extra because its package already wires GRADLE_USER_HOME through env_state_wiring.

Why opt-in: a pom.xml or build.gradle already selects the plain maven / gradle build stack, and this stack must not compete with them.

Only packages already on main. No new packages in this PR. Every added tool depends on the jdk meta, which is jdk-25, so the closure holds one JDK.

Verified

Stacks have no tests field, so the build_cmd smoke is the test, as in reveng. It is java -version && javac -version && mvn -v && gradle --version && jdtls --help > /dev/null && jdb -version.

2026-11-02, aarch64, at e24a3fc. A scratch project pinned [upstream] to java-loadout @ e24a3fc4b164a2e75225b9e325ce2ddd928299bc with [stack] use = "java", and ran two tasks with min task run (each in its own ephemeral min box, destroyed afterwards; nothing built on the Mac):

  • smoke is the build_cmd verbatim, with set -x and an echo after jdtls --help > /dev/null so its step shows. Exit 0.
  • tools prints the version line of each of the eight added tools, plus JAVA_HOME / MAVEN_OPTS from the stack's build_env_vars. Exit 0.
tool output
java openjdk version "25.0.5" 2026-10-20 LTS · OpenJDK Runtime Environment Temurin-25.0.5+8 (build 25.0.5+8-LTS)
javac javac 25.0.5
mvn Apache Maven 3.10.0 · Java version: 25.0.5, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm · arch: "aarch64"
gradle Gradle 9.8.2 · Launcher JVM: 25.0.5 (Eclipse Adoptium 25.0.5+8-LTS) · Daemon JVM: /usr/lib/jvm
jdtls jdtls --help exits 0
jdb This is jdb version 25.0 (Java SE version 25.0.5), called from PATH
google-java-format google-java-format: Version 1.37.0
checkstyle Checkstyle version: 14.3.0
pmd PMD 7.28.0 (79726f0e…, 2026-09-25T07:52:15Z) · Java version: 25.0.5, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm
spotbugs 4.10.5
async-profiler Async-profiler 4.6 built on Jan 1 1970 (asprof --version)
mvnd Apache Maven Daemon (mvnd) 1.0.6 linux-aarch64 native client · embedded Apache Maven 3.9.16 · Java version: 25.0.5
kotlin info: kotlinc-jvm 2.4.21 (JRE 25.0.5+8-LTS)
jbang 0.143.0
env JAVA_HOME=/usr/lib/jvm MAVEN_OPTS=-Dmaven.repo.local=/state/m2/repository

Every JVM tool that reports its runtime (mvn, gradle, pmd, mvnd, kotlinc) reports the same Temurin 25.0.5 at /usr/lib/jvm. x86_64 was not run. mvnd embeds Maven 3.9.16 while mvn is 3.10.0; that is upstream's mvnd 1.0.6 bundling, as the checklist notes.

The full logs are in the reply that posted this run.

  • Earlier run (superseded): arm64, min task run, on the jdk meta when it was Temurin 21.0.12.1. Every step passed.

Follow-up packaging checklist

The list is ranked by usefulness × ease. Each item is one package PR; tick it when it lands, then add the package to build_packages here.

Licences were checked against each upstream's LICENSE file. "Easy" means a prebuilt, architecture-independent jar or zip plus a launcher script (the maven / gradle / jdtls shape). "Medium" means per-arch prebuilt natives or Maven-Central-only artifacts.

Items marked [x] have landed on main, and the packages are in this stack's build_packages (e24a3fc).

Tier 0: fix in an existing package

  • jdk: link every usr/lib/jvm/bin/* into /usr/bin. Today only java, javac, jar, jlink, jmod, jpackage, jshell and keytool are linked, so jdb, jcmd, jfr, jstack, jmap, javap, jdeps, javadoc and jwebserver are missing from PATH. The same list is in jdk: current LTS (meta over jdk-25); add jdk-25 (Temurin 25) and jdk-21 (Temurin 21) #897's jdk-25/build.sh. Easy.

  • gradle stack: also match build.gradle.kts / settings.gradle.kts. Today it matches only build.gradle / settings.gradle, so a Kotlin-DSL project (the gradle init default) never selects it. Trivial.

Tier 1: high value, easy

  • google-java-format. The de-facto Java formatter. Apache-2.0. GitHub releases ship native linux-x86-64 / linux-arm64 binaries (GraalVM native-image) and an all-deps jar. Easy. Prefer the jar plus a launcher (it needs the --add-exports jdk.compiler/... flags) if we want it built on our JDK; the native binaries are the zero-dependency option.
  • checkstyle. Style and convention linter. LGPL-2.1-or-later. A single checkstyle-X-all.jar on GitHub releases. Easy.
  • PMD. Static analysis plus CPD copy-paste detection. Upstream ships a pmd-dist-X-bin.zip on GitHub releases. Easy. ⚠ Licence: PMD's own BSD-style text with a DARPA acknowledgement clause, with Apache-2.0 parts. It is redistributable but has no exact SPDX id, so it needs a LicenseRef-PMD (or a reviewed SPDX choice) for license-lint.
  • JBang. Runs single-file .java scripts with //DEPS; it is the Java answer to uv run. MIT. Linux tar on GitHub releases (shell launcher plus jar). Easy. Caveat: it downloads deps and JDKs at run time, so set JBANG_JDK_VENDOR / JAVA_HOME so it uses ours.
  • Kotlin compiler (kotlinc). The second JVM language most Java shops touch (Gradle Kotlin DSL, Android). Apache-2.0. kotlin-compiler-X.zip on GitHub releases is pure JVM. Easy. A kotlin loadout could build on this later.
  • async-profiler. Low-overhead CPU, alloc and lock profiler that emits flamegraphs. It fills the "profiler" slot that the rust and go benches get from perf / pprof. Apache-2.0. Per-arch linux-x64 / linux-arm64 tarballs on GitHub releases (a native agent .so plus the asprof binary). Easy to medium: prebuilt natives, and it should be built from source (C++ plus make) to match our policy.

Tier 2: useful, a bit more work

  • SpotBugs. Bytecode bug finder, the FindBugs successor. LGPL-2.1. spotbugs-X.tgz on GitHub releases. Easy. Usually run as a build plugin, but the CLI is handy for scanning a jar you didn't build.
  • Maven Daemon (mvnd). A persistent Maven that is much faster on multi-module builds. Apache-2.0. Per-arch native clients on GitHub releases. Medium: the client is a GraalVM native-image, and the daemon embeds its own Maven version. Note a release can lag Maven by a minor version.
  • palantir-java-format. google-java-format fork with 120 columns and lambda-friendly output. Apache-2.0. Maven Central only (no GitHub release assets). Medium: needs a Maven-Central source fetch and transitive jars.
  • ktlint / ktfmt. Kotlin linter and formatter, only once kotlinc lands. ktlint is MIT (ktlint self-executing jar on GitHub). ktfmt is Apache-2.0 (jar and linux-x86_64 native on GitHub; no arm64 native). Easy.
  • Groovy. Apache-2.0. apache-groovy-binary-X.zip from the Apache dist. Easy, but lower value now that Gradle defaults to the Kotlin DSL and bundles its own Groovy.
  • Quarkus CLI / Spring Boot CLI. Apache-2.0. Quarkus ships quarkus-cli-X.tar.gz on GitHub releases. The Spring Boot CLI is on Maven Central / repo.spring.io. Easy, but framework-specific, so they arguably belong in a framework loadout rather than the base Java one.
  • java-debug (jdtls DAP plugin). EPL-1.0. It turns jdtls into a Debug Adapter Protocol server for editor or agent debugging. It has no release jar, so it must be built from source with Maven. Medium. Until then jdb covers terminal debugging.

Probably separate loadouts (not this one)

  • Scala: scala / scala-cli (Apache-2.0, per-arch natives on GitHub), sbt (Apache-2.0, sbt-X.tgz on GitHub), Coursier cs (Apache-2.0, per-arch natives). Coursier is how the Scala ecosystem installs everything else, which fights a hermetic package set. Suggest a scala loadout once the JDK side settles.
  • Clojure: clojure-tools (EPL-1.0). Same shape.
  • GraalVM CE (native-image): GPL-2.0 with the Classpath exception. A second JDK; a separate jdk-graal package, not part of this loadout.

Not packages: build plugins or dependencies

These ride the project's own pom.xml / build.gradle and resolve from Maven Central, so packaging them would be dead weight:

  • Error Prone (Apache-2.0): a javac plugin.
  • Lombok (MIT): an annotation processor; a dependency, not a tool.
  • Spotless (Apache-2.0): a formatter-orchestration plugin.
  • JaCoCo (EPL-2.0): a coverage agent.
  • OpenRewrite (rewrite-maven-plugin / Gradle plugin): core is Apache-2.0.

Deliberately excluded

  • The OpenRewrite mod CLI. Moderne's proprietary distribution. Some recipe modules have also moved to a source-available (non-OSI) licence. Use the Apache-2.0 build plugins.
  • JDK Mission Control / VisualVM. UPL-1.0 and GPL-2.0+CPE respectively, so both are fine on licence. Excluded because they are GUI (Eclipse RCP / NetBeans) apps in a headless session; jfr + jcmd in the JDK, plus async-profiler, cover the CLI need.
  • ./mvnw / ./gradlew. Wrappers download a distribution at run time. The packaged mvn / gradle are the hermetic path. The loadout does not block wrappers, but it does not rely on them.
  • jdeps / jlink / jpackage / jshell. Already in the JDK (see Tier 0).

Open questions

  1. Name. java sits next to the maven / gradle build stacks. Is that clear enough, or should it be java-dev / jvm to signal "loadout, not build stack"?
  2. jdk vs a pinned line. Settled: the stack pins jdk-25, as the maven / gradle stacks do.
  3. user.home. The local reveng loadout found that Java resolves user.home from the passwd entry (/root) and not from $HOME. Maven's ~/.m2/settings.xml and tools that write under user.home may hit this in sessions. MAVEN_OPTS covers the Maven repo. Should the stack also set JAVA_TOOL_OPTIONS=-Duser.home=/home? The cost is that every JVM then prints Picked up JAVA_TOOL_OPTIONS to stderr.

🤖 Generated with Claude Code

An opt-in stack, like `aeneas` and `reveng`: no matches_project_if_any,
so pom.xml / build.gradle keep selecting the plain `maven` / `gradle`
build stacks. Bundles the current-LTS `jdk`, both build tools and the
Eclipse JDT language server, with the JAVA_HOME / MAVEN_OPTS the
maven and gradle stacks already use.

build_cmd smokes every anchor (java, javac, mvn, gradle, jdtls, jdb) so
a broken session fails at start. jdb is reached through JAVA_HOME
because the jdk package only links eight of its tools into /usr/bin.

Only packages already on main. Formatters, linters and the rest are
listed in a trailing comment as not-yet-packaged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai
coderabbitai Bot commented Oct 16, 2026 •
Copy link
Copy Markdown
Contributor

Warning

Review limit reached

  • Run on-demand review

This review includes 1 billable file and costs up to $0.25.

  • Ask an admin to make reviews automatic

Open in CodeRabbit

Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing.

Or wait 51 minutes for your next included review.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available. Your 75 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Learn how review limits work.

Review configuration:

Run configuration
Commits

Reviewing files that changed from the base of the PR and between 8f25b19 and e24a3fc.

Files selected for processing: 1
  • stacks/java/stack.ncl
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

All three Java stacks now name jdk-25 (pkgs#897) rather than the `jdk`
meta, so a project's Java doesn't move when `jdk` rolls to the next LTS.
The header's `$JAVA_HOME/bin/jdb` is plain `jdb` now that #897/#898 link
every JDK tool into /usr/bin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
github-merge-queue Bot pushed a commit that referenced this pull request Oct 22, 2026
* mvnd: add 1.0.6 (Apache Maven Daemon, embeds Maven 3.9.16)

Per-arch upstream tarballs (GraalVM native client + daemon jars +
embedded Maven) under /usr/share/mvnd, matched on target arch like
packages/jdk. A /usr/bin/mvnd wrapper defaults JAVA_HOME to the
packaged jdk (the daemon is a JVM) and pins MVND_HOME. The embedded
Maven's bin/mvn stays off PATH; /usr/bin/mvn belongs to `maven`.

The embedded Maven version is pinned in build.ncl; build.sh fails
closed if the tarball's maven-core jar disagrees, and the tests assert
both versions. Standalone tests: --version through a live daemon, and
an offline (-o) `validate` of a packaging=pom project, each stopping
the daemon afterwards.

Refs #899.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* mvnd: share maven's repository, wire daemon storage, declare network needs

Review fixes:
- The wrapper forwards MAVEN_REPO_LOCAL (maven's wired local repository)
  as -Dmaven.repo.local, so mvn and mvnd in one session share it.
- env_state_wiring MVND_DAEMON_STORAGE -> /state/mvnd: the native client
  reads it itself, so the daemon registry no longer needs a writable HOME.
- needs { dns, internet } as the consumer-facing network dep, matching
  jbang/curl/go/uv: resolving from Maven Central is mvnd's job.
- Tests set the two wired variables instead of -D flags, and check that the
  daemon used that storage and the build that repository.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@bryan-minimal
bryan-minimal marked this pull request as ready for review October 25, 2026 23:14
@bryan-minimal
bryan-minimal requested a review from a team as a code owner October 25, 2026 23:14
@mitodrummer mitodrummer left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The stack itself is fine: jdk-25 matches the maven/gradle stacks, JAVA_HOME and MAVEN_OPTS are the same values, and it is opt-in. But the text in it has fallen behind main:

  1. stacks/java/stack.ncl:24-25 and :75-86: the "NOT YET PACKAGED" list is out of date. google-java-format, checkstyle, pmd, jbang, kotlin, async-profiler, spotbugs and mvnd are all on main now (packages/<name>; mvnd is mvnd, not maven-mvnd). The file says to "add each here the day its package lands on main", so either add the ones you want to build_packages or drop the list. As written, line 24 tells readers formatters and linters are "NOT packaged yet".
  2. :68-72: the jdb rationale no longer holds. packages/jdk-25/build.sh now links every usr/lib/jvm/bin/* into /usr/bin, so jdb is on PATH. $JAVA_HOME/bin/jdb still works, but the comment explaining it is wrong. Call jdb -version directly or fix the comment.
  3. PR body: the table and the "Verified" block describe the jdk meta on Temurin 21.0.12.1, but the file pins jdk-25. The checklist's Tier 0 and Tier 1/2 items have mostly landed. Please refresh it so the PR matches what merges, and re-run the build_cmd smoke on jdk-25.

bryan-minimal and others added 2 commits November 2, 2026 11:15
google-java-format, checkstyle, pmd, spotbugs, async-profiler, mvnd,
kotlin and jbang are all packages on main now, so add them to
build_packages and drop the "NOT YET PACKAGED" list. Each depends on the
`jdk` meta, which is jdk-25, so the closure still holds one JDK.
jdk-25 links every usr/lib/jvm/bin/* into /usr/bin, so build_cmd calls
`jdb -version` directly and the JAVA_HOME rationale is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bryan-minimal
Copy link
Copy Markdown
Member Author

@mitodrummer thanks. All three points were right. I merged main first (5a17a91; the branch was 199 commits behind), then:

  1. "NOT YET PACKAGED" list: all eight are on main, so e24a3fc adds them to build_packages (google-java-format, checkstyle, pmd, spotbugs, async-profiler, mvnd, kotlin, jbang) and drops the list and the "not packaged yet" line. Each one runtime-depends on the jdk meta, which is jdk-25 on main, so the closure still holds a single JDK.
  2. jdb: build_cmd now calls jdb -version directly, and the comment says jdk-25 links every usr/lib/jvm/bin/* into /usr/bin.
  3. Body: the table now shows jdk-25 plus the added tools, the landed checklist items are ticked (Tier 0 both, Tier 1 all, SpotBugs and mvnd in Tier 2), and open question 2 is marked settled. The build_cmd smoke on jdk-25 hasn't been re-run yet, and the "Verified" section now says so instead of showing the old Temurin 21 output. I'll post that run there.

@mitodrummer mitodrummer left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Points 1 and 2 are fixed in e24a3fc. All eight tools are on main and each depends on the jdk meta, which is jdk-25, so the closure holds one JDK (stacks/java/stack.ncl:53-61). jdb -version is now called directly (:83), and packages/jdk-25/build.sh does link every usr/lib/jvm/bin/* into /usr/bin. The body table matches the pin.

Still open: the build_cmd smoke on jdk-25 with the added tools. The body's "Verified" section says it hasn't been re-run yet. Please post that run.

@bryan-minimal
Copy link
Copy Markdown
Member Author

@mitodrummer here is the build_cmd smoke on jdk-25 with the added tools, at e24a3fc (aarch64, 2026-11-02).

A scratch project pinned [upstream] to java-loadout @ e24a3fc4b164a2e75225b9e325ce2ddd928299bc with [stack] use = "java", and ran two tasks with min task run, each in its own ephemeral min box:

  • smoke: the build_cmd verbatim, plus set -x and an echo after jdtls --help > /dev/null so that step shows. Exit 0.
  • tools: the version line of each of the eight added tools (the build_cmd doesn't call them). Exit 0.

Key lines:

openjdk version "25.0.5" 2026-10-20 LTS            (Temurin-25.0.5+8)
javac 25.0.5
Apache Maven 3.10.0        Java version: 25.0.5, runtime: /usr/lib/jvm, arch: "aarch64"
Gradle 9.8.2               Launcher JVM: 25.0.5 (Eclipse Adoptium 25.0.5+8-LTS)
jdtls --help               exit 0
This is jdb version 25.0 (Java SE version 25.0.5)
google-java-format: Version 1.37.0
Checkstyle version: 14.3.0
PMD 7.28.0                 Java version: 25.0.5, runtime: /usr/lib/jvm
spotbugs 4.10.5
Async-profiler 4.6
mvnd 1.0.6 linux-aarch64 native client (embedded Maven 3.9.16, Java 25.0.5)
kotlinc-jvm 2.4.21 (JRE 25.0.5+8-LTS)
jbang 0.143.0
JAVA_HOME=/usr/lib/jvm MAVEN_OPTS=-Dmaven.repo.local=/state/m2/repository

Every tool that names its JVM names the same Temurin 25.0.5. x86_64 was not run. The "Verified" section of the body now has this run.

minimal.toml of the scratch project
[upstream]
repo = "https://github.com/gominimal/pkgs"
branch = "java-loadout"
locked_commit = "e24a3fc4b164a2e75225b9e325ce2ddd928299bc"

[stack]
use = "java"

# The stack's build_cmd, verbatim from stacks/java/stack.ncl@e24a3fc4.
[tasks.smoke]
bash = "set -x; java -version && javac -version && mvn -v && gradle --version && jdtls --help > /dev/null && echo JDTLS_HELP_OK && jdb -version"

# Version lines for the eight added tools (not in build_cmd).
[tasks.tools]
bash = '''
set -x
uname -m
echo JAVA_HOME=$JAVA_HOME MAVEN_OPTS=$MAVEN_OPTS
google-java-format --version
checkstyle --version
pmd --version
spotbugs -version
asprof --version
mvnd --version
kotlinc -version
jbang --version
'''
Full log: min task run smoke
Running task smoke in session task-smoke-0e53...
+ java -version
openjdk version "25.0.5" 2026-10-20 LTS
OpenJDK Runtime Environment Temurin-25.0.5+8 (build 25.0.5+8-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.5+8 (build 25.0.5+8-LTS, mixed mode, sharing)
+ javac -version
javac 25.0.5
+ mvn -v
Apache Maven 3.10.0 (c43a36b8d67be7e0805a411bc0898af1a51f5472)
Maven home: /usr/share/maven
Java version: 25.0.5, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm
Default locale: en_US, platform encoding: UTF-8, time zone: GMT
OS name: "linux", version: "6.12.114", arch: "aarch64", family: "unix"
+ gradle --version

Welcome to Gradle 9.8.2!

Here are the highlights of this release:
 - Java 27 support
 - Maven mirror settings reuse
 - Linked problem locations in build output

For more details see https://docs.gradle.org/9.8.2/release-notes.html


------------------------------------------------------------
Gradle 9.8.2
------------------------------------------------------------

Build time:    2026-10-19 16:29:26 UTC
Revision:      8de7bcf76e785507ad92f0741ab9235a430c95e6

Kotlin:        2.4.10
Groovy:        4.0.33
Ant:           Apache Ant(TM) version 1.10.17 compiled on April 6 2026
Launcher JVM:  25.0.5 (Eclipse Adoptium 25.0.5+8-LTS)
Daemon JVM:    /usr/lib/jvm (no Daemon JVM specified, using current Java home)
OS:            Linux 6.12.114 aarch64

+ jdtls --help
JDTLS_HELP_OK
+ echo JDTLS_HELP_OK
+ jdb -version
This is jdb version 25.0 (Java SE version 25.0.5)
Full log: min task run tools
Running task tools in session task-tools-7b85...
+ uname -m
aarch64
JAVA_HOME=/usr/lib/jvm MAVEN_OPTS=-Dmaven.repo.local=/state/m2/repository
+ echo JAVA_HOME=/usr/lib/jvm MAVEN_OPTS=-Dmaven.repo.local=/state/m2/repository
+ google-java-format --version
google-java-format: Version 1.37.0
+ checkstyle --version
Checkstyle version: 14.3.0
+ pmd --version
  ████                            ████
  ██                                ██
  ██  █████ █ ███    ███  ███████   ██
 ███  ██  ███ ████  ████  ██    ██  ███
 ███  ███████ ██ ████ ██  ██    ██  ███
  ██  ██      ██  ██  ██  ███████   ██
  ██                                ██
  ████                            ████
PMD 7.28.0 (79726f0e8f46c1a9954a3f9880f6d15c91bf6387, 2026-09-25T07:52:15Z)
Java version: 25.0.5, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm
+ spotbugs -version
4.10.5
+ asprof --version
Async-profiler 4.6 built on Jan  1 1970
+ mvnd --version
Apache Maven Daemon (mvnd) 1.0.6 linux-aarch64 native client (e0df65807439de579e16632881cf4be14b5a3cca)
Terminal: org.jline.terminal.impl.DumbTerminal
Apache Maven 3.9.16 (2bdd9fddda4b155ebf8000e807eb73fd829a51d5)
Maven home: /usr/share/mvnd/mvn
Java version: 25.0.5, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "6.12.114", arch: "aarch64", family: "unix"
+ kotlinc -version
info: kotlinc-jvm 2.4.21 (JRE 25.0.5+8-LTS)
+ jbang --version
0.143.0

@mitodrummer mitodrummer left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The build_cmd smoke on jdk-25 at e24a3fc exits 0. The command matches stacks/java/stack.ncl:83 verbatim, and every tool that reports its JVM names the same Temurin 25.0.5. The body's "Verified" section records it, and minimal build is green on the head. Approving. x86_64 hasn't been smoke-run.

@bryan-minimal
bryan-minimal added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit da07b16 Nov 3, 2026
13 checks passed
@bryan-minimal
bryan-minimal deleted the java-loadout branch November 3, 2026 04:52
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.

2 participants

0