diff --git a/src/distributions/adopt/installer.ts b/src/distributions/adopt/installer.ts index 97a2d329..f5fb477d 100644 --- a/src/distributions/adopt/installer.ts +++ b/src/distributions/adopt/installer.ts @@ -88,7 +88,7 @@ export class AdoptDistribution extends JavaBase { private async getAvailableVersions(): Promise { const platform = this.getPlatformOption(); - const arch = this.architecture; + const arch = this.distributionArchitecture(); const imageType = this.packageType; const versionRange = encodeURI('[1.0,100.0]'); // retrieve all available versions const releaseType = this.stable ? 'ga' : 'ea'; diff --git a/src/distributions/corretto/installer.ts b/src/distributions/corretto/installer.ts index 207bf164..f207ecc7 100644 --- a/src/distributions/corretto/installer.ts +++ b/src/distributions/corretto/installer.ts @@ -68,7 +68,7 @@ export class CorrettoDistribution extends JavaBase { private async getAvailableVersions(): Promise { const platform = this.getPlatformOption(); - const arch = this.architecture; + const arch = this.distributionArchitecture(); const imageType = this.packageType; console.time('coretto-retrieve-available-versions'); diff --git a/src/distributions/liberica/installer.ts b/src/distributions/liberica/installer.ts index d4b32add..7f8e57cb 100644 --- a/src/distributions/liberica/installer.ts +++ b/src/distributions/liberica/installer.ts @@ -10,7 +10,7 @@ import path from 'path'; const supportedPlatform = `'linux', 'linux-musl', 'macos', 'solaris', 'windows'`; -const supportedArchitecture = `'x86', 'x64', 'armv7', 'aarch64', 'ppc64le'`; +const supportedArchitectures = `'x86', 'x64', 'armv7', 'aarch64', 'ppc64le'`; export class LibericaDistributions extends JavaBase { constructor(installerOptions: JavaInstallerOptions) { @@ -110,7 +110,8 @@ export class LibericaDistributions extends JavaBase { } private getArchitectureOptions(): ArchitectureOptions { - switch (this.architecture) { + const arch = this.distributionArchitecture(); + switch (arch) { case 'x86': return { bitness: '32', arch: 'x86' }; case 'x64': @@ -123,7 +124,7 @@ export class LibericaDistributions extends JavaBase { return { bitness: '64', arch: 'ppc' }; default: throw new Error( - `Architecture '${this.architecture}' is not supported. Supported architectures: ${supportedArchitecture}` + `Architecture '${this.architecture}' is not supported. Supported architectures: ${supportedArchitectures}` ); } } @@ -154,4 +155,14 @@ export class LibericaDistributions extends JavaBase { } return mainVersion; } + + protected distributionArchitecture(): string { + let arch = super.distributionArchitecture(); + switch (arch) { + case 'arm': + return 'armv7'; + default: + return arch; + } + } } diff --git a/src/distributions/microsoft/installer.ts b/src/distributions/microsoft/installer.ts index 4ceb4285..8fba1349 100644 --- a/src/distributions/microsoft/installer.ts +++ b/src/distributions/microsoft/installer.ts @@ -37,7 +37,8 @@ export class MicrosoftDistributions extends JavaBase { } protected async findPackageForDownload(range: string): Promise { - if (this.architecture !== 'x64' && this.architecture !== 'aarch64') { + const arch = this.distributionArchitecture(); + if (arch !== 'x64' && arch !== 'aarch64') { throw new Error(`Unsupported architecture: ${this.architecture}`); } @@ -53,9 +54,8 @@ export class MicrosoftDistributions extends JavaBase { const opts = this.getPlatformOption(); const availableVersions = availableVersionsRaw.map(item => ({ - url: `https://aka.ms/download-jdk/microsoft-jdk-${item.version.join('.')}-${opts.os}-${ - this.architecture - }.${opts.archive}`, + url: `https://aka.ms/download-jdk/microsoft-jdk-${item.version.join('.')}-${opts.os}-${arch + }.${opts.archive}`, version: this.convertVersionToSemver(item) })); @@ -95,7 +95,7 @@ export class MicrosoftDistributions extends JavaBase { ]; // M1 is only supported for Java 16 & 17 - if (process.platform !== 'darwin' || this.architecture !== 'aarch64') { + if (process.platform !== 'darwin' || this.distributionArchitecture() !== 'aarch64') { jdkVersions.push({ version: [11, 0, 13, 8, 1] }); diff --git a/src/distributions/zulu/installer.ts b/src/distributions/zulu/installer.ts index 34679bbd..8b3b00a4 100644 --- a/src/distributions/zulu/installer.ts +++ b/src/distributions/zulu/installer.ts @@ -129,14 +129,17 @@ export class ZuluDistribution extends JavaBase { hw_bitness: string; abi: string; } { - if (this.architecture == 'x64') { - return { arch: 'x86', hw_bitness: '64', abi: '' }; - } else if (this.architecture == 'x86') { - return { arch: 'x86', hw_bitness: '32', abi: '' }; - } else if (this.architecture == 'arm64') { - return { arch: 'arm', hw_bitness: '64', abi: '' }; - } else { - return { arch: this.architecture, hw_bitness: '', abi: '' }; + const arch = this.distributionArchitecture(); + switch (arch) { + case 'x64': + return { arch: 'x86', hw_bitness: '64', abi: '' }; + case 'x86': + return { arch: 'x86', hw_bitness: '32', abi: '' }; + case 'aarch64': + case 'arm64': + return { arch: 'arm', hw_bitness: '64', abi: '' }; + default: + return { arch: arch, hw_bitness: '', abi: '' }; } }