ci: do the compiler-detection magic in the test script
so we have all PPA definitions at one place.
This commit is contained in:
parent
119111645b
commit
0664249ffc
21
.github/workflows/build_test.yml
vendored
21
.github/workflows/build_test.yml
vendored
|
@ -19,26 +19,11 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
env:
|
env:
|
||||||
# As we use postfixed clang/gcc binaries, we need to override $AR
|
- { COMPILER: "gcc", COMPILER_VERSION: "10" }
|
||||||
# as well, otherwise meson falls back to ar from binutils which
|
- { COMPILER: "clang", COMPILER_VERSION: "10" }
|
||||||
# doesn't work with LTO
|
|
||||||
- { CC: "clang-10", CXX: "clang++-10", AR: "llvm-ar-10" }
|
|
||||||
- { CC: "gcc-10", CXX: "g++-10", AR: "gcc-ar-10" }
|
|
||||||
env: ${{ matrix.env }}
|
env: ${{ matrix.env }}
|
||||||
steps:
|
steps:
|
||||||
- name: Repository checkout
|
- name: Repository checkout
|
||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v1
|
||||||
- name: Configure custom APT repositories for ${{ env.CC }}
|
- name: Build check (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})
|
||||||
run: |
|
|
||||||
if [[ "$CC" == clang-* ]]; then
|
|
||||||
# Latest LLVM stack deb packages provided by https://apt.llvm.org/
|
|
||||||
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
|
|
||||||
sudo apt-get install clang-10 llvm-10
|
|
||||||
else
|
|
||||||
# Latest gcc stack deb packages provided by
|
|
||||||
# https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
|
|
||||||
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
|
||||||
sudo apt-get install gcc-10
|
|
||||||
fi
|
|
||||||
- name: Build check (${{ env.CC }})
|
|
||||||
run: sudo -E travis-ci/managers/ubuntu-build-check.sh
|
run: sudo -E travis-ci/managers/ubuntu-build-check.sh
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -e
|
set -ex
|
||||||
|
|
||||||
info() { echo -e "\033[33;1m$1\033[0m"; }
|
info() { echo -e "\033[33;1m$1\033[0m"; }
|
||||||
error() { echo >&2 -e "\033[31;1m$1\033[0m"; }
|
fatal() { echo >&2 -e "\033[31;1m$1\033[0m"; exit 1; }
|
||||||
success() { echo >&2 -e "\033[32;1m$1\033[0m"; }
|
success() { echo >&2 -e "\033[32;1m$1\033[0m"; }
|
||||||
|
|
||||||
ARGS=(
|
ARGS=(
|
||||||
|
@ -41,7 +41,6 @@ PACKAGES=(
|
||||||
libzstd-dev
|
libzstd-dev
|
||||||
mount
|
mount
|
||||||
net-tools
|
net-tools
|
||||||
ninja-build
|
|
||||||
perl
|
perl
|
||||||
python-lxml
|
python-lxml
|
||||||
python3-evdev
|
python3-evdev
|
||||||
|
@ -55,21 +54,45 @@ PACKAGES=(
|
||||||
util-linux
|
util-linux
|
||||||
zstd
|
zstd
|
||||||
)
|
)
|
||||||
CC="${CC:?}"
|
COMPILER="${COMPILER:?}"
|
||||||
CXX="${CXX:?}"
|
COMPILER_VERSION="${COMPILER_VERSION:?}"
|
||||||
AR="${AR:-""}"
|
|
||||||
RELEASE="$(lsb_release -cs)"
|
RELEASE="$(lsb_release -cs)"
|
||||||
|
|
||||||
bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"
|
bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"
|
||||||
|
|
||||||
|
# Note: As we use postfixed clang/gcc binaries, we need to override $AR
|
||||||
|
# as well, otherwise meson falls back to ar from binutils which
|
||||||
|
# doesn't work with LTO
|
||||||
|
if [[ "$COMPILER" == clang ]]; then
|
||||||
|
CC="clang-$COMPILER_VERSION"
|
||||||
|
CXX="clang++-$COMPILER_VERSION"
|
||||||
|
AR="llvm-ar-$COMPILER_VERSION"
|
||||||
|
# Latest LLVM stack deb packages provided by https://apt.llvm.org/
|
||||||
|
# Following snippet was borrowed from https://apt.llvm.org/llvm.sh
|
||||||
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
||||||
|
add-apt-repository -y "deb http://apt.llvm.org/$RELEASE/ llvm-toolchain-$RELEASE-$COMPILER_VERSION main"
|
||||||
|
apt-get -y update
|
||||||
|
apt-get -y install clang-$COMPILER_VERSION lldb-$COMPILER_VERSION lld-$COMPILER_VERSION clangd-$COMPILER_VERSION
|
||||||
|
elif [[ "$COMPILER" == gcc ]]; then
|
||||||
|
CC="gcc-$COMPILER_VERSION"
|
||||||
|
CXX="g++-$COMPILER_VERSION"
|
||||||
|
AR="gcc-ar-$COMPILER_VERSION"
|
||||||
|
# Latest gcc stack deb packages provided by
|
||||||
|
# https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
|
||||||
|
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||||
|
apt-get -y update
|
||||||
|
sudo apt-get -y install gcc-$COMPILER_VERSION
|
||||||
|
else
|
||||||
|
fatal "Unknown compiler: $COMPILER"
|
||||||
|
fi
|
||||||
|
|
||||||
# PPA with some newer build dependencies (like zstd)
|
# PPA with some newer build dependencies (like zstd)
|
||||||
add-apt-repository -y ppa:upstream-systemd-ci/systemd-ci
|
add-apt-repository -y ppa:upstream-systemd-ci/systemd-ci
|
||||||
apt-get update
|
apt-get -y build-dep systemd
|
||||||
apt-get build-dep systemd -y
|
apt-get -y install "${PACKAGES[@]}"
|
||||||
apt-get install -y "${PACKAGES[@]}"
|
# Install latest meson and ninja form pip, since the distro versions don't
|
||||||
# Install latest meson from pip, as the distro-one doesn't support
|
# support all the features we need (like --optimization=)
|
||||||
# --optimization=
|
pip3 install meson ninja
|
||||||
pip3 install meson
|
|
||||||
|
|
||||||
$CC --version
|
$CC --version
|
||||||
|
|
||||||
|
@ -78,13 +101,11 @@ for args in "${ARGS[@]}"; do
|
||||||
|
|
||||||
info "Checking build with $args"
|
info "Checking build with $args"
|
||||||
if ! AR="$AR" CC="$CC" CXX="$CXX" meson --werror $args build; then
|
if ! AR="$AR" CC="$CC" CXX="$CXX" meson --werror $args build; then
|
||||||
error "meson failed with $args"
|
fatal "meson failed with $args"
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! ninja -C build; then
|
if ! ninja -C build; then
|
||||||
error "ninja failed with $args"
|
fatal "ninja failed with $args"
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git clean -dxf
|
git clean -dxf
|
||||||
|
|
Loading…
Reference in a new issue