From: Evgeny Vereshchagin Date: Mon, 8 Nov 2021 04:16:56 +0000 (+0000) Subject: ci: no longer refer to Travis CI X-Git-Tag: v2.38-rc1~178^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1524cb27855c241a6d066400e57e68832a669913;p=thirdparty%2Futil-linux.git ci: no longer refer to Travis CI and also add a link to Coveralls coverage reports to Documentation/howto-test to make it a little easier to find them. Signed-off-by: Evgeny Vereshchagin --- diff --git a/.travis-functions.sh b/.travis-functions.sh deleted file mode 100755 index cfed241e38..0000000000 --- a/.travis-functions.sh +++ /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__=yes -# - forces tests/functions.sh:ts_has_option() to return "yes" for -# variable in test -# -# 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 -} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index eeb478ce94..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,75 +0,0 @@ -language: c - -sudo: required -dist: bionic - -git: - depth: 1500 - -compiler: - - gcc-10 - - clang-10 - -env: - - MAKE_CHECK="nonroot" - - MAKE_CHECK="root" - - MAKE_CHECK="dist" - -stages: - - name: Coverity - if: type = cron - - name: Test - if: type != cron - -jobs: - include: - # test old Ubuntu 12.04 and OSX for compatibility - #- dist: precise - # compiler: gcc - # env: PRECISE="yes" MAKE_CHECK="root" - #- os: osx - # osx_image: xcode10.1 - # compiler: clang - # env: MAKE_CHECK="root" - - arch: arm64 - compiler: gcc-10 - env: MAKE_CHECK="root" - - arch: ppc64le - compiler: gcc-10 - env: MAKE_CHECK="root" - - arch: s390x - compiler: gcc-10 - env: MAKE_CHECK="root" - - stage: Coverity - compiler: gcc - env: - # Generated with `travis encrypt -r karelzak/util-linux COVERITY_SCAN_TOKEN=***` - - secure: cqwhidkCY+BckuBwmBevstLCHJm9aS2pQnYB3xGiz9JeqwW/x5h9pMElQdTFWw3AD2p5DzKzuW9nUtqNVzMSUWdPBrQGeuBT5tJW5eFeP/9mb5CG1/+w5xzOaZ/+3CK0gtcMSyRhGl2NeuLlimj6hzy37cUTSmBVHzGMZLD51As= - -branches: - only: - - master - - next - - /^stable.*/ - - /^topic.*/ - - /^travis.*/ - -before_install: - # print some host info - - env | grep -v "encrypted" | LC_ALL=C sort - # workaround travis-ci issue #5301 - - unset PYTHON_CFLAGS - -install: - - source ./.travis-functions.sh - - travis_install_script - -before_script: - - travis_before_script - -script: - - travis_script - -after_script: - - travis_after_script - diff --git a/Documentation/howto-tests.txt b/Documentation/howto-tests.txt index 99043fe140..15d088089d 100644 --- a/Documentation/howto-tests.txt +++ b/Documentation/howto-tests.txt @@ -124,14 +124,9 @@ TS_OPT_testdir_[testscript_]memcheck="" External services ----------------- -Travis CI - automatically executed for all github commits. +Coveralls coverage reports - URL: https://travis-ci.org/util-linux/util-linux/ - - See .travis.yml for more details. - - We require "sudo" to install additional stuff and to run the tests with - UID=0, it means that tests are executed on travis "legacy infrastructure". + URL: https://coveralls.io/github/util-linux/util-linux lgtm CI - automatically executed security code analysis