build-alpine / alpine (armv7) (push) Waiting to run
build-alpine / alpine (loongarch64) (push) Waiting to run
build-alpine / alpine (x86) (push) Waiting to run
cross-build-ubuntu / cross armhf (push) Waiting to run
cross-build-ubuntu / cross ppc64el (push) Waiting to run
cross-build-ubuntu / cross riscv64 (push) Waiting to run
cross-build-ubuntu / cross s390x (push) Waiting to run
arpack-ng / ubuntu_latest_cmake (push) Waiting to run
arpack-ng / ubuntu_latest_cmake_install (push) Waiting to run
arpack-ng / ubuntu_latest_autotools (push) Waiting to run
arpack-ng / ubuntu_latest_autotools_install (push) Waiting to run
arpack-ng / ubuntu_latest_cmake_python (push) Waiting to run
arpack-ng / ubuntu_latest_autotools_ilp64 (push) Waiting to run
arpack-ng / macos_latest_cmake (push) Waiting to run
arpack-ng / macos_latest_cmake_python (push) Waiting to run
arpack-ng / macos_latest_autotools (push) Waiting to run
arpack-ng / MinGW-w64 CLANG64 INTERFACE64=OFF/MPI=OFF (push) Waiting to run
arpack-ng / MinGW-w64 UCRT64 INTERFACE64=OFF/MPI=OFF (push) Waiting to run
arpack-ng / MinGW-w64 CLANG64 INTERFACE64=OFF/MPI=ON (push) Waiting to run
arpack-ng / MinGW-w64 UCRT64 INTERFACE64=OFF/MPI=ON (push) Waiting to run
arpack-ng / MinGW-w64 CLANG64 INTERFACE64=ON/MPI=OFF (push) Waiting to run
arpack-ng / MinGW-w64 UCRT64 INTERFACE64=ON/MPI=OFF (push) Waiting to run
The Alpine repository for the PowerPC target got more and more unreliable recently. Additionally, the PowerPC target is covered with the cross-build rules on Ubuntu now. Drop some (expensive) targets to reduce the overlap in coverage with the workflow that cross-builds on Ubuntu. Add LoongArch64 target which is not (yet?) available for Ubuntu. Keep targets that can be build natively (which should be reasonably fast). Use an Ubuntu on ARM runner for the armv7 target. Rename workflow because out of the three remaining targets only one is actually emulated - the others can execute natively.
129 lines
4.0 KiB
YAML
129 lines
4.0 KiB
YAML
name: build-alpine
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
pull_request:
|
|
|
|
concurrency: ci-arch-emu-${{ github.ref }}
|
|
|
|
jobs:
|
|
|
|
alpine:
|
|
# Run armv7 on aarch64 runners
|
|
runs-on: ${{ matrix.arch == 'armv7' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
|
|
|
|
defaults:
|
|
run:
|
|
# Use emulated shell as default
|
|
shell: alpine.sh {0}
|
|
|
|
strategy:
|
|
# Allow other runners in the matrix to continue if some fail
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
# For available CPU architectures, see:
|
|
# https://github.com/marketplace/actions/setup-alpine-linux-environment
|
|
arch: [x86, armv7, loongarch64]
|
|
|
|
name: alpine (${{ matrix.arch }})
|
|
|
|
steps:
|
|
- name: get CPU information (host)
|
|
shell: bash
|
|
run: lscpu
|
|
|
|
- name: checkout repository
|
|
uses: actions/checkout@v7
|
|
|
|
- name: install dependencies
|
|
uses: jirutka/setup-alpine@v1
|
|
with:
|
|
arch: ${{ matrix.arch }}
|
|
apk-tools-url: ${{ matrix.arch == 'armv7'
|
|
&& 'https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.7/aarch64/apk.static#!sha256!27a975638ddc95a411c9f17c63383e335da9edf6bb7de2281d950c291a11f878'
|
|
|| 'https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.7/x86_64/apk.static#!sha256!bdd044e0fd6cc388c5e571e1093efa5f35f7767cc5aa338b0a2576a429009a62' }}
|
|
packages: >
|
|
bash
|
|
build-base
|
|
ccache
|
|
cmake
|
|
gfortran
|
|
eigen-dev
|
|
lapack-dev
|
|
lscpu
|
|
|
|
- name: disable QEMU emulation
|
|
if: matrix.arch == 'armv7'
|
|
shell: bash
|
|
run: sudo update-binfmts --disable qemu-arm
|
|
|
|
- name: get CPU information (emulated)
|
|
run: lscpu
|
|
|
|
- name: prepare ccache
|
|
# create key with human readable timestamp
|
|
# used in action/cache/restore and action/cache/save steps
|
|
id: ccache-prepare
|
|
run: |
|
|
echo "key=ccache:alpine:${{ matrix.arch }}:${{ github.ref }}:$(date +"%Y-%m-%d_%H-%M-%S"):${{ github.sha }}" >> $GITHUB_OUTPUT
|
|
|
|
- name: restore ccache
|
|
# setup the GitHub cache used to maintain the ccache from one job to the next
|
|
uses: actions/cache/restore@v6
|
|
with:
|
|
# location of the ccache of the chroot in the root file system
|
|
path: /home/runner/rootfs/alpine-latest-${{ matrix.arch }}/home/runner/.ccache
|
|
key: ${{ steps.ccache-prepare.outputs.key }}
|
|
# Prefer caches from the same branch. Fall back to caches from the default branch.
|
|
restore-keys: |
|
|
ccache:alpine:${{ matrix.arch }}:${{ github.ref }}
|
|
ccache:alpine:${{ matrix.arch }}
|
|
|
|
- name: configure ccache
|
|
run: |
|
|
test -d ~/.ccache || mkdir ~/.ccache
|
|
echo "max_size = 20M" >> ~/.ccache/ccache.conf
|
|
echo "compression = true" >> ~/.ccache/ccache.conf
|
|
ccache -s
|
|
which ccache
|
|
|
|
- name: configure
|
|
run: |
|
|
echo "gcc --version"
|
|
gcc --version
|
|
echo "gcc -dumpmachine"
|
|
gcc -dumpmachine
|
|
echo " "
|
|
mkdir -p ${GITHUB_WORKSPACE}/build && cd ${GITHUB_WORKSPACE}/build
|
|
cmake \
|
|
-DEXAMPLES=ON \
|
|
-DMPI=OFF \
|
|
-DICB=ON \
|
|
-DEIGEN=ON \
|
|
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
|
|
..
|
|
|
|
- name: build
|
|
run: |
|
|
cd ${GITHUB_WORKSPACE}/build
|
|
cmake --build .
|
|
|
|
- name: ccache status
|
|
continue-on-error: true
|
|
run: ccache -s
|
|
|
|
- name: save ccache
|
|
# Save the cache after we are done (successfully) building
|
|
# This helps to retain the ccache even if the subsequent steps are failing.
|
|
uses: actions/cache/save@v6
|
|
with:
|
|
path: /home/runner/rootfs/alpine-latest-${{ matrix.arch }}/home/runner/.ccache
|
|
key: ${{ steps.ccache-prepare.outputs.key }}
|
|
|
|
- name: test
|
|
run: |
|
|
cd ${GITHUB_WORKSPACE}/build
|
|
CTEST_OUTPUT_ON_FAILURE=1 ctest .
|