diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eef23778..2fd5a04e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -196,6 +196,15 @@ debian meson: variables: ci_buildsys: "meson-dist" +debian meson clang debug: + extends: + - .meson-common + - .debian-build + variables: + ci_buildsys: "meson-dist" + ci_compiler: "clang" + ci_variant: "debug" + debian mingw32 autotools debug: extends: .debian-build variables: diff --git a/tools/ci-build.sh b/tools/ci-build.sh index 0e72b2d9..287b170e 100755 --- a/tools/ci-build.sh +++ b/tools/ci-build.sh @@ -77,6 +77,10 @@ init_wine() { # Build system under test: autotools or cmake : "${ci_buildsys:=autotools}" +# ci_compiler: +# Compiler used to build dbus: gcc or clang +: "${ci_compiler:=gcc}" + # ci_distro: # OS distribution in which we are testing # Typical values: auto (detect at runtime), ubuntu, debian; maybe fedora in future @@ -265,6 +269,8 @@ esac export MAKE=${make} make="${make} -j${ci_parallel} V=1 VERBOSE=1" +export UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 + case "$ci_buildsys" in (autotools) case "$ci_variant" in @@ -522,6 +528,12 @@ case "$ci_buildsys" in ;; (*) set -- -Db_sanitize=address,undefined "$@" + + # https://github.com/mesonbuild/meson/issues/764 + if [ "$ci_compiler" = "clang" ]; then + set -- -Db_lundef=false "$@" + fi + set -- -Db_pie=true "$@" set -- -Duser_session=true "$@" ;; @@ -531,6 +543,14 @@ case "$ci_buildsys" in ;; esac + case "$ci_compiler" in + (clang) + export CC=clang + ;; + (*) + ;; + esac + # Debian doesn't have similar convenience wrappers, but we can use # a cross-file if [ -z "$meson_setup" ] || ! command -v "$meson_setup" >/dev/null; then @@ -548,7 +568,7 @@ case "$ci_buildsys" in $meson_setup "$@" "$srcdir" meson compile -v - [ "$ci_test" = no ] || meson test + [ "$ci_test" = no ] || meson test --print-errorlogs DESTDIR=DESTDIR meson install ( cd DESTDIR && find . -ls) ;; diff --git a/tools/ci-install.sh b/tools/ci-install.sh index c53ede9b..b259a58e 100755 --- a/tools/ci-install.sh +++ b/tools/ci-install.sh @@ -148,6 +148,7 @@ case "$ci_distro" in autotools-dev ca-certificates ccache + clang cmake debhelper dh-autoreconf @@ -169,6 +170,7 @@ case "$ci_distro" in libselinux1-dev libsystemd-dev libx11-dev + llvm meson ninja-build sudo