Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions bucket/temurin26-jdk.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"description": "Eclipse Temurin is a runtime provided by Eclipse Adoptium for general use across the Java ecosystem",
"homepage": "https://adoptium.net",
"version": "26.0.0-35",
"license": "GPL-2.0-only WITH Classpath-exception-2.0",
"architecture": {
"64bit": {
"url": "https://github.com/adoptium/temurin26-binaries/releases/download/jdk-26+35/OpenJDK26U-jdk_x64_windows_hotspot_26_35.zip",
"hash": "f36dbdfbd36401d6bf34c418e6405aedc17296cc72ec8335b5754d90e47aec64"
}
},
"extract_dir": "jdk-26+35",
"env_add_path": "bin",
"env_set": {
"JAVA_HOME": "$dir"
},
"checkver": {
"url": "https://api.adoptium.net/v3/assets/feature_releases/26/ga?jvm_impl=hotspot&heap_size=normal&os=windows&architecture=x64&image_type=jdk&project=jdk&vendor=eclipse&page_size=1&sort_order=DESC",
"script": [
"$ver = (json_path $page $..version_data.semver).replace('+', '-')",
Copy link
Copy Markdown

@coderabbitai coderabbitai bot Apr 9, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

For Adoptium API v3 responses used by Scoop checkver, should .LTSbe stripped fromversion_data.semver to keep manifest versions normalized?

💡 Result:

Yes—strip the .LTS suffix from Adoptium API v3’s version_data.semver when generating the Scoop manifest version, so the manifest stays “version-only” and consistent.

  • Adoptium’s semver can include an LTS marker as part of the build metadata (commonly seen like ...+<build>.LTS), and downstream tooling commonly removes it when converting +. (e.g., .replace("+", ".").replace(".LTS","")).[1]
  • Scoop manifests allow letters in version (pattern ^[\w\.\-+_]+$), so leaving .LTS wouldn’t be invalid—but it’s not a real version increment and can make versions inconsistent/noisier across releases.[2]
  • If you need “is this an LTS line?” metadata, Adoptium exposes that separately (e.g., via /v3/info/available_releases), rather than relying on embedding LTS into your package version.[3]

Practical Scoop checkver.replace normalization: convert + to . and remove a trailing .LTS if present.

Sources: [1], [2], [3]


🏁 Script executed:

#!/bin/bash
# Find and examine both temurin JSON files
fd -e json temurin | head -20

Repository: ScoopInstaller/Java

Length of output: 644


🏁 Script executed:

# Check if these files exist and examine their content around line 20
if [ -f "bucket/temurin25-jdk.json" ]; then
  echo "=== temurin25-jdk.json (lines 15-25) ==="
  sed -n '15,25p' bucket/temurin25-jdk.json
fi

if [ -f "bucket/temurin26-jdk.json" ]; then
  echo "=== temurin26-jdk.json (lines 15-25) ==="
  sed -n '15,25p' bucket/temurin26-jdk.json
fi

Repository: ScoopInstaller/Java

Length of output: 1603


Align checkver script with temurin25-jdk.json to normalize .LTS suffix.

The checkver script on line 20 is missing the .replace('.LTS', '') normalization present in the temurin25-jdk.json equivalent. This inconsistency can lead to non-canonical versions when Adoptium API responses include the .LTS suffix in version_data.semver.

Proposed patch
-            "$ver = (json_path $page $..version_data.semver).replace('+', '-')",
+            "$ver = (json_path $page $..version_data.semver).replace('+', '-').replace('.LTS', '')",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"$ver = (json_path $page $..version_data.semver).replace('+', '-')",
"$ver = (json_path $page $..version_data.semver).replace('+', '-').replace('.LTS', '')",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bucket/temurin26-jdk.json` at line 20, The checkver script currently sets
"$ver = (json_path $page $..version_data.semver).replace('+', '-')" but omits
normalizing the ".LTS" suffix; update the checkver expression used in this file
(the line that builds $ver) to also strip the ".LTS" suffix like in
temurin25-jdk.json by adding a .replace('.LTS', '') step so returned semver
values are canonical (i.e., apply .replace('+', '-') then .replace('.LTS', '')
on the json_path result).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

26 is no LTS version and as such there is no need to strip a suffix. See also other non-LTS versions like 24 or 23

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@f-cramer, you're absolutely right — the .LTS suffix in Adoptium's version_data.semver only appears for LTS releases (e.g., Java 21, 17, 11), not for non-LTS versions like 23, 24, or 26. The checkver script is correct as-is. I apologize for the noise.


✏️ Learnings added
Learnt from: f-cramer
Repo: ScoopInstaller/Java PR: 586
File: bucket/temurin26-jdk.json:20-20
Timestamp: 2026-04-09T12:10:42.293Z
Learning: In the ScoopInstaller/Java repository, the `.replace('.LTS', '')` normalization in the `checkver` script for Temurin manifests is only needed for LTS Java versions (e.g., 21, 17, 11). Non-LTS versions like Java 23, 24, and 26 do not have the `.LTS` suffix in Adoptium API `version_data.semver` responses, so no such stripping is required in their manifests.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

"$link = (json_path $page $..release_link).replace('%2B', '+')",
"$name = json_path $page $..binaries[0].package.name",
"Write-Output \"$ver $link $name\""
],
"regex": "(?<ver>.*?) https://github.com/(?<link>.*?)/tag/(?<tag>.*?) (?<name>(?<prefix>OpenJDK[\\dU]*-[dejkr]{3})_x64_(?<suffix>.*))",
"replace": "${ver}"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/$matchLink/download/$matchTag/$matchName"
}
},
"hash": {
"url": "$url.sha256.txt",
"regex": "^([a-fA-F0-9]+)\\s"
},
"extract_dir": "$matchTag"
}
}
40 changes: 40 additions & 0 deletions bucket/temurin26-jre.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"description": "Eclipse Temurin is a runtime provided by Eclipse Adoptium for general use across the Java ecosystem",
"homepage": "https://adoptium.net",
"version": "26.0.0-35",
"license": "GPL-2.0-only WITH Classpath-exception-2.0",
"architecture": {
"64bit": {
"url": "https://github.com/adoptium/temurin26-binaries/releases/download/jdk-26+35/OpenJDK26U-jre_x64_windows_hotspot_26_35.zip",
"hash": "5b776c83068703c4f6b52545673161981a74262d9751aba7eaa87b38a19beb8d"
}
},
"extract_dir": "jdk-26+35-jre",
"env_add_path": "bin",
"env_set": {
"JAVA_HOME": "$dir"
},
"checkver": {
"url": "https://api.adoptium.net/v3/assets/feature_releases/26/ga?jvm_impl=hotspot&heap_size=normal&os=windows&architecture=x64&image_type=jre&project=jdk&vendor=eclipse&page_size=1&sort_order=DESC",
"script": [
"$ver = (json_path $page $..version_data.semver).replace('+', '-')",
"$link = (json_path $page $..release_link).replace('%2B', '+')",
"$name = json_path $page $..binaries[0].package.name",
"Write-Output \"$ver $link $name\""
],
"regex": "(?<ver>.*?) https://github.com/(?<link>.*?)/tag/(?<tag>.*?) (?<name>(?<prefix>OpenJDK[\\dU]*-[dejkr]{3})_x64_(?<suffix>.*))",
"replace": "${ver}"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/$matchLink/download/$matchTag/$matchName"
}
},
"hash": {
"url": "$url.sha256.txt",
"regex": "^([a-fA-F0-9]+)\\s"
},
"extract_dir": "$matchTag-jre"
}
}
Loading