X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=travis-ci%2Fmanagers%2Ffedora.sh;h=dbd484c25cf1c44694ee89862fc5471b306499da;hb=e65f29b4c6e82722bf80be441f74ec41488ba8b0;hp=8b7b3c873d25ccec999a870629c2f534f69915b8;hpb=eff162bf963f1fd52e8b32d04274f8f5f228f94c;p=thirdparty%2Fsystemd.git diff --git a/travis-ci/managers/fedora.sh b/travis-ci/managers/fedora.sh index 8b7b3c873d2..dbd484c25cf 100755 --- a/travis-ci/managers/fedora.sh +++ b/travis-ci/managers/fedora.sh @@ -15,7 +15,18 @@ CONT_NAME="${CONT_NAME:-fedora-$FEDORA_RELEASE-$RANDOM}" DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}" DOCKER_RUN="${DOCKER_RUN:-docker run}" REPO_ROOT="${REPO_ROOT:-$PWD}" -ADDITIONAL_DEPS=(dnf-plugins-core python2 iputils hostname libasan python3-pyparsing python3-evdev libubsan) +ADDITIONAL_DEPS=(dnf-plugins-core + jq iputils + hostname libasan + python3-pyparsing + python3-evdev + libubsan + clang + llvm + perl + libfdisk-devel + openssl-devel + p11-kit-devel) function info() { echo -e "\033[33;1m$1\033[0m" @@ -23,6 +34,8 @@ function info() { set -e +source "$(dirname $0)/travis_wait.bash" + for phase in "${PHASES[@]}"; do case $phase in SETUP) @@ -34,8 +47,10 @@ for phase in "${PHASES[@]}"; do $DOCKER_RUN -v $REPO_ROOT:/build:rw \ -w /build --privileged=true --name $CONT_NAME \ -dit --net=host fedora:$FEDORA_RELEASE /sbin/init - # Beautiful workaround for Fedora's version of Docker - sleep 1 + # Wait for the container to properly boot up, otherwise we were + # running following dnf commands during the initializing/starting + # (early/late bootup) phase, which caused nasty race conditions + $DOCKER_EXEC bash -c 'systemctl is-system-running --wait || :' $DOCKER_EXEC dnf makecache # Install necessary build/test requirements $DOCKER_EXEC dnf -y --exclude selinux-policy\* upgrade @@ -49,13 +64,26 @@ for phase in "${PHASES[@]}"; do $DOCKER_EXEC ninja -v -C build $DOCKER_EXEC ninja -C build test ;; - RUN_ASAN) - $DOCKER_EXEC git clean -dxff - $DOCKER_EXEC meson --werror -Dtests=unsafe -Db_sanitize=address,undefined build + RUN_CLANG) + docker exec -e CC=clang -e CXX=clang++ -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dman=true build + $DOCKER_EXEC ninja -v -C build + $DOCKER_EXEC ninja -C build test + ;; + RUN_ASAN|RUN_CLANG_ASAN) + if [[ "$phase" = "RUN_CLANG_ASAN" ]]; then + ENV_VARS="-e CC=clang -e CXX=clang++" + MESON_ARGS="-Db_lundef=false" # See https://github.com/mesonbuild/meson/issues/764 + fi + docker exec $ENV_VARS -it $CONT_NAME meson --werror -Dtests=unsafe -Db_sanitize=address,undefined $MESON_ARGS build $DOCKER_EXEC ninja -v -C build # Never remove halt_on_error from UBSAN_OPTIONS. See https://github.com/systemd/systemd/commit/2614d83aa06592aedb. - $DOCKER_EXEC sh -c "UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 meson test --timeout-multiplier=3 -C ./build/ --print-errorlogs" + travis_wait docker exec --interactive=false \ + -e UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 \ + -e ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1 \ + -e "TRAVIS=$TRAVIS" \ + -t $CONT_NAME \ + meson test --timeout-multiplier=3 -C ./build/ --print-errorlogs ;; CLEANUP) info "Cleanup phase"