]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - .travis-functions.sh
Merge branch 'PR/libsmartcols-reduce-fix' of github.com:karelzak/util-linux-work
[thirdparty/util-linux.git] / .travis-functions.sh
diff --git a/.travis-functions.sh b/.travis-functions.sh
deleted file mode 100755 (executable)
index cfed241..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-#!/bin/bash
-
-#
-# .travis-functions.sh:
-#   - helper functions to be sourced from .travis.yml
-#   - designed to respect travis' environment but testing locally is possible
-#
-# Variables:
-#
-#   TS_OPT_<name>_<something>=yes
-#          - forces tests/functions.sh:ts_has_option() to return "yes" for
-#            variable <something> in test <name>
-#
-#   TESTS_OPTIONS=
-#   TESTS_PARALLEL=
-#   TESTS_COMMAND=
-#          - overwrites default from tests/Makemodule.am
-#
-#   Do not use TS_* prefix for any travis or build-system stuff. This prefix is
-#   exclusively used by tests/ stuff.
-#
-
-if [ ! -f "configure.ac" ]; then
-       echo ".travis-functions.sh must be sourced from source dir" >&2
-       return 1 || exit 1
-fi
-
-## some config settings
-# travis docs say we get 1.5 CPUs
-MAKE="make -j2 V=1"
-DUMP_CONFIG_LOG="short"
-
-# Coverity-related settings
-COVERITY_SCAN_TOOL_BASE="/tmp/coverity-scan-analysis"
-COVERITY_SCAN_PROJECT_NAME="util-linux/util-linux"
-
-# workaround ugly warning on travis OSX,
-# see https://github.com/direnv/direnv/issues/210
-shell_session_update() { :; }
-
-function xconfigure
-{
-       local gcc_version clang_version cxx
-
-       which "$CC"
-       "$CC" --version
-
-       if [[ "$CC" =~ ^clang-([0-9]+)$ ]]; then
-               clang_version=${BASH_REMATCH[1]}
-               cxx=clang++-${clang_version}
-       elif [[ "$CC" =~ ^gcc-([0-9]+)$ ]]; then
-               gcc_version=${BASH_REMATCH[1]}
-               cxx=g++-${gcc_version}
-       elif [[ "$CC" == "clang" ]]; then
-               cxx=clang++
-       elif [[ "$CC" == "gcc" ]]; then
-               cxx=g++
-       fi
-
-       which "$cxx"
-       "$cxx" --version
-
-       CC=$CC CXX=$cxx ./configure "$@" $OSX_CONFOPTS
-       err=$?
-       if [ "$DUMP_CONFIG_LOG" = "short" ]; then
-               grep -B1 -A10000 "^## Output variables" config.log | grep -v "_FALSE="
-       elif [ "$DUMP_CONFIG_LOG" = "full" ]; then
-               cat config.log
-       fi
-       return $err
-}
-
-# TODO: integrate checkusage into our regular tests and remove this function
-function make_checkusage
-{
-       local tmp
-       # memory leaks are ignored here. See https://github.com/util-linux/util-linux/issues/1077
-       if ! tmp=$(ASAN_OPTIONS="$ASAN_OPTIONS:detect_leaks=0" $MAKE checkusage 2>&1) || test -n "$tmp"; then
-               echo "$tmp"
-               echo "make checkusage failed" >&2
-               return 1
-       fi
-}
-
-function check_nonroot
-{
-       local make_opts="$MAKE_CHECK_OPTS --show-diff --parsable"
-       local conf_opts="\
-               --disable-use-tty-group \
-               --disable-makeinstall-chown \
-               --enable-all-programs"
-
-       if [ "$TRAVIS_OS_NAME" != "osx" ]; then
-               conf_opts="$conf_opts --enable-asan --enable-ubsan"
-               make_opts="$make_opts --memcheck-asan --memcheck-ubsan"
-
-               if [ "$TRAVIS_DIST" != "precise" ]; then
-                       conf_opts="$conf_opts --enable-werror"
-               fi
-
-               if [[ "$CC" =~ "clang" ]]; then
-                       conf_opts="$conf_opts --enable-fuzzing-engine"
-               fi
-       fi
-
-       xconfigure $conf_opts || return
-       $MAKE || return
-
-       osx_prepare_check
-
-       # TESTS_* overwrites default from tests/Makemodule.am
-       $MAKE check TESTS_OPTIONS="$make_opts" || return
-
-       make_checkusage || return
-
-       $MAKE install DESTDIR=/tmp/dest || return
-}
-
-function check_root
-{
-       local make_opts="$MAKE_CHECK_OPTS --show-diff"
-       local conf_opts="--enable-all-programs"
-
-       if [ "$TRAVIS_OS_NAME" != "osx" ]; then
-               conf_opts="$conf_opts --enable-asan --enable-ubsan"
-               make_opts="$make_opts --memcheck-asan --memcheck-ubsan"
-
-               if [ "$TRAVIS_DIST" != "precise" ]; then
-                       conf_opts="$conf_opts --enable-werror"
-               fi
-
-               if [[ "$CC" =~ "clang" ]]; then
-                       conf_opts="$conf_opts --enable-fuzzing-engine"
-               fi
-       fi
-
-       xconfigure $conf_opts || return
-       $MAKE || return
-
-       # compile tests only
-       $MAKE check-programs || return
-
-       # Modify environment for OSX
-       osx_prepare_check
-
-       # TESTS_* overwrites default from tests/Makemodule.am
-       sudo -E $MAKE check TESTS_PARALLEL="" TESTS_OPTIONS="$make_opts" || return
-
-       # root on osx has not enough permission for make install ;)
-       [ "$TRAVIS_OS_NAME" = "osx" ] && return
-
-       # keep PATH to make sure sudo would find $CC
-       sudo env "PATH=$PATH" $MAKE install || return
-}
-
-function run_coverity
-{
-       local results_dir="cov-int"
-       local tool_dir=$(find $COVERITY_SCAN_TOOL_BASE -type d -name 'cov-analysis*')
-       local results_archive="analysis-results.tgz"
-       local sha=$(git rev-parse --short HEAD)
-       local author_email=$(git log -1 --pretty="%aE")
-       local response status_code
-
-       xconfigure --enable-all-programs || return
-       echo -e "\033[33;1mRunning Coverity Scan Analysis Tool...\033[0m"
-       COVERITY_UNSUPPORTED=1 $tool_dir/bin/cov-build --dir $results_dir sh -c "$MAKE check-programs all" || return
-       $tool_dir/bin/cov-import-scm --dir $results_dir --scm git --log $results_dir/scm_log.txt || return
-
-       echo -e "\033[33;1mTarring Coverity Scan Analysis results...\033[0m"
-       tar czf $results_archive $results_dir || return
-
-       echo -e "\033[33;1mUploading Coverity Scan Analysis results...\033[0m"
-       response=$(curl \
-                  --silent --write-out "\n%{http_code}\n" \
-                  --form project=$COVERITY_SCAN_PROJECT_NAME \
-                  --form token=$COVERITY_SCAN_TOKEN \
-                  --form email=$author_email \
-                  --form file=@$results_archive \
-                  --form version=$sha \
-                  --form description="Travis CI build" \
-                  https://scan.coverity.com/builds)
-       printf "\033[33;1mThe response is\033[0m\n%s\n" "$response"
-       status_code=$(echo "$response" | sed -n '$p')
-       if [ "$status_code" != "200" ]; then
-               echo -e "\033[33;1mCoverity Scan upload failed: $(echo "$response" | sed '$d').\033[0m"
-               return 1
-       fi
-
-       echo -e "\n\033[33;1mCoverity Scan Analysis completed successfully.\033[0m"
-}
-
-function check_dist
-{
-       xconfigure \
-               || return
-       $MAKE distcheck || return
-}
-
-function travis_install_script
-{
-       local ubuntu_release
-       local additional_packages=()
-       local clang_version gcc_version
-
-       if [ "$TRAVIS_OS_NAME" = "osx" ]; then
-               osx_install_script
-               return
-       fi
-
-       ubuntu_release=$(lsb_release -cs)
-
-       # install required packages
-       sudo bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $ubuntu_release main restricted universe multiverse' >>/etc/apt/sources.list"
-
-       if [[ "$CC" =~ ^clang-([0-9]+)$ ]]; then
-               clang_version=${BASH_REMATCH[1]}
-               # the following snippet was borrowed from https://apt.llvm.org/llvm.sh
-               wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
-               sudo add-apt-repository -y "deb http://apt.llvm.org/$ubuntu_release/   llvm-toolchain-$ubuntu_release-$clang_version  main"
-               additional_packages+=(clang-$clang_version llvm-$clang_version)
-       elif [[ "$CC" =~ ^gcc-([0-9]+)$ ]]; then
-               gcc_version=${BASH_REMATCH[1]}
-               sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
-               additional_packages+=(gcc-$gcc_version)
-       fi
-
-       sudo apt-get -qq update --fix-missing
-       sudo apt-get build-dep -y util-linux
-       sudo apt-get install -qq >/dev/null \
-               bc \
-               btrfs-tools \
-               dnsutils \
-               libcap-ng-dev \
-               libncursesw5-dev \
-               libpam-dev \
-               libudev-dev \
-               gtk-doc-tools \
-               mdadm \
-               ntp \
-               socat \
-               "${additional_packages[@]}" \
-               || return
-
-       # install only if available (e.g. Ubuntu Trusty)
-       sudo apt-get install -qq >/dev/null \
-               libsystemd-daemon-dev \
-               libsystemd-journal-dev \
-               || true
-
-       if [ "$TRAVIS_BUILD_STAGE_NAME" = "Coverity" ]; then
-               coverity_install_script
-               return
-       fi
-}
-
-function coverity_install_script
-{
-       local platform=$(uname)
-       local tool_url="https://scan.coverity.com/download/${platform}"
-       local tool_archive="/tmp/cov-analysis-${platform}.tgz"
-
-       echo -e "\033[33;1mDownloading Coverity Scan Analysis Tool...\033[0m"
-       wget -nv -O $tool_archive $tool_url --post-data "project=$COVERITY_SCAN_PROJECT_NAME&token=$COVERITY_SCAN_TOKEN" || return
-
-       echo -e "\033[33;1mExtracting Coverity Scan Analysis Tool...\033[0m"
-       mkdir -p $COVERITY_SCAN_TOOL_BASE
-       pushd $COVERITY_SCAN_TOOL_BASE
-       tar xzf $tool_archive || return
-       popd
-}
-
-function osx_install_script
-{
-       brew update >/dev/null
-
-       brew install gettext ncurses socat xz
-       brew link --force gettext
-       brew link --force ncurses
-
-       OSX_CONFOPTS="
-               --disable-ipcrm \
-               --disable-ipcs \
-               --disable-libmount \
-       "
-
-       # workaround: glibtoolize could not find sed
-       export SED="sed"
-}
-
-function osx_prepare_check
-{
-       [ "$TRAVIS_OS_NAME" = "osx" ] || return 0
-
-       # these ones only need to be gnu for our test-suite
-       brew install coreutils findutils gnu-tar gnu-sed
-
-       # symlink minimally needed gnu commands into PATH
-       mkdir ~/bin
-       for cmd in readlink seq timeout truncate find xargs tar sed; do
-               ln -s /usr/local/bin/g$cmd $HOME/bin/$cmd
-       done
-       hash -r
-
-       export TS_OPT_col_multibyte_known_fail=yes
-       export TS_OPT_colcrt_regressions_known_fail=yes
-       export TS_OPT_column_invalid_multibyte_known_fail=yes
-}
-
-function travis_before_script
-{
-       set -o xtrace
-
-       git clean -xdf
-       ./autogen.sh
-       ret=$?
-
-       set +o xtrace
-       return $ret
-}
-
-function travis_script
-{
-       local ret
-
-       # run_coverity should be run before set -o xtrace so as not to expose COVERITY_SCAN_TOKEN
-       if [ "$TRAVIS_BUILD_STAGE_NAME" = "Coverity" ]; then
-               run_coverity
-               return
-       fi
-
-       set -o xtrace
-
-       case "$MAKE_CHECK" in
-       nonroot)
-               check_nonroot
-               ;;
-       root)
-               check_root
-               ;;
-       dist)
-               check_dist
-               ;;
-       *)
-               echo "error, check environment (travis.yml)" >&2
-               false
-               ;;
-       esac
-
-       # We exit here with case-switch return value!
-       ret=$?
-       set +o xtrace
-       return $ret
-}
-
-function travis_after_script
-{
-       local diff_dir
-       local tmp
-
-       # find diff dir from check as well as from distcheck
-       diff_dir=$(find . -type d -name "diff" | grep "tests/diff" | head -n 1)
-       if [ -d "$diff_dir" ]; then
-               tmp=$(find "$diff_dir" -type f | sort)
-               echo -en "dump test diffs:\n${tmp}\n"
-               echo "$tmp" | xargs cat
-       fi
-}