From abd50e98764cbbd4105a6b2fcf80f03d5234328f Mon Sep 17 00:00:00 2001 From: Dennis Falling Date: Fri, 21 Aug 2026 16:09:59 +0100 Subject: [PATCH] Hold java on Adoptium mainline LTS via a rule that actually matches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rule added in #76 to keep java off Adoptium's respins never fired: the mise manager reports this dep as depName `java` but packageName `java-jdk`, and matchPackageNames tests the packageName, so the rule was inert and Renovate kept offering 25.0.4+101.0.LTS (PR #75, which fails `mise install` on linux/x64 nine seconds into both CI jobs). Matching on matchDepNames is what binds the rule to the dep. With the rule live, the respin is filtered and the next candidate is the non-LTS major 26.0.2+10 — not something the Android build JDK should drift onto. A single allowedVersions regex covers both cases by admitting only mainline LTS builds: three-part version, 1-2 digit build (respins encode as `patch * 100 + build`, landing at +1xx), `.0.LTS` suffix. Verified against the live Adoptium version list with `RENOVATE_PLATFORM=local renovate`: at the current pin no update is offered, and from an older pin (25.0.1+8.0.LTS) the mainline 25.0.4+7.0.LTS patch still comes through. Co-Authored-By: Claude Opus 5 (1M context) --- renovate.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/renovate.json b/renovate.json index 9151d7d..3332844 100644 --- a/renovate.json +++ b/renovate.json @@ -3,10 +3,10 @@ "extends": ["config:recommended"], "packageRules": [ { - "description": "Keep java on Adoptium mainline builds. Adoptium also publishes interim respins (`jdk-25.0.4.1+1`), and it builds those only for the platforms that needed the fix — 25.0.4.1 shipped for alpine-linux/x64 and mac/x64 only, with no linux/x64 binary. mise resolves java per platform, so a respin that skips linux/x64 has no metadata there at all and `mise install` hard-fails (`no metadata found for version temurin-25.0.4+101.0.LTS`), breaking CI and every dev machine that isn't a mac x64. Adoptium's semver maps a respin as `patch * 100 + build`, so mainline builds always land under +100 and respins at +1xx and up — that's what this regex excludes. Mainline updates (25.0.5, 26, ...) ship for all platforms and still come through. Drop this rule if Adoptium starts building respins for every platform.", - "matchPackageNames": ["java"], + "description": "Hold java on Adoptium mainline LTS builds, matched on depName: the mise manager reports this dep as depName `java` but packageName `java-jdk`, and matchPackageNames tests the packageName, so a matchPackageNames: [\"java\"] rule silently never applies. The regex admits only mainline LTS builds and blocks two things. First, Adoptium's interim respins (`jdk-25.0.4.1+1`): Adoptium builds a respin only for the platforms that needed the fix, and 25.0.4.1 shipped alpine-linux/x64 and mac/x64 only, with no linux/x64 binary. mise resolves java per platform, so on linux/x64 there is no metadata at all and `mise install` hard-fails (`no metadata found for version temurin-25.0.4+101.0.LTS`) before any build step, breaking CI and every dev machine that isn't a mac x64. Adoptium's semver encodes a respin as `patch * 100 + build`, so respins land at +1xx and up while mainline builds stay under +100 — hence the 1-2 digit build. Second, non-LTS majors (`26.0.2+10`, no LTS suffix): this is the Android build JDK and tracks LTS only. Mainline LTS patches (25.0.5, and the next LTS when it ships) still come through.", + "matchDepNames": ["java"], "matchManagers": ["mise"], - "allowedVersions": "!/\\+\\d{3,}\\./" + "allowedVersions": "/^\\d+\\.\\d+\\.\\d+\\+\\d{1,2}\\.0\\.LTS$/" }, { "description": "Pin Gradle to <9.7. React Native 0.87.0's bundled gradle-plugin (node_modules/@react-native/gradle-plugin) is compiled with Kotlin 2.2.0, whose compiler can only read Kotlin metadata up to 2.3.0. Gradle >=9.7 bundles a Kotlin 2.4.0 stdlib/reflect that leaks onto the settings-plugin compile classpath, so the build fails compiling the RN plugin (`Module was compiled with an incompatible version of Kotlin`). 9.6.1 is the highest version verified to configure cleanly; the wrapper tracks 9.4.1, the version RN 0.87 itself ships and builds against. Raise this ceiling once React Native ships a gradle-plugin built with Kotlin >=2.3.",