From: Frantisek Sumsal Date: Sat, 30 Jan 2021 17:33:26 +0000 (+0100) Subject: ci: code cleanup X-Git-Tag: v2.37-rc1~139^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b17a3860040dbf322f510b3e6aecb97863ce8192;p=thirdparty%2Futil-linux.git ci: code cleanup --- diff --git a/.github/workflows/cibuild.sh b/.github/workflows/cibuild.sh index 7476395dc8..7fc30c344c 100755 --- a/.github/workflows/cibuild.sh +++ b/.github/workflows/cibuild.sh @@ -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 + ./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 + 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 + ./tests/run.sh --show-diff + ;; + DISTCHECK) + make distcheck + ;; + + *) + echo >&2 "Unknown phase '$phase'" + exit 1 esac done - -