]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ci: do the compiler-detection magic in the test script
authorFrantisek Sumsal <frantisek@sumsal.cz>
Thu, 11 Jun 2020 11:18:07 +0000 (13:18 +0200)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Thu, 11 Jun 2020 12:17:37 +0000 (14:17 +0200)
so we have all PPA definitions at one place.

.github/workflows/build_test.yml
travis-ci/managers/ubuntu-build-check.sh

index 2a6f0df9c49e97d773f4f39336a27fbaca72aa0e..a860092518966a9c65e9a616ea31c8ed578a275b 100644 (file)
@@ -19,26 +19,11 @@ jobs:
       fail-fast: false
       matrix:
         env:
-          # 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
-          - { CC: "clang-10", CXX: "clang++-10", AR: "llvm-ar-10" }
-          - { CC: "gcc-10", CXX: "g++-10", AR: "gcc-ar-10" }
+          - { COMPILER: "gcc", COMPILER_VERSION: "10" }
+          - { COMPILER: "clang", COMPILER_VERSION: "10" }
     env: ${{ matrix.env }}
     steps:
       - name: Repository checkout
         uses: actions/checkout@v1
-      - name: Configure custom APT repositories for ${{ env.CC }}
-        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 }})
+      - name: Build check (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})
         run: sudo -E travis-ci/managers/ubuntu-build-check.sh
index c2a7feee603c83e7bfae7e333d93e9b4f924888e..a2fade9de3bfb527c1513d4681a761985f45a497 100755 (executable)
@@ -1,9 +1,9 @@
 #!/bin/bash
 
-set -e
+set -ex
 
 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"; }
 
 ARGS=(
@@ -41,7 +41,6 @@ PACKAGES=(
     libzstd-dev
     mount
     net-tools
-    ninja-build
     perl
     python-lxml
     python3-evdev
@@ -55,21 +54,45 @@ PACKAGES=(
     util-linux
     zstd
 )
-CC="${CC:?}"
-CXX="${CXX:?}"
-AR="${AR:-""}"
+COMPILER="${COMPILER:?}"
+COMPILER_VERSION="${COMPILER_VERSION:?}"
 RELEASE="$(lsb_release -cs)"
 
 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)
 add-apt-repository -y ppa:upstream-systemd-ci/systemd-ci
-apt-get update
-apt-get build-dep systemd -y
-apt-get install -y "${PACKAGES[@]}"
-# Install latest meson from pip, as the distro-one doesn't support
-# --optimization=
-pip3 install meson
+apt-get -y build-dep systemd
+apt-get -y install "${PACKAGES[@]}"
+# Install latest meson and ninja form pip, since the distro versions don't
+# support all the features we need (like --optimization=)
+pip3 install meson ninja
 
 $CC --version
 
@@ -78,13 +101,11 @@ for args in "${ARGS[@]}"; do
 
     info "Checking build with $args"
     if ! AR="$AR" CC="$CC" CXX="$CXX" meson --werror $args build; then
-        error "meson failed with $args"
-        exit 1
+        fatal "meson failed with $args"
     fi
 
     if ! ninja -C build; then
-        error "ninja failed with $args"
-        exit 1
+        fatal "ninja failed with $args"
     fi
 
     git clean -dxf