From 881018e9d2f439a3d96e6c7ccf7646f225351c83 Mon Sep 17 00:00:00 2001 From: "Alejandro R. Mosteo" Date: Wed, 13 Mar 2024 23:18:31 +0100 Subject: [PATCH] Remove dependency on GNAT CE when building branch --- .github/workflows/selftest.yml | 1 + action.yml | 68 +++++++++++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/.github/workflows/selftest.yml b/.github/workflows/selftest.yml index 56fcc946..9bd1e0de 100644 --- a/.github/workflows/selftest.yml +++ b/.github/workflows/selftest.yml @@ -9,6 +9,7 @@ on: pull_request jobs: setup-alire: strategy: + fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] target: [stable, nightly, source] diff --git a/action.yml b/action.yml index 05b87012..f1640727 100644 --- a/action.yml +++ b/action.yml @@ -77,13 +77,63 @@ runs: id: find-gnat run: gnat --version && echo "available=true" >> $GITHUB_OUTPUT || echo "available=false" >> $GITHUB_OUTPUT - # Setup a GNAT if necessary to build from branch. - # We cannot use alr-install or setup-alire, as that creates infinite recursion. - - name: Install GNAT + # Setup a GNAT if necessary to build from branch. We cannot use alr-install + # as that creates infinite recursion. Rather than relying on the old action + # that sets up CE editions, we simply fetch a stable alr capable of running + # `alr install`, and we use that to install the latest FSF GNAT. + + # BEGIN TOOLCHAIN INSTALLATION + + - name: Identify need for GNAT if: inputs.branch != '' && steps.find-gnat.outputs.available != 'true' && steps.cache-alr.outputs.cache-hit != 'true' - uses: ada-actions/toolchain@ce2020 + id: need-GNAT + shell: bash + run: echo "need=true" >> $GITHUB_OUTPUT + + - name: Install GNAT (I) Linux + if: steps.need-GNAT.outputs.need == 'true' && runner.os == 'Linux' + uses: engineerd/configurator@v0.0.10 + with: + name: alr + url: https://github.com/alire-project/alire/releases/download/v2.0.0/alr-2.0.0-bin-x86_64-linux.zip + pathInArchive: bin/alr + - name: Install GNAT (I) macOS + if: steps.need-GNAT.outputs.need == 'true' && runner.os == 'macOS' + uses: engineerd/configurator@v0.0.10 with: - distrib: community + name: alr + url: https://github.com/alire-project/alire/releases/download/v2.0.0/alr-2.0.0-bin-x86_64-macos.zip + pathInArchive: bin/alr + - name: Install GNAT (I) Windows + if: steps.need-GNAT.outputs.need == 'true' && runner.os == 'Windows' + uses: engineerd/configurator@v0.0.10 + with: + name: alr.exe + url: https://github.com/alire-project/alire/releases/download/v2.0.0/alr-2.0.0-bin-x86_64-windows.zip + pathInArchive: bin/alr.exe + + - name: Install GNAT (II) + if: steps.need-GNAT.outputs.need == 'true' + shell: bash + run: | + alr install gnat_native gprbuild --prefix=$PWD/setup_alire_prefix + echo REMOVAL TARGET: $(which alr) + rm -f $(which alr)* && echo REMOVED stable alr used for toolchain install + + - name: Install GNAT (III) - Add to path (Windows) + if: steps.need-GNAT.outputs.need == 'true' && runner.os == 'Windows' + shell: pwsh + run: | + $Target = Resolve-Path .\setup_alire_prefix\bin + Add-Content $env:GITHUB_PATH $Target + + - name: Install GNAT (III) - Add to path (!Windows) + if: steps.need-GNAT.outputs.need == 'true' && runner.os != 'Windows' + shell: bash + run: | + readlink -f "$PWD/setup_alire_prefix/bin" >> $GITHUB_PATH + + # END TOOLCHAIN INSTALLATION # To run the old setup action which is javascript - name: Setup Node @@ -98,6 +148,14 @@ runs: shell: bash # on Windows, backlashes mess things for bash, and powershell chokes on toJSON output + # Remove our installed toolchain as not to interfere with other + # actions/workflows down the line + - name: Remove GNAT (IV) + if: steps.need-GNAT.outputs.need == 'true' + shell: bash + run: | + rm -rf setup_alire_prefix && echo REMOVED toolchain used to build alr + # Display result for the record - shell: bash run: |