From 07c5d154e9900d84b948302c54e508716e79972f Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 10:25:21 +0300 Subject: [PATCH 1/9] Update e2e-versions.yml --- .github/workflows/e2e-versions.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/e2e-versions.yml b/.github/workflows/e2e-versions.yml index 40b2b473f..ae358bb8e 100644 --- a/.github/workflows/e2e-versions.yml +++ b/.github/workflows/e2e-versions.yml @@ -33,6 +33,15 @@ jobs: - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash + - name: setup-java + uses: ./ + id: setup-java2 + with: + java-version: ${{ matrix.version }} + distribution: ${{ matrix.distribution }} + - name: Verify Java + run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java2.outputs.path }}" + shell: bash setup-java-major-minor-versions: name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} From 2af39a78a7ddf0b79dc6f7cdab4bdd41cc8c5106 Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 10:28:39 +0300 Subject: [PATCH 2/9] Update e2e-versions.yml --- .github/workflows/e2e-versions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-versions.yml b/.github/workflows/e2e-versions.yml index ae358bb8e..8ede3f1cf 100644 --- a/.github/workflows/e2e-versions.yml +++ b/.github/workflows/e2e-versions.yml @@ -33,7 +33,7 @@ jobs: - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash - - name: setup-java + - name: setup-java uses: ./ id: setup-java2 with: From b082205a41fff9026de7ae32dc98a748c64f9937 Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 11:10:28 +0300 Subject: [PATCH 3/9] implement fix --- dist/setup/index.js | 25 ++++++++++++++++++++----- src/distributions/adopt/installer.ts | 4 ---- src/distributions/base-installer.ts | 8 ++++++++ src/distributions/zulu/installer.ts | 17 ++++++++++++++++- 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index f102f9003..288db3596 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -3951,10 +3951,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.JavaBase = void 0; const tc = __importStar(__webpack_require__(139)); const core = __importStar(__webpack_require__(470)); +const fs = __importStar(__webpack_require__(747)); const semver_1 = __importDefault(__webpack_require__(876)); const path_1 = __importDefault(__webpack_require__(622)); const httpm = __importStar(__webpack_require__(539)); const util_1 = __webpack_require__(322); +const constants_1 = __webpack_require__(211); class JavaBase { constructor(distribution, installerOptions) { this.distribution = distribution; @@ -3978,6 +3980,11 @@ class JavaBase { foundJava = yield this.downloadTool(javaRelease); core.info(`Java ${foundJava.version} was downloaded`); } + // JDK folder may contain postfix "Contents/Home" on macOS + const macOSPostfixPath = path_1.default.join(foundJava.path, constants_1.MACOS_JAVA_CONTENT_POSTFIX); + if (process.platform === 'darwin' && fs.existsSync(macOSPostfixPath)) { + foundJava.path = macOSPostfixPath; + } core.info(`Setting Java ${foundJava.version} as the default`); this.setJavaDefault(foundJava.version, foundJava.path); return foundJava; @@ -14001,7 +14008,8 @@ class ZuluDistribution extends base_installer_1.JavaBase { extractedJavaPath = yield util_1.extractJdkFile(javaArchivePath, extension); const archiveName = fs_1.default.readdirSync(extractedJavaPath)[0]; const archivePath = path_1.default.join(extractedJavaPath, archiveName); - const javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, this.getToolcacheVersionName(javaRelease.version), this.architecture); + const jdkPath = this.findJDKInstallationSubfolder(archivePath); + const javaPath = yield tc.cacheDir(jdkPath, this.toolcacheFolderName, this.getToolcacheVersionName(javaRelease.version), this.architecture); return { version: javaRelease.version, path: javaPath }; }); } @@ -14074,6 +14082,17 @@ class ZuluDistribution extends base_installer_1.JavaBase { } return mainVersion; } + findJDKInstallationSubfolder(archiveFolder) { + // Zulu archive contains a bunch of symlinks and zulu-.jdk subfolder + const jdkFolders = fs_1.default + .readdirSync(archiveFolder, { withFileTypes: true }) + .filter(item => !item.isSymbolicLink()) + .filter(item => item.name.startsWith('zulu-') && item.name.endsWith('.jdk')); + if (jdkFolders.length === 0) { + return archiveFolder; + } + return path_1.default.join(archiveFolder, jdkFolders[0].name); + } } exports.ZuluDistribution = ZuluDistribution; @@ -26861,7 +26880,6 @@ const fs_1 = __importDefault(__webpack_require__(747)); const path_1 = __importDefault(__webpack_require__(622)); const semver_1 = __importDefault(__webpack_require__(876)); const base_installer_1 = __webpack_require__(83); -const constants_1 = __webpack_require__(211); const util_1 = __webpack_require__(322); class AdoptDistribution extends base_installer_1.JavaBase { constructor(installerOptions) { @@ -26907,9 +26925,6 @@ class AdoptDistribution extends base_installer_1.JavaBase { const archivePath = path_1.default.join(extractedJavaPath, archiveName); const version = this.getToolcacheVersionName(javaRelease.version); javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, version, this.architecture); - if (process.platform === 'darwin') { - javaPath = path_1.default.join(javaPath, constants_1.MACOS_JAVA_CONTENT_POSTFIX); - } return { version: javaRelease.version, path: javaPath }; }); } diff --git a/src/distributions/adopt/installer.ts b/src/distributions/adopt/installer.ts index 5b316e5d7..49a01f0f2 100644 --- a/src/distributions/adopt/installer.ts +++ b/src/distributions/adopt/installer.ts @@ -67,10 +67,6 @@ export class AdoptDistribution extends JavaBase { javaPath = await tc.cacheDir(archivePath, this.toolcacheFolderName, version, this.architecture); - if (process.platform === 'darwin') { - javaPath = path.join(javaPath, MACOS_JAVA_CONTENT_POSTFIX); - } - return { version: javaRelease.version, path: javaPath }; } diff --git a/src/distributions/base-installer.ts b/src/distributions/base-installer.ts index 8c4698cb0..6f1312c7a 100644 --- a/src/distributions/base-installer.ts +++ b/src/distributions/base-installer.ts @@ -1,10 +1,12 @@ import * as tc from '@actions/tool-cache'; import * as core from '@actions/core'; +import * as fs from 'fs'; import semver from 'semver'; import path from 'path'; import * as httpm from '@actions/http-client'; import { getToolcachePath, getVersionFromToolcachePath, isVersionSatisfies } from '../util'; import { JavaDownloadRelease, JavaInstallerOptions, JavaInstallerResults } from './base-models'; +import { MACOS_JAVA_CONTENT_POSTFIX } from '../constants'; export abstract class JavaBase { protected http: httpm.HttpClient; @@ -40,6 +42,12 @@ export abstract class JavaBase { core.info(`Java ${foundJava.version} was downloaded`); } + // JDK folder may contain postfix "Contents/Home" on macOS + const macOSPostfixPath = path.join(foundJava.path, MACOS_JAVA_CONTENT_POSTFIX); + if (process.platform === 'darwin' && fs.existsSync(macOSPostfixPath)) { + foundJava.path = macOSPostfixPath; + } + core.info(`Setting Java ${foundJava.version} as the default`); this.setJavaDefault(foundJava.version, foundJava.path); diff --git a/src/distributions/zulu/installer.ts b/src/distributions/zulu/installer.ts index 7cb327043..42e2b2db1 100644 --- a/src/distributions/zulu/installer.ts +++ b/src/distributions/zulu/installer.ts @@ -72,8 +72,10 @@ export class ZuluDistribution extends JavaBase { const archiveName = fs.readdirSync(extractedJavaPath)[0]; const archivePath = path.join(extractedJavaPath, archiveName); + const jdkPath = this.findJDKInstallationSubfolder(archivePath); + const javaPath = await tc.cacheDir( - archivePath, + jdkPath, this.toolcacheFolderName, this.getToolcacheVersionName(javaRelease.version), this.architecture @@ -160,4 +162,17 @@ export class ZuluDistribution extends JavaBase { return mainVersion; } + + private findJDKInstallationSubfolder(archiveFolder: string) { + // Zulu archive contains a bunch of symlinks and zulu-.jdk subfolder + const jdkFolders = fs + .readdirSync(archiveFolder, { withFileTypes: true }) + .filter(item => !item.isSymbolicLink()) + .filter(item => item.name.startsWith('zulu-') && item.name.endsWith('.jdk')); + if (jdkFolders.length === 0) { + return archiveFolder; + } + + return path.join(archiveFolder, jdkFolders[0].name); + } } From 57c14a459842904e539b17824c52da285b365d66 Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 11:15:39 +0300 Subject: [PATCH 4/9] Update e2e-versions.yml --- .github/workflows/e2e-versions.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/e2e-versions.yml b/.github/workflows/e2e-versions.yml index 8ede3f1cf..9f69e2cb5 100644 --- a/.github/workflows/e2e-versions.yml +++ b/.github/workflows/e2e-versions.yml @@ -42,6 +42,10 @@ jobs: - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java2.outputs.path }}" shell: bash + - name: Verify Java + run: ls -la "${{ steps.setup-java2.outputs.path }}" + shell: bash + setup-java-major-minor-versions: name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} From b5490195d131c36e8c4b78883009cdd56f0c01ef Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 12:05:53 +0300 Subject: [PATCH 5/9] Update installer.ts --- src/distributions/zulu/installer.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/distributions/zulu/installer.ts b/src/distributions/zulu/installer.ts index 42e2b2db1..d5e5dc84a 100644 --- a/src/distributions/zulu/installer.ts +++ b/src/distributions/zulu/installer.ts @@ -164,11 +164,15 @@ export class ZuluDistribution extends JavaBase { } private findJDKInstallationSubfolder(archiveFolder: string) { - // Zulu archive contains a bunch of symlinks and zulu-.jdk subfolder + if (process.platform != 'darwin') { + return archiveFolder; + } + + // Zulu archive on macOS contains a set of symlinks and zulu-.jdk subfolder const jdkFolders = fs .readdirSync(archiveFolder, { withFileTypes: true }) - .filter(item => !item.isSymbolicLink()) - .filter(item => item.name.startsWith('zulu-') && item.name.endsWith('.jdk')); + .filter(item => item.isDirectory() && !item.isSymbolicLink() ) + .filter(item => /^zulu-\d+\.\w+$/.test(item.name)); if (jdkFolders.length === 0) { return archiveFolder; } From 4d83f46b4cdd7aa945461ef40ff9f98b21dc9a09 Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 12:07:40 +0300 Subject: [PATCH 6/9] fix filter logic --- dist/setup/index.js | 9 ++++++--- src/distributions/zulu/installer.ts | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index 288db3596..5b86ad152 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -14083,11 +14083,14 @@ class ZuluDistribution extends base_installer_1.JavaBase { return mainVersion; } findJDKInstallationSubfolder(archiveFolder) { - // Zulu archive contains a bunch of symlinks and zulu-.jdk subfolder + if (process.platform != 'darwin') { + return archiveFolder; + } + // Zulu archive on macOS contains a set of symlinks and zulu-.jdk subfolder const jdkFolders = fs_1.default .readdirSync(archiveFolder, { withFileTypes: true }) - .filter(item => !item.isSymbolicLink()) - .filter(item => item.name.startsWith('zulu-') && item.name.endsWith('.jdk')); + .filter(item => item.isDirectory() && !item.isSymbolicLink()) + .filter(item => /^zulu-\d+\.\w+$/.test(item.name)); if (jdkFolders.length === 0) { return archiveFolder; } diff --git a/src/distributions/zulu/installer.ts b/src/distributions/zulu/installer.ts index d5e5dc84a..87284927f 100644 --- a/src/distributions/zulu/installer.ts +++ b/src/distributions/zulu/installer.ts @@ -171,7 +171,7 @@ export class ZuluDistribution extends JavaBase { // Zulu archive on macOS contains a set of symlinks and zulu-.jdk subfolder const jdkFolders = fs .readdirSync(archiveFolder, { withFileTypes: true }) - .filter(item => item.isDirectory() && !item.isSymbolicLink() ) + .filter(item => item.isDirectory() && !item.isSymbolicLink()) .filter(item => /^zulu-\d+\.\w+$/.test(item.name)); if (jdkFolders.length === 0) { return archiveFolder; From 005617c0f8e3f51c75886af9ee71cda369492cca Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 12:15:27 +0300 Subject: [PATCH 7/9] Update e2e-versions.yml --- .github/workflows/e2e-versions.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/e2e-versions.yml b/.github/workflows/e2e-versions.yml index 9f69e2cb5..389986db4 100644 --- a/.github/workflows/e2e-versions.yml +++ b/.github/workflows/e2e-versions.yml @@ -101,6 +101,9 @@ jobs: with: java-version: ${{ matrix.version }} distribution: zulu + - name: Verify Java + run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" + shell: bash setup-java-ea-versions-adopt: name: adopt ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} @@ -120,6 +123,9 @@ jobs: with: java-version: ${{ matrix.version }} distribution: adopt + - name: Verify Java + run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" + shell: bash setup-java-custom-package-type: name: ${{ matrix.distribution }} ${{ matrix.version }} (${{ matrix.java-package }}-x64) - ${{ matrix.os }} From 3ad305894c7f59c776ee024a310fccfa6707a1f2 Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 12:40:45 +0300 Subject: [PATCH 8/9] remove extra logic --- dist/setup/index.js | 17 +---------------- src/distributions/zulu/installer.ts | 21 +-------------------- 2 files changed, 2 insertions(+), 36 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index 5b86ad152..28da6b311 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -14008,8 +14008,7 @@ class ZuluDistribution extends base_installer_1.JavaBase { extractedJavaPath = yield util_1.extractJdkFile(javaArchivePath, extension); const archiveName = fs_1.default.readdirSync(extractedJavaPath)[0]; const archivePath = path_1.default.join(extractedJavaPath, archiveName); - const jdkPath = this.findJDKInstallationSubfolder(archivePath); - const javaPath = yield tc.cacheDir(jdkPath, this.toolcacheFolderName, this.getToolcacheVersionName(javaRelease.version), this.architecture); + const javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, this.getToolcacheVersionName(javaRelease.version), this.architecture); return { version: javaRelease.version, path: javaPath }; }); } @@ -14082,20 +14081,6 @@ class ZuluDistribution extends base_installer_1.JavaBase { } return mainVersion; } - findJDKInstallationSubfolder(archiveFolder) { - if (process.platform != 'darwin') { - return archiveFolder; - } - // Zulu archive on macOS contains a set of symlinks and zulu-.jdk subfolder - const jdkFolders = fs_1.default - .readdirSync(archiveFolder, { withFileTypes: true }) - .filter(item => item.isDirectory() && !item.isSymbolicLink()) - .filter(item => /^zulu-\d+\.\w+$/.test(item.name)); - if (jdkFolders.length === 0) { - return archiveFolder; - } - return path_1.default.join(archiveFolder, jdkFolders[0].name); - } } exports.ZuluDistribution = ZuluDistribution; diff --git a/src/distributions/zulu/installer.ts b/src/distributions/zulu/installer.ts index 87284927f..7cb327043 100644 --- a/src/distributions/zulu/installer.ts +++ b/src/distributions/zulu/installer.ts @@ -72,10 +72,8 @@ export class ZuluDistribution extends JavaBase { const archiveName = fs.readdirSync(extractedJavaPath)[0]; const archivePath = path.join(extractedJavaPath, archiveName); - const jdkPath = this.findJDKInstallationSubfolder(archivePath); - const javaPath = await tc.cacheDir( - jdkPath, + archivePath, this.toolcacheFolderName, this.getToolcacheVersionName(javaRelease.version), this.architecture @@ -162,21 +160,4 @@ export class ZuluDistribution extends JavaBase { return mainVersion; } - - private findJDKInstallationSubfolder(archiveFolder: string) { - if (process.platform != 'darwin') { - return archiveFolder; - } - - // Zulu archive on macOS contains a set of symlinks and zulu-.jdk subfolder - const jdkFolders = fs - .readdirSync(archiveFolder, { withFileTypes: true }) - .filter(item => item.isDirectory() && !item.isSymbolicLink()) - .filter(item => /^zulu-\d+\.\w+$/.test(item.name)); - if (jdkFolders.length === 0) { - return archiveFolder; - } - - return path.join(archiveFolder, jdkFolders[0].name); - } } From 7b948b585d5132be691d322b3fe5a2dfc427c448 Mon Sep 17 00:00:00 2001 From: Maxim Lobanov Date: Fri, 19 Mar 2021 13:49:29 +0300 Subject: [PATCH 9/9] Update e2e-versions.yml --- .github/workflows/e2e-versions.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/e2e-versions.yml b/.github/workflows/e2e-versions.yml index 389986db4..9bd6dadd1 100644 --- a/.github/workflows/e2e-versions.yml +++ b/.github/workflows/e2e-versions.yml @@ -33,19 +33,6 @@ jobs: - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash - - name: setup-java - uses: ./ - id: setup-java2 - with: - java-version: ${{ matrix.version }} - distribution: ${{ matrix.distribution }} - - name: Verify Java - run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java2.outputs.path }}" - shell: bash - - name: Verify Java - run: ls -la "${{ steps.setup-java2.outputs.path }}" - shell: bash - setup-java-major-minor-versions: name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }}