ci: code cleanup

This commit is contained in:
Frantisek Sumsal 2021-01-30 18:33:26 +01:00
parent 81edf9f0da
commit b17a386004
1 changed files with 61 additions and 64 deletions

View File

@ -18,75 +18,72 @@ fi
set -ex
export CC="$CC"
export CXX="$CXX"
for phase in "${PHASES[@]}"; do
case $phase in
CONFIGURE)
opts="--disable-use-tty-group \
--disable-makeinstall-chown \
--enable-all-programs \
--enable-asan \
--enable-ubsan \
--without-python \
--enable-werror"
CONFIGURE)
opts=(
--disable-use-tty-group
--disable-makeinstall-chown
--enable-all-programs
--enable-asan
--enable-ubsan
--without-python
--enable-werror
)
if [[ "$COMPILER" == clang* ]]; then
opts="$opts --enable-fuzzing-engine"
fi
if [[ "$COMPILER" == clang* ]]; then
opts+=(--enable-fuzzing-engine)
fi
sudo -E git clean -xdf
sudo -E git clean -xdf
./autogen.sh
CC=$CC CXX=$CXX CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ./configure $opts
;;
MAKE)
make -j
make -j check-programs
;;
INSTALL)
make install DESTDIR=/tmp/dest
;;
CHECK)
# All the following black magic is to make test/eject/umount work, since
# eject execl()s the uninstrumented /bin/umount binary, which confuses
# ASan. The workaround for this is to set $LD_PRELOAD to the ASan's
# runtime DSO, which works well with gcc without any additional hassle.
# However, since clang, by default, links ASan statically, we need to
# explicitly state we want dynamic linking (see -shared-libasan above).
# That, however, introduces another issue - clang's ASan runtime is in
# a non-standard path, so all binaries compiled in such way refuse
# to start. That's what the following blob of code is for - it detects
# the ASan's runtime path and adds the respective directory to
# the dynamic linker cache.
#
# The actual $LD_PRELOAD sheanigans are done directly in
# tests/ts/eject/umount.
asan_rt_name="$(ldd ./kill | awk '/lib.+asan.*.so/ {print $1; exit}')"
asan_rt_path="$($CC --print-file-name "$asan_rt_name")"
echo "Detected ASan runtime: $asan_rt_name ($asan_rt_path)"
if [[ -z "$asan_rt_name" || -z "$asan_rt_path" ]]; then
echo >&2 "Couldn't detect ASan runtime, can't continue"
exit 1
fi
if [[ "$COMPILER" == clang* ]]; then
mkdir -p /etc/ld.so.conf.d/
echo "${asan_rt_path%/*}" > /etc/ld.so.conf.d/99-clang-libasan.conf
ldconfig
fi
./tests/run.sh --show-diff
;;
DISTCHECK)
make distcheck
;;
*)
echo >&2 "Unknown phase '$phase'"
./autogen.sh
CC="$CC" CXX="$CXX" CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" ./configure "${opts[@]}"
;;
MAKE)
make -j
make -j check-programs
;;
INSTALL)
make install DESTDIR=/tmp/dest
;;
CHECK)
# All the following black magic is to make test/eject/umount work, since
# eject execl()s the uninstrumented /bin/umount binary, which confuses
# ASan. The workaround for this is to set $LD_PRELOAD to the ASan's
# runtime DSO, which works well with gcc without any additional hassle.
# However, since clang, by default, links ASan statically, we need to
# explicitly state we want dynamic linking (see -shared-libasan above).
# That, however, introduces another issue - clang's ASan runtime is in
# a non-standard path, so all binaries compiled in such way refuse
# to start. That's what the following blob of code is for - it detects
# the ASan's runtime path and adds the respective directory to
# the dynamic linker cache.
#
# The actual $LD_PRELOAD sheanigans are done directly in
# tests/ts/eject/umount.
asan_rt_name="$(ldd ./kill | awk '/lib.+asan.*.so/ {print $1; exit}')"
asan_rt_path="$($CC --print-file-name "$asan_rt_name")"
echo "Detected ASan runtime: $asan_rt_name ($asan_rt_path)"
if [[ -z "$asan_rt_name" || -z "$asan_rt_path" ]]; then
echo >&2 "Couldn't detect ASan runtime, can't continue"
exit 1
fi
if [[ "$COMPILER" == clang* ]]; then
mkdir -p /etc/ld.so.conf.d/
echo "${asan_rt_path%/*}" > /etc/ld.so.conf.d/99-clang-libasan.conf
ldconfig
fi
./tests/run.sh --show-diff
;;
DISTCHECK)
make distcheck
;;
*)
echo >&2 "Unknown phase '$phase'"
exit 1
esac
done