Merge pull request #16136 from mrc0mmand/travis-cleanup
Move the gcc/clang build check to GitHub Actions
This commit is contained in:
commit
119111645b
44
.github/workflows/build_test.yml
vendored
Normal file
44
.github/workflows/build_test.yml
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
---
|
||||||
|
# vi: ts=2 sw=2 et:
|
||||||
|
#
|
||||||
|
name: Build test
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- '**/meson.build'
|
||||||
|
- '.github/workflows/**'
|
||||||
|
- 'meson_options.txt'
|
||||||
|
- 'src/**'
|
||||||
|
- 'test/fuzz/**'
|
||||||
|
- 'travis-ci/managers/ubuntu-build-check.sh'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
strategy:
|
||||||
|
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" }
|
||||||
|
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 }})
|
||||||
|
run: sudo -E travis-ci/managers/ubuntu-build-check.sh
|
61
.travis.yml
61
.travis.yml
|
@ -1,5 +1,5 @@
|
||||||
sudo: required
|
sudo: required
|
||||||
dist: xenial
|
dist: bionic
|
||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
|
@ -11,9 +11,6 @@ env:
|
||||||
- REPO_ROOT="$TRAVIS_BUILD_DIR"
|
- REPO_ROOT="$TRAVIS_BUILD_DIR"
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- name: Build check
|
|
||||||
if: type != cron
|
|
||||||
|
|
||||||
- name: Build & test
|
- name: Build & test
|
||||||
if: type != cron
|
if: type != cron
|
||||||
|
|
||||||
|
@ -23,45 +20,6 @@ stages:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
include:
|
include:
|
||||||
- stage: Build check
|
|
||||||
name: Fedora Rawhide (gcc)
|
|
||||||
language: bash
|
|
||||||
env:
|
|
||||||
- FEDORA_RELEASE="rawhide"
|
|
||||||
- CONT_NAME="systemd-fedora-$FEDORA_RELEASE"
|
|
||||||
- DOCKER_EXEC="docker exec -ti $CONT_NAME"
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
|
|
||||||
- docker --version
|
|
||||||
install:
|
|
||||||
- $CI_MANAGERS/fedora.sh SETUP
|
|
||||||
script:
|
|
||||||
- set -e
|
|
||||||
# Build systemd
|
|
||||||
- $CI_MANAGERS/fedora.sh RUN_BUILD_CHECK_GCC
|
|
||||||
- set +e
|
|
||||||
after_script:
|
|
||||||
- $CI_MANAGERS/fedora.sh CLEANUP
|
|
||||||
|
|
||||||
- name: Fedora Rawhide (clang)
|
|
||||||
language: bash
|
|
||||||
env:
|
|
||||||
- FEDORA_RELEASE="rawhide"
|
|
||||||
- CONT_NAME="systemd-fedora-$FEDORA_RELEASE"
|
|
||||||
- DOCKER_EXEC="docker exec -ti $CONT_NAME"
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
|
|
||||||
- docker --version
|
|
||||||
install:
|
|
||||||
- $CI_MANAGERS/fedora.sh SETUP
|
|
||||||
script:
|
|
||||||
- set -e
|
|
||||||
# Build systemd
|
|
||||||
- $CI_MANAGERS/fedora.sh RUN_BUILD_CHECK_CLANG
|
|
||||||
- set +e
|
|
||||||
after_script:
|
|
||||||
- $CI_MANAGERS/fedora.sh CLEANUP
|
|
||||||
|
|
||||||
- stage: Build & test
|
- stage: Build & test
|
||||||
name: Debian Testing
|
name: Debian Testing
|
||||||
language: bash
|
language: bash
|
||||||
|
@ -75,10 +33,7 @@ jobs:
|
||||||
install:
|
install:
|
||||||
- $CI_MANAGERS/debian.sh SETUP
|
- $CI_MANAGERS/debian.sh SETUP
|
||||||
script:
|
script:
|
||||||
- set -e
|
- $CI_MANAGERS/debian.sh RUN || travis_terminate 1
|
||||||
# Build systemd
|
|
||||||
- $CI_MANAGERS/debian.sh RUN
|
|
||||||
- set +e
|
|
||||||
after_script:
|
after_script:
|
||||||
- $CI_MANAGERS/debian.sh CLEANUP
|
- $CI_MANAGERS/debian.sh CLEANUP
|
||||||
|
|
||||||
|
@ -94,9 +49,7 @@ jobs:
|
||||||
install:
|
install:
|
||||||
- $CI_MANAGERS/debian.sh SETUP
|
- $CI_MANAGERS/debian.sh SETUP
|
||||||
script:
|
script:
|
||||||
- set -e
|
- $CI_MANAGERS/debian.sh RUN_ASAN || travis_terminate 1
|
||||||
- $CI_MANAGERS/debian.sh RUN_ASAN
|
|
||||||
- set +e
|
|
||||||
after_script:
|
after_script:
|
||||||
- $CI_MANAGERS/debian.sh CLEANUP
|
- $CI_MANAGERS/debian.sh CLEANUP
|
||||||
|
|
||||||
|
@ -112,9 +65,7 @@ jobs:
|
||||||
install:
|
install:
|
||||||
- $CI_MANAGERS/debian.sh SETUP
|
- $CI_MANAGERS/debian.sh SETUP
|
||||||
script:
|
script:
|
||||||
- set -e
|
- $CI_MANAGERS/debian.sh RUN_CLANG || travis-travis_terminate 1
|
||||||
- $CI_MANAGERS/debian.sh RUN_CLANG
|
|
||||||
- set +e
|
|
||||||
after_script:
|
after_script:
|
||||||
- $CI_MANAGERS/debian.sh CLEANUP
|
- $CI_MANAGERS/debian.sh CLEANUP
|
||||||
|
|
||||||
|
@ -130,9 +81,7 @@ jobs:
|
||||||
install:
|
install:
|
||||||
- $CI_MANAGERS/debian.sh SETUP
|
- $CI_MANAGERS/debian.sh SETUP
|
||||||
script:
|
script:
|
||||||
- set -e
|
- $CI_MANAGERS/debian.sh RUN_CLANG_ASAN || travis_terminate 1
|
||||||
- $CI_MANAGERS/debian.sh RUN_CLANG_ASAN
|
|
||||||
- set +e
|
|
||||||
after_script:
|
after_script:
|
||||||
- $CI_MANAGERS/debian.sh CLEANUP
|
- $CI_MANAGERS/debian.sh CLEANUP
|
||||||
|
|
||||||
|
|
|
@ -96,11 +96,9 @@ _public_ int sd_journal_printv(int priority, const char *format, va_list ap) {
|
||||||
|
|
||||||
/* Allocate large buffer to accommodate big message */
|
/* Allocate large buffer to accommodate big message */
|
||||||
if (len >= LINE_MAX) {
|
if (len >= LINE_MAX) {
|
||||||
_unused_ int rlen;
|
|
||||||
buffer = alloca(len + 9);
|
buffer = alloca(len + 9);
|
||||||
memcpy(buffer, "MESSAGE=", 8);
|
memcpy(buffer, "MESSAGE=", 8);
|
||||||
rlen = vsnprintf(buffer + 8, len + 1, format, ap);
|
assert_se(vsnprintf(buffer + 8, len + 1, format, ap) == len);
|
||||||
assert(len == rlen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Strip trailing whitespace, keep prefix whitespace. */
|
/* Strip trailing whitespace, keep prefix whitespace. */
|
||||||
|
@ -474,11 +472,9 @@ _public_ int sd_journal_printv_with_location(int priority, const char *file, con
|
||||||
|
|
||||||
/* Allocate large buffer to accommodate big message */
|
/* Allocate large buffer to accommodate big message */
|
||||||
if (len >= LINE_MAX) {
|
if (len >= LINE_MAX) {
|
||||||
_unused_ int rlen;
|
|
||||||
buffer = alloca(len + 9);
|
buffer = alloca(len + 9);
|
||||||
memcpy(buffer, "MESSAGE=", 8);
|
memcpy(buffer, "MESSAGE=", 8);
|
||||||
rlen = vsnprintf(buffer + 8, len + 1, format, ap);
|
assert_se(vsnprintf(buffer + 8, len + 1, format, ap) == len);
|
||||||
assert(len == rlen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Strip trailing whitespace, keep prefixing whitespace */
|
/* Strip trailing whitespace, keep prefixing whitespace */
|
||||||
|
|
93
travis-ci/managers/ubuntu-build-check.sh
Executable file
93
travis-ci/managers/ubuntu-build-check.sh
Executable file
|
@ -0,0 +1,93 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
info() { echo -e "\033[33;1m$1\033[0m"; }
|
||||||
|
error() { echo >&2 -e "\033[31;1m$1\033[0m"; }
|
||||||
|
success() { echo >&2 -e "\033[32;1m$1\033[0m"; }
|
||||||
|
|
||||||
|
ARGS=(
|
||||||
|
"--optimization=0"
|
||||||
|
"--optimization=2"
|
||||||
|
"--optimization=3"
|
||||||
|
"--optimization=s"
|
||||||
|
"-Db_lto=true"
|
||||||
|
"-Db_ndebug=true"
|
||||||
|
)
|
||||||
|
PACKAGES=(
|
||||||
|
cryptsetup-bin
|
||||||
|
expect
|
||||||
|
fdisk
|
||||||
|
gettext
|
||||||
|
iptables-dev
|
||||||
|
iputils-ping
|
||||||
|
isc-dhcp-client
|
||||||
|
itstool
|
||||||
|
kbd
|
||||||
|
libblkid-dev
|
||||||
|
libcap-dev
|
||||||
|
libcurl4-gnutls-dev
|
||||||
|
libfdisk-dev
|
||||||
|
libgpg-error-dev
|
||||||
|
liblz4-dev
|
||||||
|
liblzma-dev
|
||||||
|
libmicrohttpd-dev
|
||||||
|
libmount-dev
|
||||||
|
libp11-kit-dev
|
||||||
|
libpwquality-dev
|
||||||
|
libqrencode-dev
|
||||||
|
libssl-dev
|
||||||
|
libxkbcommon-dev
|
||||||
|
libzstd-dev
|
||||||
|
mount
|
||||||
|
net-tools
|
||||||
|
ninja-build
|
||||||
|
perl
|
||||||
|
python-lxml
|
||||||
|
python3-evdev
|
||||||
|
python3-lxml
|
||||||
|
python3-pip
|
||||||
|
python3-pyparsing
|
||||||
|
python3-setuptools
|
||||||
|
quota
|
||||||
|
strace
|
||||||
|
unifont
|
||||||
|
util-linux
|
||||||
|
zstd
|
||||||
|
)
|
||||||
|
CC="${CC:?}"
|
||||||
|
CXX="${CXX:?}"
|
||||||
|
AR="${AR:-""}"
|
||||||
|
RELEASE="$(lsb_release -cs)"
|
||||||
|
|
||||||
|
bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
$CC --version
|
||||||
|
|
||||||
|
for args in "${ARGS[@]}"; do
|
||||||
|
SECONDS=0
|
||||||
|
|
||||||
|
info "Checking build with $args"
|
||||||
|
if ! AR="$AR" CC="$CC" CXX="$CXX" meson --werror $args build; then
|
||||||
|
error "meson failed with $args"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ninja -C build; then
|
||||||
|
error "ninja failed with $args"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git clean -dxf
|
||||||
|
|
||||||
|
success "Build with $args passed in $SECONDS seconds"
|
||||||
|
done
|
Loading…
Reference in a new issue