Support Temurin on Linux RISC-V (#1269)

* Document Temurin RISC-V compatibility

Co-Authored-By: multicode <multicode@yawk.at>

* Expose RISC-V as a canonical architecture

Co-Authored-By: multicode <multicode@yawk.at>

* Support Temurin on Linux RISC-V

Co-Authored-By: multicode <multicode@yawk.at>

* Address RISC-V review feedback

Co-Authored-By: multicode <multicode@yawk.at>

* Fix casing for RISC-V architecture in tests

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Update __tests__/java-platform-contract.test.ts

---------

Co-authored-by: multicode <multicode@yawk.at>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Jonas Konrad
2026-09-25 10:04:21 -03:00
committed by GitHub
co-authored by multicode Copilot Autofix powered by AI
parent 1aa87b638d
commit 97c5a5e13a
7 changed files with 39 additions and 7 deletions
+1 -1
View File
@@ -150,7 +150,7 @@ steps:
| `java-version-file` | Path to `.java-version`, `.tool-versions`, or `.sdkmanrc`. Used when `java-version` is not set. | |
| `distribution` | Java distribution keyword. Values are case-sensitive and must match one of the supported keywords below. Required unless `java-version-file` points to `.sdkmanrc` with a recognized distribution suffix. | |
| `java-package` | Package variant such as `jdk`, `jre`, `jdk+fx`, `jre+fx`, `jdk+crac`, `jre+crac`, `jdk+jmods`, `jdk+jcef`, `jre+jcef`, `jdk+ft`, or `jre+ft`. Support varies by distribution. | `jdk` |
| `architecture` | Package architecture. Canonical values are `x86`, `x64`, `armv7`, `aarch64`, `ppc64le`, `ppc64`, and `s390x`. Aliases `ia32`, `amd64`, `arm`, and `arm64` are normalized. | Runner architecture |
| `architecture` | Package architecture. Canonical values are `x86`, `x64`, `armv7`, `aarch64`, `ppc64le`, `ppc64`, `riscv64`, and `s390x`. Aliases `ia32`, `amd64`, `arm`, and `arm64` are normalized. | Runner architecture |
| `jdk-file` | Local compressed JDK archive. Requires `distribution: jdkfile`. | |
| `check-latest` | Check remote metadata for the latest version satisfying the version spec before using the runner tool cache. | `false` |
| `force-download` | Always download Java and replace any matching version in the tool cache. | `false` |
@@ -293,7 +293,8 @@ describe('getAvailableVersions', () => {
it.each([
['amd64', 'x64'],
['arm', 'arm'],
['arm64', 'aarch64']
['arm64', 'aarch64'],
['riscv64', 'riscv64']
])(
'defaults to os.arch(): %s mapped to distro arch: %s',
async (osArch: string, distroArch: string) => {
+8
View File
@@ -25,6 +25,7 @@ describe('Java platform capabilities', () => {
['aarch64', 'aarch64'],
['arm64', 'aarch64'],
['ppc64le', 'ppc64le'],
['RiScV64', 'riscv64'],
['s390x', 's390x']
])('normalizes architecture %s to %s', (input, expected) => {
expect(normalizeArchitecture(input)).toBe(expected);
@@ -68,6 +69,12 @@ describe('Java platform capabilities', () => {
);
});
it('allows Temurin on Linux riscv64', () => {
expect(validateJavaPlatform('temurin', 'linux', 'riscv64', '25')).toBe(
'riscv64'
);
});
it('rejects OS-specific restrictions with a consistent diagnostic', () => {
expect(() =>
validateJavaPlatform('oracle', 'win32', 'arm64', '21')
@@ -115,6 +122,7 @@ describe('Java platform capabilities', () => {
'aarch64',
'ppc64le',
'ppc64',
'riscv64',
's390x'
]) {
expect(content).toContain(architecture);
+1 -1
View File
@@ -17,7 +17,7 @@ inputs:
required: false
default: 'jdk'
architecture:
description: "The architecture of the package (`x86`, `x64`, `armv7`, `aarch64`, `ppc64le`, `ppc64`, or `s390x`). Aliases `ia32`, `amd64`, `arm`, and `arm64` are normalized to `x86`, `x64`, `armv7`, and `aarch64`. Supported values vary by distribution and operating system. Defaults to the action runner's architecture."
description: "The architecture of the package (`x86`, `x64`, `armv7`, `aarch64`, `ppc64le`, `ppc64`, `riscv64`, or `s390x`). Aliases `ia32`, `amd64`, `arm`, and `arm64` are normalized to `x86`, `x64`, `armv7`, and `aarch64`. Supported values vary by distribution and operating system. Defaults to the action runner's architecture."
required: false
jdk-file:
description: 'Path to where the compressed JDK is located'
+9 -1
View File
@@ -31022,7 +31022,14 @@ function createUnsupportedPackageError(distributionName, packageType, supportedP
const X64_ARM64 = ['x64', 'aarch64'];
const STANDARD_LINUX = ['x64', 'x86', 'aarch64', 'ppc64le', 's390x'];
const STANDARD_LINUX = [
'x64',
'x86',
'aarch64',
'ppc64le',
'riscv64',
's390x'
];
const JAVA_PLATFORM_CAPABILITIES = {
[_package_types_js__WEBPACK_IMPORTED_MODULE_2__/* .JavaDistribution */ .zS.Temurin]: {
platforms: {
@@ -31164,6 +31171,7 @@ const CANONICAL_ARCHITECTURES = [
'aarch64',
'ppc64le',
'ppc64',
'riscv64',
's390x'
];
const PLATFORM_ALIASES = {
+1 -1
View File
@@ -649,7 +649,7 @@ absent from a vendor catalog.
| Distribution | Linux | macOS | Windows | Other / version restrictions |
| --- | --- | --- | --- | --- |
| `temurin` | `x64`, `x86`, `armv7`, `aarch64`, `ppc64le`, `s390x` | `x64`, `aarch64` | `x64`, `x86`, `aarch64` | Linux `armv7` is available through Java 17. |
| `temurin` | `x64`, `x86`, `armv7`, `aarch64`, `ppc64le`, `riscv64`, `s390x` | `x64`, `aarch64` | `x64`, `x86`, `aarch64` | Linux `armv7` is available through Java 17. |
| `zulu` | `x64`, `x86`, `armv7`, `aarch64` | `x64`, `aarch64` | `x64`, `x86`, `aarch64` | |
| `liberica` | `x64`, `x86`, `armv7`, `aarch64`, `ppc64le` | `x64`, `aarch64` | `x64`, `x86`, `aarch64` | Solaris: `x64`. |
| `liberica-nik` | `x64`, `aarch64` | `x64`, `aarch64` | `x64`, `aarch64` | |
+17 -2
View File
@@ -5,7 +5,14 @@ import {JavaDistribution} from './package-types.js';
export type JavaPlatform = 'linux' | 'macos' | 'windows' | 'solaris';
export type JavaArchitecture =
'x86' | 'x64' | 'armv7' | 'aarch64' | 'ppc64le' | 'ppc64' | 's390x';
| 'x86'
| 'x64'
| 'armv7'
| 'aarch64'
| 'ppc64le'
| 'ppc64'
| 'riscv64'
| 's390x';
interface VersionedArchitecture {
architecture: JavaArchitecture;
@@ -27,7 +34,14 @@ export type JavaPlatformCapability =
RestrictedPlatformCapability | UnrestrictedPlatformCapability;
const X64_ARM64 = ['x64', 'aarch64'] as const;
const STANDARD_LINUX = ['x64', 'x86', 'aarch64', 'ppc64le', 's390x'] as const;
const STANDARD_LINUX = [
'x64',
'x86',
'aarch64',
'ppc64le',
'riscv64',
's390x'
] as const;
export const JAVA_PLATFORM_CAPABILITIES: Record<
JavaDistribution,
@@ -174,6 +188,7 @@ const CANONICAL_ARCHITECTURES: readonly JavaArchitecture[] = [
'aarch64',
'ppc64le',
'ppc64',
'riscv64',
's390x'
];