Fix installation of binary crates containing softlinks #967
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI self+toolchain | |
# Build Alire with `alr build` and using a toolchain installed from Alire | |
# The `alr` being tested is the one which is being submitted in the PR | |
on: | |
pull_request: | |
paths-ignore: | |
- 'doc/**' | |
- '**.md' | |
- '**.rst' | |
- '**.txt' | |
jobs: | |
build: | |
name: ${{ matrix.os }} gcc^${{ matrix.gcc_version }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-latest | |
- ubuntu-latest | |
- windows-latest | |
gcc_version: | |
- 10 | |
- 11 | |
- 12 | |
- 13 | |
steps: | |
- name: Check out | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
# Use a stock alr to make the latest toolchain available | |
- name: Install FSF toolchain | |
uses: alire-project/alr-install@v1 | |
with: | |
crates: gnat_native^${{matrix.gcc_version}} gprbuild | |
# Superstrange occurrence in which a softlink is missing at the installed | |
# destination. The link is there when using `alr get`, and also when using | |
# `alr install` in my machines. Being a softlink the one missing, it could | |
# have something with the order in which files are enumerated and GNATCOLL | |
# implementation. Will have to dig further but this should be a temporary | |
# fix. | |
- name: GNAT 10 fix | |
if: runner.os == 'Linux' && matrix.gcc_version == 10 | |
run: | | |
PREFIX=/home/runner/work/alire/alire/alire_prefix/libexec/gcc/x86_64-pc-linux-gnu/10.3.0 | |
ln -sf \ | |
$PREFIX/liblto_plugin.so.0.0.0 \ | |
$PREFIX/liblto_plugin.so | |
- name: Build alr with default toolchain | |
shell: bash | |
run: dev/build.sh | |
# We can start using the alr we just built | |
- name: Update dependencies | |
run: ./bin/alr -d -n update | |
- name: Show dependencies/pins | |
run: ./bin/alr -d -n -q with --solve || ./bin/alr -n -v -d with --solve | |
- name: Show build environment, with debug fallback | |
run: ./bin/alr -d -n printenv || ./bin/alr -n -v -d printenv | |
- shell: bash | |
run: mv ./bin ./bin-old || { sleep 5s && mv ./bin ./bin-old; } | |
# Windows doesn't allow to replace a running exe so the next command | |
# fails otherwise. Also, this mv fails sometimes so we try twice JIC. | |
- name: SELF-BUILD | |
run: ./bin-old/alr -d -n build | |
- name: Show built version | |
run: ./bin/alr -d -n version | |
# Run the testsuite with the just build alr. The testsuite picks the proper | |
# alr in the ./bin/alr location. | |
- name: Install Python 3.x # required by testsuite | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.x' | |
- name: Install e3 | |
run: pip install --upgrade -r testsuite/requirements.txt | |
- name: Run testsuite | |
run: cd testsuite; ./run.py -E | |
shell: bash |