From 08f8e48ca10829ffdb6fa340c0e805cd8e76d242 Mon Sep 17 00:00:00 2001 From: Riccardo Schirone Date: Wed, 12 Sep 2018 12:24:19 +0200 Subject: [PATCH] Coverage codecov (#11494) * travis: just merge linux/meson build with coverage one * update travis.yml and extract-var * change a bit call to codecov.sh * switch to ubuntu:bionic * fix docker.travis * fix LD_LIBRARY_PATH * Dockerfile.travis: add pkg-config * Dockerfile.travis: install npm * dockerfile.travis: somehow pkg-config was removed * travis: switch back to latest * travis: do not hardcode machine * move COVERAGE=1 after INSTALL_SYSTEM --- .travis.yml | 12 +++------ Dockerfile.travis | 62 +++++++++++++++++-------------------------- travis-extract-var.sh | 5 +++- travis-script | 4 +-- 4 files changed, 35 insertions(+), 48 deletions(-) diff --git a/.travis.yml b/.travis.yml index dd7bcc64c2..df537be4fb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,15 +17,13 @@ matrix: - os: linux env: COMPILER_NAME=clang CXX=clang++ CC=clang - os: linux - env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson + env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson COVERAGE=1 - if: head_branch =~ ^fedora-* OR tag =~ ^release-* OR tag =~ ^fedora-* os: linux env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson R2_SYS_CAPSTONE=true R2_SYS_MAGIC=true R2_SYS_ZIP=true R2_SYS_LZ4=true R2_SYS_ZLIB=true - if: head_branch =~ ^asan-* OR tag =~ ^release-* OR type = push os: linux env: COMPILER_NAME=clang CXX=clang++ CC=clang CFLAGS="-O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" ASAN_OPTIONS=detect_odr_violation=0 LSAN_OPTIONS=detect_leaks=0 - - os: linux - env: COMPILER_NAME=gcc CXX=g++ CC=gcc COVERAGE=1 INSTALL_SYSTEM=meson - os: osx env: COMPILER_NAME=clang CXX=clang++ CC=clang allow_failures: @@ -33,13 +31,11 @@ matrix: env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson R2_SYS_CAPSTONE=true R2_SYS_MAGIC=true R2_SYS_ZIP=true R2_SYS_LZ4=true R2_SYS_ZLIB=true - os: linux env: COMPILER_NAME=clang CXX=clang++ CC=clang CFLAGS="-O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" ASAN_OPTIONS=detect_odr_violation=0 LSAN_OPTIONS=detect_leaks=0 - - os: linux - env: COMPILER_NAME=gcc CXX=g++ CC=gcc COVERAGE=1 INSTALL_SYSTEM=meson cache: - ccache before_install: - - if [ "$TRAVIS_OS_NAME" != "osx" ]; then docker pull radareorg/r2-travis || docker build -t radareorg/r2-travis:latest -f Dockerfile.travis . ; else rm -rf .nvm && git clone https://github.com/creationix/nvm.git .nvm && (cd .nvm && git checkout `git describe --abbrev=0 --tags`) && . .nvm/nvm.sh && nvm install 8.11.3; fi + - if [ "$TRAVIS_OS_NAME" != "osx" ]; then docker pull radareorg/r2-travis:latest || docker build -t radareorg/r2-travis:latest -f Dockerfile.travis . ; else rm -rf .nvm && git clone https://github.com/creationix/nvm.git .nvm && (cd .nvm && git checkout `git describe --abbrev=0 --tags`) && . .nvm/nvm.sh && nvm install 8.11.3; fi script: - export PR_NAME=$(echo $TRAVIS_PULL_REQUEST_SLUG | cut -d'/' -f1) @@ -50,8 +46,8 @@ script: - export R2R_BRANCH=$([ -n "${TRAVIS_PULL_REQUEST_BRANCH}" ] && echo "${TRAVIS_PULL_REQUEST_BRANCH}" || echo "${R2R_DEFAULT_BRANCH}") - if [ "${R2R_BRANCH}" = master ]; then USER_NAME=radare; fi - export R2R_REPO=$(doc/repo PR_REGRESSIONS | sed "s/__USER__/${USER_NAME}/g") - - if [ "$TRAVIS_OS_NAME" != "osx" ]; then bash ./travis-extract-var.sh > ${TRAVIS_BUILD_DIR}/docker-env.sh ; cat ${TRAVIS_BUILD_DIR}/docker-env.sh ; ci_env=`bash <(curl -s https://codecov.io/env)` ; echo "${ci_env}" ; fi - - if [ "$TRAVIS_OS_NAME" != "osx" ]; then docker run ${ci_env} -v /home/travis/.ccache:/root/.ccache -v ${TRAVIS_BUILD_DIR}:${TRAVIS_BUILD_DIR} --entrypoint "/bin/bash" radareorg/r2-travis:latest -c ". /src/.nvm/nvm.sh; cd ${TRAVIS_BUILD_DIR}; . docker-env.sh; bash travis-script"; else bash travis-script; fi + - if [ "$TRAVIS_OS_NAME" != "osx" ]; then bash ./travis-extract-var.sh > ${TRAVIS_BUILD_DIR}/docker-env.sh ; cat ${TRAVIS_BUILD_DIR}/docker-env.sh ; fi + - if [ "$TRAVIS_OS_NAME" != "osx" ]; then docker run -v /home/travis/.ccache:/root/.ccache -v ${TRAVIS_BUILD_DIR}:${TRAVIS_BUILD_DIR} --entrypoint "/bin/bash" radareorg/r2-travis:latest -c ". /src/.nvm/nvm.sh; cd ${TRAVIS_BUILD_DIR}; . docker-env.sh; bash travis-script"; else bash travis-script; fi notifications: irc: "chat.freenode.net#radare" diff --git a/Dockerfile.travis b/Dockerfile.travis index f9e31147e4..fa1a14027f 100644 --- a/Dockerfile.travis +++ b/Dockerfile.travis @@ -1,45 +1,33 @@ -FROM fedora:28 +FROM ubuntu:bionic MAINTAINER tbd WORKDIR /src -RUN dnf install -y \ - gcc \ - gcc-c++ \ - glibc.i686 \ - clang \ - llvm \ - make \ - patch \ - findutils \ - which \ - bison \ - curl \ - git \ - binutils \ - cabextract \ - libasan \ - libcurl-devel \ - elfutils-libelf-devel \ - elfutils-libelf-devel-static \ - libdwarf-devel \ - libdwarf-static \ - jq \ - pkgconf-pkg-config \ - glib2 \ - glib2-devel \ - ncurses-devel \ - capstone-devel \ - libzip-devel \ - file-devel \ - lz4-devel \ - gnupg2 \ - python2-pip \ - meson \ - ninja-build \ - xz +RUN apt-get update +RUN apt-get install -y \ + build-essential \ + gcc-multilib \ + llvm \ + clang \ + bison \ + git \ + curl \ + cabextract \ + libasan5 \ + jq \ + libncurses5 \ + libcapstone3 \ + libzip4 \ + liblz4-1 \ + gnupg2 \ + python-pip \ + python3-pip \ + pkg-config \ + liblzma5 \ + npm -RUN rm -rf /src/.nvm && git clone https://github.com/creationix/nvm.git /src/.nvm && (cd /src/.nvm && git checkout `git describe --abbrev=0 --tags`) && . /src/.nvm/nvm.sh && nvm install 8.11.3 +RUN pip3 install meson +RUN pip3 install ninja CMD [] diff --git a/travis-extract-var.sh b/travis-extract-var.sh index 85dfac62de..f55472a276 100644 --- a/travis-extract-var.sh +++ b/travis-extract-var.sh @@ -10,7 +10,7 @@ print_var() } env -0 | while IFS='=' read -r -d '' n v; do - if [[ "${n}" =~ ^TRAVIS_* || "${n}" =~ ^R2* || "${n}" =~ SAN_* ]]; then + if [[ "${n}" =~ ^TRAVIS* || "${n}" =~ ^R2* || "${n}" =~ SAN_* || "%{n}" =~ CODECOV_* || "%{n}" =~ VCS_* || "%{n}" =~ CI_* ]]; then print_var "${n}" "${v}" fi done @@ -21,6 +21,9 @@ print_var CXX "${CXX}" print_var CFLAGS "${CFLAGS}" print_var LDFLAGS "${LDFLAGS}" print_var CXXFLAGS "${CXXFLAGS}" +print_var TRAVIS "${TRAVIS}" print_var INSTALL_SYSTEM "${INSTALL_SYSTEM}" print_var MESON_OPTIONS "${MESON_OPTIONS}" print_var COVERAGE "${COVERAGE}" +print_var SHIPPABLE "${SHIPPABLE}" +print_var CI "${CI}" diff --git a/travis-script b/travis-script index 1a69a64804..a53350df0f 100644 --- a/travis-script +++ b/travis-script @@ -2,7 +2,7 @@ set -x export PATH=${TRAVIS_BUILD_DIR}/install/bin:${PATH} -export LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/install/lib:${TRAVIS_BUILD_DIR}/install/lib64:${LD_LIBRARY_PATH} +export LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/install/lib/$(uname -m)-linux-gnu:${TRAVIS_BUILD_DIR}/install/lib:${TRAVIS_BUILD_DIR}/install/lib64:${LD_LIBRARY_PATH} git clone --depth 1 --branch "${R2R_BRANCH}" "${R2R_REPO}" || true # If cloning fails that's not an error: we simply fallback to master. ls radare2-regressions >/dev/null 2>&1 || git clone --depth 1 --branch "${R2R_DEFAULT_BRANCH}" "${R2R_DEFAULT_REPO}" @@ -54,5 +54,5 @@ if [ "${COVERAGE}" == "1" ] ; then cd ../build curl -s https://codecov.io/bash > ./codecov.sh chmod +x ./codecov.sh - ./codecov.sh -v 2>/dev/null + ./codecov.sh -K -v 2>/dev/null fi