Skip to content

gh-actions: less qemu #4841

gh-actions: less qemu

gh-actions: less qemu #4841

Workflow file for this run

name: CI
on:
push:
branches-ignore:
- 'ci/**'
- '!ci/gha**'
- 'dependabot/**'
pull_request:
branches:
- 'master'
concurrency:
group: build-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
gcc:
strategy:
fail-fast: false
matrix:
include:
- version: 11
distro: ubuntu-22.04-arm
plain: true
- version: 15
distro: ubuntu-24.04-arm
- version: 15
distro: ubuntu-24.04-arm
plain: true
- version: 15 # plain armhf
distro: ubuntu-24.04-arm
gcc: arm-linux-gnueabihf
plain: true
- version: 15 # armhf native
distro: ubuntu-24.04-arm
gcc: arm-linux-gnueabihf:armhf
- version: 15 # armv7
distro: ubuntu-24.04-arm
gcc: arm-linux-gnueabihf
arch_flags: -march=armv7-a+simd+neon-fp16
plain: true
- version: 15 # armv8 32-bit
distro: ubuntu-24.04-arm
gcc: arm-linux-gnueabihf
arch_flags: -mcpu=cortex-a32 -mfpu=crypto-neon-fp-armv8
plain: true
runs-on: ${{ matrix.distro }}
env:
CFLAGS: ${{ matrix.arch_flags }} ${{ case(
matrix.plain == true, '-Wall -Wextra -Werror',
'-march=native -Wall -Wextra -Werror') }}
CXXFLAGS: ${{ matrix.arch_flags }} ${{ case(
matrix.plain == true, '-Wall -Wextra -Werror',
'-march=native -Wall -Wextra -Werror') }}
CCBIN: ${{
case(
matrix.gcc == '', format('gcc-{0}', matrix.version),
format('{0}-gcc-{1}', matrix.gcc, matrix.version)
) }}
CXXBIN: ${{
case(
matrix.gcc == '', format('g++-{0}', matrix.version),
format('{0}-g++-{1}', matrix.gcc, matrix.version)
) }}
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- id: cpu
name: CPU Information
run: |
cat /proc/cpuinfo
- name: enable armhf
if: ${{ contains(matrix.gcc,'arm-linux-gnueabihf') }}
run: sudo dpkg --add-architecture armhf && sudo apt-get update && sudo apt-get install -y libstdc++6:armhf
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:stephanosio/ccache
sudo add-apt-repository ppa:daawesomep/toolchain-backports-noble
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
sudo add-apt-repository ppa:cppiber/build-depends
sudo apt-get -y install --no-install-recommends pipx ninja-build \
ccache gcc-${{ case(matrix.gcc == '', matrix.version, format('{0}-{1}', matrix.version, matrix.gcc)) }} \
g++-${{ case(matrix.gcc == '', matrix.version, format('{0}-{1}', matrix.version, matrix.gcc)) }}
sudo apt-get -y purge g++ gcc
pipx install meson==0.64
- if: ${{ matrix.version == '15' }}
run: sudo apt-get satisfy -y 'binutils (>= 2.45)'
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.distro }}-${{ matrix.arch_flags }}
verbose: 2
- name: add ccache to the build path
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
sudo ln -s /usr/bin/${CCBIN} /usr/bin/gcc
sudo ln -s /usr/bin/${CXXBIN} /usr/bin/g++
- name: Configure
run: meson setup build || (cat build/meson-logs/meson-log.txt ; false)
- name: Build
run: meson compile -C build --verbose
- name: Test
run: |
# shellcheck disable=SC2046
meson test -C build --print-errorlogs
gcc-qemu:
strategy:
fail-fast: false
matrix:
include:
- version: 14
cross: armel
arch_gnu_abi: eabi
arch_deb: armel
arch_gnu: arm
distro: ubuntu-24.04
- version: 15
cross: riscv64
arch_gnu: riscv64
arch_deb: riscv64
distro: ubuntu-24.04
- extra: -O3
version: 15
cross: riscv64
arch_gnu: riscv64
arch_deb: riscv64
distro: ubuntu-24.04
- version: 15
cross: s390x
arch_gnu: s390x
arch_deb: s390x
distro: ubuntu-24.04
- version: 14
cross: power9
arch_gnu: powerpc64le
arch_deb: ppc64el
distro: ubuntu-24.04
- version: 14
cross: loongarch64
arch_gnu: loongarch64
arch_deb: loong64
distro: ubuntu-24.04
# - version: 14
# cross: mips64el
# arch_gnu: mips64el
# arch_gnu_abi: abi64
# arch_deb: mips64el
# distro: ubuntu-24.04
runs-on: ${{ matrix.distro }}
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: CPU Information
run: cat /proc/cpuinfo
- if: ${{ matrix.distro == 'ubuntu-24.04' }}
run:
sudo add-apt-repository ppa:daawesomep/toolchain-backports-noble
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:stephanosio/ccache
sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
sudo apt-get -y --no-install-recommends install ccache ninja-build \
gcc-${{ matrix.version }}-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} \
g++-${{ matrix.version }}-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} binfmt-support \
qemu-user-static pipx libc6-${{ matrix.arch_deb }}-cross libstdc++-${{ matrix.version }}-dev-${{ matrix.arch_deb }}-cross
pipx install meson==0.55.1
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ github.job }}-${{ matrix.version}}${{ matrix.extra }}-${{ matrix.distro }}-${{ matrix.cross }}
verbose: 2
- name: add ccache to the build path
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
- name: Configure
run: meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-gcc-${{ matrix.version }}${{ matrix.extra}}-ccache.cross build
- name: Build
run: ninja -C build -v
- name: Test
run: |
# shellcheck disable=SC2046
meson test -C build --print-errorlogs
clang-qemu:
strategy:
fail-fast: false
matrix:
include:
# - version: 18
# cross: mips64el
# arch_deb: mips64el
# arch_gnu: mips64el
# arch_gnu_abi: abi64
# distro: ubuntu-24.04
- version: 21
cross: armel
arch_gnu_abi: eabi
arch_deb: armel
arch_gnu: arm
distro: ubuntu-24.04
- version: 21
cross: riscv64
arch_gnu: riscv64
arch_deb: riscv64
distro: ubuntu-24.04
- version: 20
cross: s390x
arch_gnu: s390x
arch_deb: s390x
distro: ubuntu-24.04
- version: 21
cross: ppc64el
arch_deb: ppc64el
arch_gnu: powerpc64le
distro: ubuntu-24.04
- version: 21
cross: loongarch64
arch_deb: loong64
arch_gnu: loongarch64
distro: ubuntu-24.04
runs-on: ${{ matrix.distro }}
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: CPU Information
run: cat /proc/cpuinfo
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:stephanosio/ccache
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh ${{ matrix.version }}
sudo apt-get -y --no-install-recommends install ccache ninja-build \
binfmt-support clang-${{ matrix.version }} llvm-${{ matrix.version }} lld-${{ matrix.version }} \
qemu-user-static pipx libc6-${{ matrix.arch_deb }}-cross libstdc++-14-dev-${{ matrix.arch_deb }}-cross \
binutils-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }}
pipx install meson
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.cross }}
verbose: 2
- name: add ccache to the build path
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
- name: Configure
run: |
meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-clang-${{ matrix.version }}-ccache.cross build \
|| (cat build/meson-logs/meson-log.txt ; false)
- name: Build
run: ninja -C build -v
- name: Test
run: |
# shellcheck disable=SC2046
meson test -C build --print-errorlogs
clang:
strategy:
fail-fast: false
matrix:
include:
- version: "21"
distro: ubuntu-24.04-arm
arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword
- version: "21"
distro: ubuntu-24.04-arm
arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -Wno-nan-infinity-disabled
- version: "21"
distro: ubuntu-24.04-arm
arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -O2
- version: "21" # armv7
distro: ubuntu-24.04-arm
arch_flags: --target=arm-linux-gnueabihf -march=armv7-a -mfpu=neon -isystem=/usr/arm-linux-gnueabihf/include -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword
pkg: libstdc++-16-dev-armhf-cross
plain: true
runs-on: ${{ matrix.distro }}
env:
CFLAGS: ${{ matrix.arch_flags }} ${{ case(
matrix.plain == true, '-Wall -Weverything -Werror',
'-march=native -Wall -Weverything -Werror') }} -fno-lax-vector-conversions
CXXFLAGS: ${{ matrix.arch_flags }} ${{ case(
matrix.plain == true, '-Wall -Weverything -Werror',
'-march=native -Wall -Weverything -Werror') }} -fno-lax-vector-conversions
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- id: cpu
name: CPU Information
run: |
cat /proc/cpuinfo
- name: enable armhf
if: ${{ matrix.pkg == 'libstdc++-16-dev-armhf-cross' }}
run: sudo dpkg --add-architecture armhf && sudo apt-get update && sudo apt-get install -y libstdc++6:armhf
- name: Install PPAs for Ubuntu 22.04
if: ${{ matrix.distro == 'ubuntu-22.04' }}
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo add-apt-repository ppa:savoury1/build-tools
sudo add-apt-repository ppa:savoury1/display
sudo add-apt-repository ppa:savoury1/llvm-defaults-16
- name: Install newer clang
if: ${{ matrix.version == '21' || matrix.version == '22' }}
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh ${{ matrix.version }}
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts
sudo add-apt-repository ppa:stephanosio/ccache
sudo add-apt-repository ppa:canonical-x/x-staging
sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
sudo apt-get -y --no-install-recommends install ninja-build pipx \
clang-${{ matrix.version }} ccache ${{ matrix.pkg }}
pipx install meson==0.55.1
sudo rm /usr/bin/gcc /usr/bin/g++ /usr/bin/cc /usr/bin/c++
sudo ln -s "$(command -v clang-${{ matrix.version }})" /usr/bin/cc
sudo ln -s "$(command -v clang-${{ matrix.version }})" /usr/bin/c++
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.distro }}-${{ matrix.arch_flags }}${{ matrix.plain }}
verbose: 2
- name: add ccache to the build path
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
- name: Configure
run: meson setup build || (cat build/meson-logs/meson-log.txt ; false)
- name: Build
run: meson compile -C build --verbose
- name: Test
run: |
# shellcheck disable=SC2046
meson test -C build --print-errorlogs