]>
Commit | Line | Data |
---|---|---|
a74be22c FS |
1 | #!/bin/bash |
2 | ||
3 | PHASES=(${@:-SETUP RUN RUN_ASAN_UBSAN CLEANUP}) | |
4 | RELEASE="$(lsb_release -cs)" | |
5 | ADDITIONAL_DEPS=( | |
6 | clang | |
7 | expect | |
8 | fdisk | |
9 | libfdisk-dev | |
10 | libfido2-dev | |
11 | libp11-kit-dev | |
12 | libpwquality-dev | |
13 | libqrencode-dev | |
14 | libssl-dev | |
15 | libtss2-dev | |
16 | libzstd-dev | |
17 | perl | |
18 | python3-libevdev | |
19 | python3-pyparsing | |
20 | zstd | |
21 | ) | |
22 | ||
23 | function info() { | |
24 | echo -e "\033[33;1m$1\033[0m" | |
25 | } | |
26 | ||
27 | set -ex | |
28 | ||
29 | for phase in "${PHASES[@]}"; do | |
30 | case $phase in | |
31 | SETUP) | |
32 | info "Setup phase" | |
33 | bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list" | |
34 | # PPA with some newer build dependencies | |
35 | add-apt-repository -y ppa:upstream-systemd-ci/systemd-ci | |
36 | apt-get -y update | |
37 | apt-get -y build-dep systemd | |
38 | apt-get -y install "${ADDITIONAL_DEPS[@]}" | |
39 | ;; | |
40 | RUN|RUN_GCC|RUN_CLANG) | |
41 | if [[ "$phase" = "RUN_CLANG" ]]; then | |
42 | export CC=clang | |
43 | export CXX=clang++ | |
a74be22c | 44 | fi |
ca0f86d1 | 45 | meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dman=true build |
a74be22c FS |
46 | ninja -C build -v |
47 | meson test -C build --print-errorlogs | |
48 | ;; | |
49 | RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN) | |
56a017cb FS |
50 | MESON_ARGS=(--optimization=1) |
51 | ||
a74be22c FS |
52 | if [[ "$phase" = "RUN_CLANG_ASAN_UBSAN" ]]; then |
53 | export CC=clang | |
54 | export CXX=clang++ | |
55 | # Build fuzzer regression tests only with clang (for now), | |
56 | # see: https://github.com/systemd/systemd/pull/15886#issuecomment-632689604 | |
57 | # -Db_lundef=false: See https://github.com/mesonbuild/meson/issues/764 | |
56a017cb | 58 | MESON_ARGS+=(-Db_lundef=false -Dfuzz-tests=true) |
a74be22c FS |
59 | fi |
60 | meson --werror -Dtests=unsafe -Db_sanitize=address,undefined "${MESON_ARGS[@]}" build | |
61 | ninja -C build -v | |
62 | ||
63 | export ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1 | |
64 | # Never remove halt_on_error from UBSAN_OPTIONS. See https://github.com/systemd/systemd/commit/2614d83aa06592aedb. | |
65 | export UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 | |
e8fd7c9e FS |
66 | |
67 | # FIXME | |
68 | # For some strange reason the GH Actions VM stops responding after | |
69 | # executing first ~150 tests, _unless_ there's something producing | |
70 | # output (either running `meson test` in verbose mode, or something | |
71 | # else in background). Despite my efforts so far I haven't been able | |
72 | # to identify the culprit (since the issue is not reproducible | |
73 | # during debugging, wonderful), so let's at least keep a workaround | |
74 | # here to make the builds stable for the time being. | |
75 | (set +x; while :; do echo -ne "\n[WATCHDOG] $(date)\n"; sleep 30; done) & | |
b5a9b601 | 76 | meson test --timeout-multiplier=3 -C build --print-errorlogs |
a74be22c FS |
77 | ;; |
78 | CLEANUP) | |
79 | info "Cleanup phase" | |
80 | ;; | |
81 | *) | |
82 | echo >&2 "Unknown phase '$phase'" | |
83 | exit 1 | |
84 | esac | |
85 | done |