| # |
| # Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| # |
| # This code is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU General Public License version 2 only, as |
| # published by the Free Software Foundation. Oracle designates this |
| # particular file as subject to the "Classpath" exception as provided |
| # by Oracle in the LICENSE file that accompanied this code. |
| # |
| # This code is distributed in the hope that it will be useful, but WITHOUT |
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| # version 2 for more details (a copy is included in the LICENSE file that |
| # accompanied this code). |
| # |
| # You should have received a copy of the GNU General Public License version |
| # 2 along with this work; if not, write to the Free Software Foundation, |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| # |
| # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| # or visit www.oracle.com if you need additional information or have any |
| # questions. |
| # |
| |
| name: 'Get BootJDK' |
| description: 'Download the BootJDK from cache or source location' |
| inputs: |
| platform: |
| description: 'Platform' |
| required: true |
| outputs: |
| path: |
| description: 'Path to the installed BootJDK' |
| value: ${{ steps.path-name.outputs.path }} |
| |
| runs: |
| using: composite |
| steps: |
| - name: 'Determine platform prefix' |
| id: platform-prefix |
| run: | |
| # Convert platform name to upper case |
| platform_prefix="$(echo ${{ inputs.platform }} | tr [a-z-] [A-Z_])" |
| echo "value=$platform_prefix" >> $GITHUB_OUTPUT |
| shell: bash |
| |
| - name: 'Get URL configuration' |
| id: url |
| uses: ./.github/actions/config |
| with: |
| var: ${{ steps.platform-prefix.outputs.value}}_BOOT_JDK_URL |
| |
| - name: 'Get SHA256 configuration' |
| id: sha256 |
| uses: ./.github/actions/config |
| with: |
| var: ${{ steps.platform-prefix.outputs.value}}_BOOT_JDK_SHA256 |
| |
| - name: 'Get file extension configuration' |
| id: ext |
| uses: ./.github/actions/config |
| with: |
| var: ${{ steps.platform-prefix.outputs.value}}_BOOT_JDK_EXT |
| |
| - name: 'Check cache for BootJDK' |
| id: get-cached-bootjdk |
| uses: actions/cache@v4 |
| with: |
| path: bootjdk/jdk |
| key: boot-jdk-${{ inputs.platform }}-${{ steps.sha256.outputs.value }} |
| |
| # macOS is missing sha256sum |
| - name: 'Install sha256sum' |
| run: | |
| # Run Homebrew installation |
| brew install coreutils |
| shell: bash |
| if: steps.get-cached-bootjdk.outputs.cache-hit != 'true' && runner.os == 'macOS' |
| |
| - name: 'Download BootJDK' |
| run: | |
| # Download BootJDK and verify checksum |
| mkdir -p bootjdk/jdk |
| mkdir -p bootjdk/unpacked |
| wget --progress=dot:mega -O bootjdk/jdk.${{ steps.ext.outputs.value }} '${{ steps.url.outputs.value }}' |
| echo '${{ steps.sha256.outputs.value }} bootjdk/jdk.${{ steps.ext.outputs.value }}' | sha256sum -c >/dev/null - |
| shell: bash |
| if: steps.get-cached-bootjdk.outputs.cache-hit != 'true' |
| |
| - name: 'Unpack BootJDK' |
| run: | |
| # Unpack the BootJDK and move files to a common location |
| if [[ '${{ steps.ext.outputs.value }}' == 'tar.gz' ]]; then |
| tar -xf bootjdk/jdk.${{ steps.ext.outputs.value }} -C bootjdk/unpacked |
| else |
| unzip -q bootjdk/jdk.${{ steps.ext.outputs.value }} -d bootjdk/unpacked |
| fi |
| jdk_root="$(dirname $(find bootjdk/unpacked -name bin -type d))" |
| mv "$jdk_root"/* bootjdk/jdk/ |
| shell: bash |
| if: steps.get-cached-bootjdk.outputs.cache-hit != 'true' |
| |
| - name: 'Export path to where BootJDK is installed' |
| id: path-name |
| run: | |
| # Export the absolute path |
| echo "path=`pwd`/bootjdk/jdk" >> $GITHUB_OUTPUT |
| shell: bash |