From 5a573f2b91c3b04f46994a193f4a830d9d967030 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 10 Jun 2020 17:48:14 +0200 Subject: [PATCH 1/6] travis: replace set (+|-)e with travis_terminate It looks nicer and works around https://travis-ci.community/t/exit-0-cannot-exit-successfully-on-arm/5731/ --- .travis.yml | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index e57c199077..6b50c9d9fd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -75,10 +75,7 @@ jobs: install: - $CI_MANAGERS/debian.sh SETUP script: - - set -e - # Build systemd - - $CI_MANAGERS/debian.sh RUN - - set +e + - $CI_MANAGERS/debian.sh RUN || travis_terminate 1 after_script: - $CI_MANAGERS/debian.sh CLEANUP @@ -94,9 +91,7 @@ jobs: install: - $CI_MANAGERS/debian.sh SETUP script: - - set -e - - $CI_MANAGERS/debian.sh RUN_ASAN - - set +e + - $CI_MANAGERS/debian.sh RUN_ASAN || travis_terminate 1 after_script: - $CI_MANAGERS/debian.sh CLEANUP @@ -112,9 +107,7 @@ jobs: install: - $CI_MANAGERS/debian.sh SETUP script: - - set -e - - $CI_MANAGERS/debian.sh RUN_CLANG - - set +e + - $CI_MANAGERS/debian.sh RUN_CLANG || travis-travis_terminate 1 after_script: - $CI_MANAGERS/debian.sh CLEANUP @@ -130,9 +123,7 @@ jobs: install: - $CI_MANAGERS/debian.sh SETUP script: - - set -e - - $CI_MANAGERS/debian.sh RUN_CLANG_ASAN - - set +e + - $CI_MANAGERS/debian.sh RUN_CLANG_ASAN || travis_terminate 1 after_script: - $CI_MANAGERS/debian.sh CLEANUP From 2b918da5a1773c612bf9e5715b2e538bf700f23c Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 10 Jun 2020 19:45:33 +0200 Subject: [PATCH 2/6] journal: drop the assert-only variable completely Followup to dfa64b64a7e2b9bffea260953b30e6236047fffb. --- src/journal/journal-send.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c index 57d09e78c3..d51d03acd9 100644 --- a/src/journal/journal-send.c +++ b/src/journal/journal-send.c @@ -96,11 +96,9 @@ _public_ int sd_journal_printv(int priority, const char *format, va_list ap) { /* Allocate large buffer to accommodate big message */ if (len >= LINE_MAX) { - _unused_ int rlen; buffer = alloca(len + 9); memcpy(buffer, "MESSAGE=", 8); - rlen = vsnprintf(buffer + 8, len + 1, format, ap); - assert(len == rlen); + assert_se(vsnprintf(buffer + 8, len + 1, format, ap) == len); } /* 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 */ if (len >= LINE_MAX) { - _unused_ int rlen; buffer = alloca(len + 9); memcpy(buffer, "MESSAGE=", 8); - rlen = vsnprintf(buffer + 8, len + 1, format, ap); - assert(len == rlen); + assert_se(vsnprintf(buffer + 8, len + 1, format, ap) == len); } /* Strip trailing whitespace, keep prefixing whitespace */ From b31fba440c808b1cdd4b6e98998984228af330a5 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 10 Jun 2020 17:05:55 +0200 Subject: [PATCH 3/6] travis: bump Ubuntu release to Bionic --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6b50c9d9fd..6dd313aae6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ sudo: required -dist: xenial +dist: bionic services: - docker From 48c6399ad88d3d61fe25dee05011b2a94f2ef56e Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 10 Jun 2020 17:06:49 +0200 Subject: [PATCH 4/6] github: rename CIFuzz workflow file to cifuzz.yml --- .github/workflows/{main.yml => cifuzz.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{main.yml => cifuzz.yml} (100%) diff --git a/.github/workflows/main.yml b/.github/workflows/cifuzz.yml similarity index 100% rename from .github/workflows/main.yml rename to .github/workflows/cifuzz.yml From aab86b12ddc2abd485f5eb76acbb90b1ed5fdd6c Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 10 Jun 2020 13:41:28 +0200 Subject: [PATCH 5/6] github: move the clang/gcc build check to GH Actions Travis CI is getting overloaded, so let's move some load over to GitHub Actions. --- .github/workflows/build_test.yml | 44 +++++++++++++ .travis.yml | 42 ------------ travis-ci/managers/ubuntu-build-check.sh | 84 ++++++++++++++++++++++++ 3 files changed, 128 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/build_test.yml create mode 100755 travis-ci/managers/ubuntu-build-check.sh diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml new file mode 100644 index 0000000000..2a6f0df9c4 --- /dev/null +++ b/.github/workflows/build_test.yml @@ -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 diff --git a/.travis.yml b/.travis.yml index 6dd313aae6..d933ccce06 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,9 +11,6 @@ env: - REPO_ROOT="$TRAVIS_BUILD_DIR" stages: - - name: Build check - if: type != cron - - name: Build & test if: type != cron @@ -23,45 +20,6 @@ stages: jobs: 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 name: Debian Testing language: bash diff --git a/travis-ci/managers/ubuntu-build-check.sh b/travis-ci/managers/ubuntu-build-check.sh new file mode 100755 index 0000000000..3113b1e5e3 --- /dev/null +++ b/travis-ci/managers/ubuntu-build-check.sh @@ -0,0 +1,84 @@ +#!/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 + gettext + iptables-dev + iputils-ping + isc-dhcp-client + itstool + kbd + libblkid-dev + libcap-dev + libcurl4-gnutls-dev + libgpg-error-dev + liblz4-dev + liblzma-dev + libmicrohttpd-dev + libmount-dev + libqrencode-dev + libxkbcommon-dev + mount + net-tools + ninja-build + perl + python-lxml + python3-evdev + python3-lxml + python3-pip + python3-pyparsing + python3-setuptools + quota + strace + unifont + expect + util-linux +) +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" + +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 From 35cd3db4e50d1733741c3ea7df54baefb1559ac4 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 10 Jun 2020 20:51:15 +0200 Subject: [PATCH 6/6] ci: add homed/zstd dependencies Also, sort the whole list when we're at it. --- travis-ci/managers/ubuntu-build-check.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/travis-ci/managers/ubuntu-build-check.sh b/travis-ci/managers/ubuntu-build-check.sh index 3113b1e5e3..c2a7feee60 100755 --- a/travis-ci/managers/ubuntu-build-check.sh +++ b/travis-ci/managers/ubuntu-build-check.sh @@ -16,6 +16,8 @@ ARGS=( ) PACKAGES=( cryptsetup-bin + expect + fdisk gettext iptables-dev iputils-ping @@ -25,13 +27,18 @@ PACKAGES=( 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 @@ -45,8 +52,8 @@ PACKAGES=( quota strace unifont - expect util-linux + zstd ) CC="${CC:?}" CXX="${CXX:?}" @@ -55,6 +62,8 @@ 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[@]}"