From 83c82dcca9922a442e4dad06713caaf2bc346495 Mon Sep 17 00:00:00 2001 From: Fabio Niephaus Date: Tue, 23 Sep 2025 13:27:04 +0200 Subject: [PATCH] Fix musl name --- .github/workflows/ci.yml | 833 ++++++++++++++++++++------------------- dist/main.js | 20 +- src/features/musl.ts | 23 +- 3 files changed, 434 insertions(+), 442 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b3b1f4..b5b8723 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,343 +35,343 @@ jobs: env: INPUT_GITHUB_TOKEN: ${{ github.token }} # for core.getInput() - test-action: - name: GraalVM - runs-on: ${{ matrix.os }} - env: - # Skip builds that require a GDS token but have no access to one (e.g., secrets are unavailable in PR runs) - PASSES_GDS_TOKEN_CHECK: ${{ !matrix.set-gds-token || secrets.GDS_TOKEN != '' }} - strategy: - matrix: - java-version: ['25', '21', '17', '20', 'dev'] - distribution: ['graalvm', 'graalvm-community'] - os: [ - ubuntu-latest, # Linux on Intel - ubuntu-22.04-arm, # Linux on arm64 - macos-latest, # macOS on Apple silicon - macos-13, # macOS on Intel - windows-latest - ] - set-gds-token: [false] - components: [''] - include: - - java-version: 'latest-ea' - distribution: 'graalvm' - os: ubuntu-latest - - java-version: '25-ea' - distribution: 'graalvm' - os: ubuntu-latest - - java-version: '21' - distribution: '' - os: ubuntu-latest - - java-version: 'dev' - distribution: '' - os: windows-latest - - java-version: '21' - distribution: 'graalvm-community' - os: ubuntu-latest - components: 'native-image' # should print a warning but not fail - - java-version: '21.0.0' # test for GA version (see #63) - distribution: 'graalvm' - os: ubuntu-latest - - java-version: '17' - distribution: 'graalvm' - os: ubuntu-latest - set-gds-token: true - - java-version: '17.0.13' - distribution: 'graalvm' - os: ubuntu-latest - set-gds-token: true - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run setup-graalvm action - uses: ./ - with: - java-version: ${{ matrix.java-version }} - distribution: ${{ matrix.distribution }} - github-token: ${{ secrets.GITHUB_TOKEN }} - components: ${{ matrix.components }} - gds-token: ${{ matrix.set-gds-token && secrets.GDS_TOKEN || '' }} - if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' }} - - name: Check environment - run: | - echo "GRAALVM_HOME: $GRAALVM_HOME" - if [[ "${{ matrix.java-version }}" == "dev" ]]; then - [[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12 - else - [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23 - fi - echo "JAVA_HOME: $JAVA_HOME" - java --version - java --version | grep "GraalVM" || exit 34 - native-image --version - if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' && runner.os != 'Windows' }} - - name: Check Windows environment - run: | - echo "GRAALVM_HOME: $env:GRAALVM_HOME" - echo "JAVA_HOME: $env:JAVA_HOME" - java --version - native-image --version - if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' && runner.os == 'Windows' }} + # test-action: + # name: GraalVM + # runs-on: ${{ matrix.os }} + # env: + # # Skip builds that require a GDS token but have no access to one (e.g., secrets are unavailable in PR runs) + # PASSES_GDS_TOKEN_CHECK: ${{ !matrix.set-gds-token || secrets.GDS_TOKEN != '' }} + # strategy: + # matrix: + # java-version: ['25', '21', '17', '20', 'dev'] + # distribution: ['graalvm', 'graalvm-community'] + # os: [ + # ubuntu-latest, # Linux on Intel + # ubuntu-22.04-arm, # Linux on arm64 + # macos-latest, # macOS on Apple silicon + # macos-13, # macOS on Intel + # windows-latest + # ] + # set-gds-token: [false] + # components: [''] + # include: + # - java-version: 'latest-ea' + # distribution: 'graalvm' + # os: ubuntu-latest + # - java-version: '25-ea' + # distribution: 'graalvm' + # os: ubuntu-latest + # - java-version: '21' + # distribution: '' + # os: ubuntu-latest + # - java-version: 'dev' + # distribution: '' + # os: windows-latest + # - java-version: '21' + # distribution: 'graalvm-community' + # os: ubuntu-latest + # components: 'native-image' # should print a warning but not fail + # - java-version: '21.0.0' # test for GA version (see #63) + # distribution: 'graalvm' + # os: ubuntu-latest + # - java-version: '17' + # distribution: 'graalvm' + # os: ubuntu-latest + # set-gds-token: true + # - java-version: '17.0.13' + # distribution: 'graalvm' + # os: ubuntu-latest + # set-gds-token: true + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # java-version: ${{ matrix.java-version }} + # distribution: ${{ matrix.distribution }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # components: ${{ matrix.components }} + # gds-token: ${{ matrix.set-gds-token && secrets.GDS_TOKEN || '' }} + # if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' }} + # - name: Check environment + # run: | + # echo "GRAALVM_HOME: $GRAALVM_HOME" + # if [[ "${{ matrix.java-version }}" == "dev" ]]; then + # [[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12 + # else + # [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23 + # fi + # echo "JAVA_HOME: $JAVA_HOME" + # java --version + # java --version | grep "GraalVM" || exit 34 + # native-image --version + # if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' && runner.os != 'Windows' }} + # - name: Check Windows environment + # run: | + # echo "GRAALVM_HOME: $env:GRAALVM_HOME" + # echo "JAVA_HOME: $env:JAVA_HOME" + # java --version + # native-image --version + # if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' && runner.os == 'Windows' }} - test-action-ce: # make sure the action works on a clean machine without building - needs: test-action - name: CE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - version: ['latest', 'dev'] - java-version: ['17', '20'] - components: ['native-image'] - os: [macos-latest, windows-latest, ubuntu-latest] - exclude: - - version: 'latest' - java-version: '20' - - version: 'dev' - java-version: '19' - include: - - version: '22.2.0' # for update notifications - java-version: '17' - components: 'native-image' - os: ubuntu-22.04 - - version: '21.2.0' - java-version: '8' # for JDK 8 notification - components: 'native-image' - os: ubuntu-latest - - version: '22.3.1' - java-version: '11' # for JDK 11 notification - components: 'native-image' - os: macos-13 - - version: '22.3.1' - java-version: '17' - components: 'native-image' - os: windows-2022 - - version: 'dev' - java-version: 'dev' - components: 'native-image' - os: ubuntu-latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run setup-graalvm action - uses: ./ - with: - version: ${{ matrix.version }} - java-version: ${{ matrix.java-version }} - components: ${{ matrix.components }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Check environment - run: | - echo "GRAALVM_HOME: $GRAALVM_HOME" - if [[ "${{ matrix.version }}" == "dev" ]] && [[ "${{ matrix.java-version }}" == "dev" ]]; then - [[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12 - else - [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23 - fi - echo "JAVA_HOME: $JAVA_HOME" - java -version - java -version 2>&1 | grep "GraalVM" || exit 34 - native-image --version - if [[ "${{ matrix.java-version }}" != "dev" ]]; then - gu list - fi - if: ${{ runner.os != 'Windows' }} - - name: Check Windows environment - run: | - echo "GRAALVM_HOME: $env:GRAALVM_HOME" - echo "JAVA_HOME: $env:JAVA_HOME" - java -version - native-image --version - gu.cmd remove native-image - if: ${{ runner.os == 'Windows' }} + # test-action-ce: # make sure the action works on a clean machine without building + # needs: test-action + # name: CE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }} + # runs-on: ${{ matrix.os }} + # strategy: + # matrix: + # version: ['latest', 'dev'] + # java-version: ['17', '20'] + # components: ['native-image'] + # os: [macos-latest, windows-latest, ubuntu-latest] + # exclude: + # - version: 'latest' + # java-version: '20' + # - version: 'dev' + # java-version: '19' + # include: + # - version: '22.2.0' # for update notifications + # java-version: '17' + # components: 'native-image' + # os: ubuntu-22.04 + # - version: '21.2.0' + # java-version: '8' # for JDK 8 notification + # components: 'native-image' + # os: ubuntu-latest + # - version: '22.3.1' + # java-version: '11' # for JDK 11 notification + # components: 'native-image' + # os: macos-13 + # - version: '22.3.1' + # java-version: '17' + # components: 'native-image' + # os: windows-2022 + # - version: 'dev' + # java-version: 'dev' + # components: 'native-image' + # os: ubuntu-latest + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # version: ${{ matrix.version }} + # java-version: ${{ matrix.java-version }} + # components: ${{ matrix.components }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - name: Check environment + # run: | + # echo "GRAALVM_HOME: $GRAALVM_HOME" + # if [[ "${{ matrix.version }}" == "dev" ]] && [[ "${{ matrix.java-version }}" == "dev" ]]; then + # [[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12 + # else + # [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23 + # fi + # echo "JAVA_HOME: $JAVA_HOME" + # java -version + # java -version 2>&1 | grep "GraalVM" || exit 34 + # native-image --version + # if [[ "${{ matrix.java-version }}" != "dev" ]]; then + # gu list + # fi + # if: ${{ runner.os != 'Windows' }} + # - name: Check Windows environment + # run: | + # echo "GRAALVM_HOME: $env:GRAALVM_HOME" + # echo "JAVA_HOME: $env:JAVA_HOME" + # java -version + # native-image --version + # gu.cmd remove native-image + # if: ${{ runner.os == 'Windows' }} - test-action-ee: - needs: test-action - name: EE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }} - if: github.event_name != 'pull_request' - runs-on: ${{ matrix.os }} - env: - # Skip builds that require a GDS token but have no access to one (e.g., secrets are unavailable in PR runs) - PASSES_GDS_TOKEN_CHECK: ${{ secrets.GDS_TOKEN != '' }} - strategy: - matrix: - version: ['latest'] - java-version: ['17'] - components: ['native-image'] - os: [macos-latest, windows-latest, ubuntu-latest] - include: - - version: '22.3.3' - java-version: '11' - components: 'native-image' - os: ubuntu-latest - - version: '22.3.3' - java-version: '17' - components: 'native-image' - os: ubuntu-latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run setup-graalvm action - uses: ./ - with: - version: ${{ matrix.version }} - gds-token: ${{ secrets.GDS_TOKEN }} - java-version: ${{ matrix.java-version }} - components: ${{ matrix.components }} - github-token: ${{ secrets.GITHUB_TOKEN }} - if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' }} - - name: Check environment - run: | - echo "GRAALVM_HOME: $GRAALVM_HOME" - [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12 - echo "JAVA_HOME: $JAVA_HOME" - java --version - java --version | grep -e "GraalVM EE" -e "Oracle GraalVM" || exit 23 - native-image --version - gu list - if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' && runner.os != 'Windows' }} - - name: Check Windows environment - run: | - echo "GRAALVM_HOME: $env:GRAALVM_HOME" - echo "JAVA_HOME: $env:JAVA_HOME" - java --version - native-image --version - gu.cmd remove native-image - if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' && runner.os == 'Windows' }} + # test-action-ee: + # needs: test-action + # name: EE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }} + # if: github.event_name != 'pull_request' + # runs-on: ${{ matrix.os }} + # env: + # # Skip builds that require a GDS token but have no access to one (e.g., secrets are unavailable in PR runs) + # PASSES_GDS_TOKEN_CHECK: ${{ secrets.GDS_TOKEN != '' }} + # strategy: + # matrix: + # version: ['latest'] + # java-version: ['17'] + # components: ['native-image'] + # os: [macos-latest, windows-latest, ubuntu-latest] + # include: + # - version: '22.3.3' + # java-version: '11' + # components: 'native-image' + # os: ubuntu-latest + # - version: '22.3.3' + # java-version: '17' + # components: 'native-image' + # os: ubuntu-latest + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # version: ${{ matrix.version }} + # gds-token: ${{ secrets.GDS_TOKEN }} + # java-version: ${{ matrix.java-version }} + # components: ${{ matrix.components }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' }} + # - name: Check environment + # run: | + # echo "GRAALVM_HOME: $GRAALVM_HOME" + # [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12 + # echo "JAVA_HOME: $JAVA_HOME" + # java --version + # java --version | grep -e "GraalVM EE" -e "Oracle GraalVM" || exit 23 + # native-image --version + # gu list + # if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' && runner.os != 'Windows' }} + # - name: Check Windows environment + # run: | + # echo "GRAALVM_HOME: $env:GRAALVM_HOME" + # echo "JAVA_HOME: $env:JAVA_HOME" + # java --version + # native-image --version + # gu.cmd remove native-image + # if: ${{ env.PASSES_GDS_TOKEN_CHECK == 'true' && runner.os == 'Windows' }} - test-action-mandrel: - needs: test-action - name: ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - version: ['mandrel-22.2.0.0-Final', '23.0.1.2-Final', 'mandrel-latest'] - java-version: ['17'] - distribution: ['mandrel'] - os: [windows-latest, ubuntu-latest] - include: - - version: 'mandrel-latest' - java-version: '17' - distribution: '' # test empty distribution for backward compatibility - os: ubuntu-latest - - version: '' # test with no version - java-version: '21' - distribution: 'mandrel' - os: ubuntu-latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run setup-graalvm action - uses: ./ - with: - version: ${{ matrix.version }} - distribution: ${{ matrix.distribution }} - java-version: ${{ matrix.java-version }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Check environment - run: | - echo "GRAALVM_HOME: $GRAALVM_HOME" - [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12 - echo "JAVA_HOME: $JAVA_HOME" - java --version - java --version | grep "Temurin" || exit 23 - native-image --version - if: ${{ runner.os != 'Windows' }} - - name: Check Windows environment - run: | - echo "GRAALVM_HOME: $env:GRAALVM_HOME" - echo "JAVA_HOME: $env:JAVA_HOME" - java --version - native-image --version - if: ${{ runner.os == 'Windows' }} + # test-action-mandrel: + # needs: test-action + # name: ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }} + # runs-on: ${{ matrix.os }} + # strategy: + # matrix: + # version: ['mandrel-22.2.0.0-Final', '23.0.1.2-Final', 'mandrel-latest'] + # java-version: ['17'] + # distribution: ['mandrel'] + # os: [windows-latest, ubuntu-latest] + # include: + # - version: 'mandrel-latest' + # java-version: '17' + # distribution: '' # test empty distribution for backward compatibility + # os: ubuntu-latest + # - version: '' # test with no version + # java-version: '21' + # distribution: 'mandrel' + # os: ubuntu-latest + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # version: ${{ matrix.version }} + # distribution: ${{ matrix.distribution }} + # java-version: ${{ matrix.java-version }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - name: Check environment + # run: | + # echo "GRAALVM_HOME: $GRAALVM_HOME" + # [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12 + # echo "JAVA_HOME: $JAVA_HOME" + # java --version + # java --version | grep "Temurin" || exit 23 + # native-image --version + # if: ${{ runner.os != 'Windows' }} + # - name: Check Windows environment + # run: | + # echo "GRAALVM_HOME: $env:GRAALVM_HOME" + # echo "JAVA_HOME: $env:JAVA_HOME" + # java --version + # native-image --version + # if: ${{ runner.os == 'Windows' }} - test-action-liberica: - needs: test-action - name: Liberica (${{ matrix.java-version }}, '${{ matrix.java-package }}', ${{ matrix.os }}) - runs-on: ${{ matrix.os }} - strategy: - matrix: - java-version: ['17', '21.0.2'] - java-package: ['', 'jdk', 'jdk+fx'] - os: [ubuntu-latest, macos-latest, windows-latest] - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run setup-graalvm action - uses: ./ - with: - distribution: liberica - java-version: ${{ matrix.java-version }} - java-package: ${{ matrix.java-package }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Check environment - run: | - echo "GRAALVM_HOME: $GRAALVM_HOME" - [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12 - echo "JAVA_HOME: $JAVA_HOME" - java --version - java --version | fgrep -qw ${{ matrix.java-version }} || exit 23 - native-image --version - native-image --version | fgrep -qw ${{ matrix.java-version }} || exit 24 - if: ${{ runner.os != 'Windows' }} - - name: Check Windows environment - shell: pwsh - run: | - echo "GRAALVM_HOME: $env:GRAALVM_HOME" - echo "JAVA_HOME: $env:JAVA_HOME" - java --version - if (!(java --version | findstr \<${{ matrix.java-version }}\>)) { - exit 23 - } - native-image --version - if (!(native-image --version | findstr \<${{ matrix.java-version }}\>)) { - exit 24 - } - if: ${{ runner.os == 'Windows' }} + # test-action-liberica: + # needs: test-action + # name: Liberica (${{ matrix.java-version }}, '${{ matrix.java-package }}', ${{ matrix.os }}) + # runs-on: ${{ matrix.os }} + # strategy: + # matrix: + # java-version: ['17', '21.0.2'] + # java-package: ['', 'jdk', 'jdk+fx'] + # os: [ubuntu-latest, macos-latest, windows-latest] + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # distribution: liberica + # java-version: ${{ matrix.java-version }} + # java-package: ${{ matrix.java-package }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - name: Check environment + # run: | + # echo "GRAALVM_HOME: $GRAALVM_HOME" + # [[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12 + # echo "JAVA_HOME: $JAVA_HOME" + # java --version + # java --version | fgrep -qw ${{ matrix.java-version }} || exit 23 + # native-image --version + # native-image --version | fgrep -qw ${{ matrix.java-version }} || exit 24 + # if: ${{ runner.os != 'Windows' }} + # - name: Check Windows environment + # shell: pwsh + # run: | + # echo "GRAALVM_HOME: $env:GRAALVM_HOME" + # echo "JAVA_HOME: $env:JAVA_HOME" + # java --version + # if (!(java --version | findstr \<${{ matrix.java-version }}\>)) { + # exit 23 + # } + # native-image --version + # if (!(native-image --version | findstr \<${{ matrix.java-version }}\>)) { + # exit 24 + # } + # if: ${{ runner.os == 'Windows' }} - test-action-native-image-windows: - name: native-image on windows-latest - runs-on: windows-latest - permissions: - contents: read - pull-requests: write # for `native-image-pr-reports` option - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run setup-graalvm action - uses: ./ - with: - java-version: 'dev' - distribution: 'graalvm-community' - native-image-job-reports: 'true' - native-image-pr-reports: 'true' - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Build HelloWorld executable with GraalVM Native Image on Windows - run: | - echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java - javac HelloWorld.java - native-image HelloWorld - ./helloworld + # test-action-native-image-windows: + # name: native-image on windows-latest + # runs-on: windows-latest + # permissions: + # contents: read + # pull-requests: write # for `native-image-pr-reports` option + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # java-version: 'dev' + # distribution: 'graalvm-community' + # native-image-job-reports: 'true' + # native-image-pr-reports: 'true' + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - name: Build HelloWorld executable with GraalVM Native Image on Windows + # run: | + # echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java + # javac HelloWorld.java + # native-image HelloWorld + # ./helloworld - test-action-native-image-windows-msvc: - name: native-image on windows-2022 - runs-on: windows-2022 - permissions: - contents: read - pull-requests: write # for `native-image-pr-reports` option - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run setup-graalvm action - uses: ./ - with: - java-version: '17' - distribution: 'graalvm' - native-image-job-reports: 'true' - native-image-pr-reports: 'true' - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Build HelloWorld executable with GraalVM Native Image on Windows - run: | - echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java - javac HelloWorld.java - native-image HelloWorld - ./helloworld + # test-action-native-image-windows-msvc: + # name: native-image on windows-2022 + # runs-on: windows-2022 + # permissions: + # contents: read + # pull-requests: write # for `native-image-pr-reports` option + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # java-version: '17' + # distribution: 'graalvm' + # native-image-job-reports: 'true' + # native-image-pr-reports: 'true' + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - name: Build HelloWorld executable with GraalVM Native Image on Windows + # run: | + # echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java + # javac HelloWorld.java + # native-image HelloWorld + # ./helloworld - test-action-native-image-musl: + test-action-native-image-musl-ce: name: native-image-musl on ubuntu-latest runs-on: ubuntu-latest permissions: @@ -394,9 +394,8 @@ jobs: javac HelloWorld.java native-image --static --libc=musl HelloWorld ./helloworld - - test-action-extensive: - name: extensive tests on ubuntu-latest + test-action-native-image-musl: + name: native-image-musl on ubuntu-latest runs-on: ubuntu-latest permissions: contents: read @@ -406,84 +405,108 @@ jobs: - name: Run setup-graalvm action uses: ./ with: - java-version: '17.0.8' + java-version: '25' distribution: 'graalvm' - components: 'espresso,llvm-toolchain,native-image,nodejs,python,ruby,wasm' - set-java-home: 'false' + native-image-musl: 'true' native-image-job-reports: 'true' native-image-pr-reports: 'true' github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Check environment - run: | - echo "GRAALVM_HOME: $GRAALVM_HOME" - echo "JAVA_HOME: $JAVA_HOME" - [[ "$GRAALVM_HOME" != "$JAVA_HOME" ]] || exit 12 - [[ $(which java) == *"graalvm"* ]] || exit 23 - java --version - java -truffle --version - gu --version - gu list - [[ $(which lli) == *"graalvm"* ]] || exit 34 - lli --version - native-image --version - [[ $(which node) == *"graalvm"* ]] || exit 45 - node --version - graalpy --version - truffleruby --version - wasm --version - - name: Build HelloWorld.java with GraalVM Native Image + - name: Build static HelloWorld executable with GraalVM Native Image and musl run: | echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java javac HelloWorld.java - native-image -g HelloWorld + native-image --static --libc=musl HelloWorld ./helloworld - # - name: Build Ruby-FFI with TruffleRuby - # run: | - # [[ $(which bundle) == *"graalvm"* ]] || exit 57 - # git clone --depth 1 https://github.com/ffi/ffi.git - # pushd ffi > /dev/null - # # https://github.com/ffi/ffi/blob/447845cb3030194c79700c86fb388a12e6f81386/.github/workflows/ci.yml#L58-L62 - # bundle install - # bundle exec rake libffi - # bundle exec rake compile - # bundle exec rake test - # popd > /dev/null - - name: Remove components - run: gu remove espresso llvm-toolchain nodejs python ruby wasm - test-action-sbom: - name: test 'native-image-enable-sbom' option - runs-on: ${{ matrix.os }} - permissions: - contents: write - strategy: - matrix: - java-version: ['25', 'latest-ea'] - distribution: ['graalvm'] - os: [macos-latest, windows-latest, ubuntu-latest, ubuntu-22.04-arm] - components: [''] - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run setup-graalvm action - uses: ./ - with: - java-version: ${{ matrix.java-version }} - distribution: ${{ matrix.distribution }} - github-token: ${{ secrets.GITHUB_TOKEN }} - components: ${{ matrix.components }} - native-image-enable-sbom: 'true' - cache: 'maven' - - name: Build Maven project and verify that SBOM was generated and its contents - run: | - cd __tests__/sbom/main-test-app - mvn --no-transfer-progress -Pnative package - bash verify-sbom.sh - shell: bash - if: ${{ runner.os != 'Windows' }} - - name: Build Maven project and verify that SBOM was generated and its contents (Windows) - run: | - cd __tests__\sbom\main-test-app - mvn --no-transfer-progress -Pnative package - cmd /c verify-sbom.cmd - shell: cmd - if: ${{ runner.os == 'Windows' }} + # test-action-extensive: + # name: extensive tests on ubuntu-latest + # runs-on: ubuntu-latest + # permissions: + # contents: read + # pull-requests: write # for `native-image-pr-reports` option + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # java-version: '17.0.8' + # distribution: 'graalvm' + # components: 'espresso,llvm-toolchain,native-image,nodejs,python,ruby,wasm' + # set-java-home: 'false' + # native-image-job-reports: 'true' + # native-image-pr-reports: 'true' + # github-token: ${{ secrets.GITHUB_TOKEN }} + # - name: Check environment + # run: | + # echo "GRAALVM_HOME: $GRAALVM_HOME" + # echo "JAVA_HOME: $JAVA_HOME" + # [[ "$GRAALVM_HOME" != "$JAVA_HOME" ]] || exit 12 + # [[ $(which java) == *"graalvm"* ]] || exit 23 + # java --version + # java -truffle --version + # gu --version + # gu list + # [[ $(which lli) == *"graalvm"* ]] || exit 34 + # lli --version + # native-image --version + # [[ $(which node) == *"graalvm"* ]] || exit 45 + # node --version + # graalpy --version + # truffleruby --version + # wasm --version + # - name: Build HelloWorld.java with GraalVM Native Image + # run: | + # echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java + # javac HelloWorld.java + # native-image -g HelloWorld + # ./helloworld + # # - name: Build Ruby-FFI with TruffleRuby + # # run: | + # # [[ $(which bundle) == *"graalvm"* ]] || exit 57 + # # git clone --depth 1 https://github.com/ffi/ffi.git + # # pushd ffi > /dev/null + # # # https://github.com/ffi/ffi/blob/447845cb3030194c79700c86fb388a12e6f81386/.github/workflows/ci.yml#L58-L62 + # # bundle install + # # bundle exec rake libffi + # # bundle exec rake compile + # # bundle exec rake test + # # popd > /dev/null + # - name: Remove components + # run: gu remove espresso llvm-toolchain nodejs python ruby wasm + + # test-action-sbom: + # name: test 'native-image-enable-sbom' option + # runs-on: ${{ matrix.os }} + # permissions: + # contents: write + # strategy: + # matrix: + # java-version: ['25', 'latest-ea'] + # distribution: ['graalvm'] + # os: [macos-latest, windows-latest, ubuntu-latest, ubuntu-22.04-arm] + # components: [''] + # steps: + # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + # - name: Run setup-graalvm action + # uses: ./ + # with: + # java-version: ${{ matrix.java-version }} + # distribution: ${{ matrix.distribution }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # components: ${{ matrix.components }} + # native-image-enable-sbom: 'true' + # cache: 'maven' + # - name: Build Maven project and verify that SBOM was generated and its contents + # run: | + # cd __tests__/sbom/main-test-app + # mvn --no-transfer-progress -Pnative package + # bash verify-sbom.sh + # shell: bash + # if: ${{ runner.os != 'Windows' }} + # - name: Build Maven project and verify that SBOM was generated and its contents (Windows) + # run: | + # cd __tests__\sbom\main-test-app + # mvn --no-transfer-progress -Pnative package + # cmd /c verify-sbom.cmd + # shell: cmd + # if: ${{ runner.os == 'Windows' }} diff --git a/dist/main.js b/dist/main.js index 8f4ec4d..8dcd9bb 100644 --- a/dist/main.js +++ b/dist/main.js @@ -88826,8 +88826,8 @@ function checkForUpdates(graalVMVersion, javaVersion) { // TODO: add support for JDK-specific update checks (e.g., 17.0.X) } -const MUSL_NAME = 'x86_64-linux-musl-native'; -const MUSL_VERSION = '10.2.1'; +const MUSL_VERSION = '1.2.5.1'; +const MUSL_NAME = 'musl-toolchain'; async function setUpNativeImageMusl() { if (!IS_LINUX) { coreExports.warning('musl is only supported on Linux'); @@ -88839,23 +88839,9 @@ async function setUpNativeImageMusl() { } else { coreExports.startGroup(`Setting up musl for GraalVM Native Image...`); - const muslDownloadPath = await toolCacheExports.downloadTool(`https://github.com/graalvm/setup-graalvm/releases/download/x86_64-linux-musl-${MUSL_VERSION}/${MUSL_NAME}.tgz`); + const muslDownloadPath = await toolCacheExports.downloadTool(`https://github.com/graalvm/setup-graalvm/releases/download/v1.3.7/musl-toolchain-amd64-1.2.5-gcc10.3.0-zlib1.2.13.tar.gz`); const muslExtractPath = await toolCacheExports.extractTar(muslDownloadPath); const muslPath = join(muslExtractPath, MUSL_NAME); - const zlibCommit = 'ec3df00224d4b396e2ac6586ab5d25f673caa4c2'; - const zlibDownloadPath = await toolCacheExports.downloadTool(`https://github.com/madler/zlib/archive/${zlibCommit}.tar.gz`); - const zlibExtractPath = await toolCacheExports.extractTar(zlibDownloadPath); - const zlibPath = join(zlibExtractPath, `zlib-${zlibCommit}`); - const zlibBuildOptions = { - cwd: zlibPath, - env: { - ...process.env, - CC: join(muslPath, 'bin', 'gcc') - } - }; - await exec('./configure', [`--prefix=${muslPath}`, '--static'], zlibBuildOptions); - await exec('make', [], zlibBuildOptions); - await exec('make', ['install'], { cwd: zlibPath }); coreExports.info(`Adding ${MUSL_NAME} ${MUSL_VERSION} to tool-cache ...`); toolPath = await toolCacheExports.cacheDir(muslPath, MUSL_NAME, MUSL_VERSION); coreExports.endGroup(); diff --git a/src/features/musl.ts b/src/features/musl.ts index a121874..e61780b 100644 --- a/src/features/musl.ts +++ b/src/features/musl.ts @@ -1,11 +1,10 @@ import * as c from '../constants.js' import * as core from '@actions/core' import * as tc from '@actions/tool-cache' -import { exec } from '../utils.js' import { join } from 'path' -const MUSL_NAME = 'x86_64-linux-musl-native' -const MUSL_VERSION = '10.2.1' +const MUSL_VERSION = '1.2.5.1' +const MUSL_NAME = 'musl-toolchain' export async function setUpNativeImageMusl(): Promise { if (!c.IS_LINUX) { @@ -18,26 +17,10 @@ export async function setUpNativeImageMusl(): Promise { } else { core.startGroup(`Setting up musl for GraalVM Native Image...`) const muslDownloadPath = await tc.downloadTool( - `https://github.com/graalvm/setup-graalvm/releases/download/x86_64-linux-musl-${MUSL_VERSION}/${MUSL_NAME}.tgz` + `https://github.com/graalvm/setup-graalvm/releases/download/v1.3.7/musl-toolchain-amd64-1.2.5-gcc10.3.0-zlib1.2.13.tar.gz` ) const muslExtractPath = await tc.extractTar(muslDownloadPath) const muslPath = join(muslExtractPath, MUSL_NAME) - - const zlibCommit = 'ec3df00224d4b396e2ac6586ab5d25f673caa4c2' - const zlibDownloadPath = await tc.downloadTool(`https://github.com/madler/zlib/archive/${zlibCommit}.tar.gz`) - const zlibExtractPath = await tc.extractTar(zlibDownloadPath) - const zlibPath = join(zlibExtractPath, `zlib-${zlibCommit}`) - const zlibBuildOptions = { - cwd: zlibPath, - env: { - ...process.env, - CC: join(muslPath, 'bin', 'gcc') - } - } - await exec('./configure', [`--prefix=${muslPath}`, '--static'], zlibBuildOptions) - await exec('make', [], zlibBuildOptions) - await exec('make', ['install'], { cwd: zlibPath }) - core.info(`Adding ${MUSL_NAME} ${MUSL_VERSION} to tool-cache ...`) toolPath = await tc.cacheDir(muslPath, MUSL_NAME, MUSL_VERSION) core.endGroup()