diff --git a/README.md b/README.md index f76c65e73..a8f974113 100644 --- a/README.md +++ b/README.md @@ -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` | diff --git a/__tests__/distributors/temurin-installer.test.ts b/__tests__/distributors/temurin-installer.test.ts index 7606627e6..815ec26a2 100644 --- a/__tests__/distributors/temurin-installer.test.ts +++ b/__tests__/distributors/temurin-installer.test.ts @@ -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) => { diff --git a/__tests__/java-platform-contract.test.ts b/__tests__/java-platform-contract.test.ts index 187a54a48..a9a68b9c4 100644 --- a/__tests__/java-platform-contract.test.ts +++ b/__tests__/java-platform-contract.test.ts @@ -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); diff --git a/action.yml b/action.yml index 1f244a223..69f73ff40 100644 --- a/action.yml +++ b/action.yml @@ -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' diff --git a/dist/setup/index.js b/dist/setup/index.js index 8e019a02a..21c14f0ca 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -31026,7 +31026,11 @@ const STANDARD_LINUX = ['x64', 'x86', 'aarch64', 'ppc64le', 's390x']; const JAVA_PLATFORM_CAPABILITIES = { [_package_types_js__WEBPACK_IMPORTED_MODULE_2__/* .JavaDistribution */ .zS.Temurin]: { platforms: { - linux: [...STANDARD_LINUX, { architecture: 'armv7', versionRange: '<18' }], + linux: [ + ...STANDARD_LINUX, + 'riscv64', + { architecture: 'armv7', versionRange: '<18' } + ], macos: X64_ARM64, windows: ['x64', 'x86', 'aarch64'] } @@ -31164,6 +31168,7 @@ const CANONICAL_ARCHITECTURES = [ 'aarch64', 'ppc64le', 'ppc64', + 'riscv64', 's390x' ]; const PLATFORM_ALIASES = { diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md index 8561ab6f4..a00251d61 100644 --- a/docs/advanced-usage.md +++ b/docs/advanced-usage.md @@ -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` | | diff --git a/src/distributions/platform-types.ts b/src/distributions/platform-types.ts index a48b4595e..593bbc979 100644 --- a/src/distributions/platform-types.ts +++ b/src/distributions/platform-types.ts @@ -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; @@ -35,7 +42,11 @@ export const JAVA_PLATFORM_CAPABILITIES: Record< > = { [JavaDistribution.Temurin]: { platforms: { - linux: [...STANDARD_LINUX, {architecture: 'armv7', versionRange: '<18'}], + linux: [ + ...STANDARD_LINUX, + 'riscv64', + {architecture: 'armv7', versionRange: '<18'} + ], macos: X64_ARM64, windows: ['x64', 'x86', 'aarch64'] } @@ -174,6 +185,7 @@ const CANONICAL_ARCHITECTURES: readonly JavaArchitecture[] = [ 'aarch64', 'ppc64le', 'ppc64', + 'riscv64', 's390x' ];