aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorBernd Schubert <bschubert@ddn.com>2024-03-20 00:32:40 +0100
committerBernd Schubert <bschubert@ddn.com>2024-03-20 12:32:39 +0100
commit255de0b78a2a2c6202d87e40aab72c58b7fcf146 (patch)
tree33b9e22250ebcda2a5970dcde6691f88541f78fa /test
parent982743f0cad20de044d9767c7c8c46887fcb80c3 (diff)
downloadlibfuse-255de0b78a2a2c6202d87e40aab72c58b7fcf146.tar.gz
Build clang/sanitized build first
This was stalling - easier to check what happens when it fails fast. And in general, sanitized builds are faster than valgrind and detect almost as much errors as valgrind (same level would be achieved with MSAN, but that is hard to use), so failures can be detected faster whan sanitizers run first.
Diffstat (limited to 'test')
-rwxr-xr-xtest/ci-build.sh82
1 files changed, 45 insertions, 37 deletions
diff --git a/test/ci-build.sh b/test/ci-build.sh
index 73893a6..4d269fa 100755
--- a/test/ci-build.sh
+++ b/test/ci-build.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -x
set -e
@@ -30,42 +30,48 @@ export LSAN_OPTIONS="suppressions=$(pwd)/lsan_suppress.txt"
export ASAN_OPTIONS="detect_leaks=1"
export CC
-# Standard build
-for CC in gcc gcc-9 gcc-10 clang; do
- echo "=== Building with ${CC} ==="
- mkdir build-${CC}; pushd build-${CC}
- if [ "${CC}" == "clang" ]; then
- export CXX="clang++"
- export TEST_WITH_VALGRIND=false
- else
- export TEST_WITH_VALGRIND=true
- fi
- if [ ${CC} == 'gcc-7' ]; then
- build_opts='-D b_lundef=false'
- else
- build_opts=''
- fi
- if [ ${CC} == 'gcc-10' ]; then
- build_opts='-Dc_args=-flto=auto'
- else
- build_opts=''
- fi
- meson setup -Dprefix=${PREFIX_DIR} -D werror=true ${build_opts} "${SOURCE_DIR}" || (cat meson-logs/meson-log.txt; false)
- ninja
- sudo ninja install
-
- # libfuse will first try the install path and then system defaults
- sudo chmod 4755 ${PREFIX_DIR}/bin/fusermount3
-
- # also needed for some of the tests
- sudo chown root:root util/fusermount3
- sudo chmod 4755 util/fusermount3
-
- ${TEST_CMD}
- popd
- rm -fr build-${CC}
- sudo rm -fr ${PREFIX_DIR}
-done
+non_sanitized_build()
+(
+ echo "Standard build (without sanitizers)"
+ for CC in gcc gcc-9 gcc-10 clang; do
+ echo "=== Building with ${CC} ==="
+ mkdir build-${CC}; pushd build-${CC}
+ if [ "${CC}" == "clang" ]; then
+ export CXX="clang++"
+ export TEST_WITH_VALGRIND=false
+ else
+ unset CXX
+ export TEST_WITH_VALGRIND=true
+ fi
+ if [ ${CC} == 'gcc-7' ]; then
+ build_opts='-D b_lundef=false'
+ else
+ build_opts=''
+ fi
+ if [ ${CC} == 'gcc-10' ]; then
+ build_opts='-Dc_args=-flto=auto'
+ else
+ build_opts=''
+ fi
+
+ meson setup -Dprefix=${PREFIX_DIR} -D werror=true ${build_opts} "${SOURCE_DIR}" || (cat meson-logs/meson-log.txt; false)
+ ninja
+ sudo ninja install
+
+ # libfuse will first try the install path and then system defaults
+ sudo chmod 4755 ${PREFIX_DIR}/bin/fusermount3
+
+ # also needed for some of the tests
+ sudo chown root:root util/fusermount3
+ sudo chmod 4755 util/fusermount3
+
+ ${TEST_CMD}
+ popd
+ rm -fr build-${CC}
+ sudo rm -fr ${PREFIX_DIR}
+
+ done
+)
sanitized_build()
(
@@ -114,6 +120,8 @@ CC=clang
CXX=clang++
sanitized_build
+non_sanitized_build
+
# Documentation.
(cd "${SOURCE_DIR}"; doxygen doc/Doxyfile)