lcov falha no travis-ci

2

Estou tentando construir meu repositório git no travis-ci e acho que estou tendo um conflito entre a versão do gcc e o lcov. Meu .travis.yml tem esta aparência:

sudo: false

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - g++-4.8
      - lcov

script:
  - export CXX="g++-4.8"
  - export CC="gcc-4.8"
  - export GCOV="gcov-4.8"
  - make check

after_success:
  - lcov --capture --directory …;

e o erro é assim:

make check;
-- The CXX compiler identification is GNU 4.8.1
-- The C compiler identification is GNU 4.8.1
Building coverage information.
Found gcov version: 4.6.3
Processing gtest.dir/gtest/gmock_main.cc.gcda
geninfo: ERROR: /…/gmock_main.cc.gcno: reached unexpected end of file Reading tracefile coverage.info
lcov: ERROR: no valid records found in tracefile coverage.info

Eu assumo que é um problema que eu estou usando gcov-4.6.3 contra arquivos gerados pelo g ++ - 4.8, mas como eu posso especificar qual versão do gcov usar? (Eu não posso fazer o downgrade do g ++)

    
por bgp2000 29.11.2016 / 23:53

1 resposta

0

Eu acabei construindo o lcov-1.11 eu mesmo e substituindo a chamada para lcov com ${TRAVIS_BUILD_DIR}/lcov-1.11/bin/lcov --gcov-tool /usr/bin/gcov-4.8

Aqui está uma correção completa:

env:
  global:
    - BUILD_COVERAGE=${TRAVIS_BUILD_DIR}/coverage

after_success:
  # If GCC: compute code coverage and export it to coveralls
  - if [ "$CC" = "gcc-4.8" ];
    then
      cd ${TRAVIS_BUILD_DIR};
      wget http://downloads.sourceforge.net/ltp/lcov-1.11.tar.gz;
      tar xvfz lcov-1.11.tar.gz;
      make -C lcov-1.11;
      mkdir $BUILD_COVERAGE;
      cd $BUILD_COVERAGE;
      cmake ${TRAVIS_BUILD_DIR} -DBUILD_COVERAGE=ON;
      make check;
      ${TRAVIS_BUILD_DIR}/lcov-1.11/bin/lcov --gcov-tool /usr/bin/gcov-4.8  --capture --directory …;
    fi
    
por bgp2000 26.06.2017 / 14:10