Skip to content

Commit

Permalink
Remove dependency on GNAT CE when building branch (#61)
Browse files Browse the repository at this point in the history
  • Loading branch information
mosteo authored Mar 13, 2024
1 parent 2c67b8f commit dbf00a5
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 5 deletions.
1 change: 1 addition & 0 deletions .github/workflows/selftest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
68 changes: 63 additions & 5 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected]
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/[email protected]
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/[email protected]
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
Expand All @@ -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: |
Expand Down

0 comments on commit dbf00a5

Please sign in to comment.