diff options
Diffstat (limited to '.travis.yml')
-rw-r--r-- | .travis.yml | 113 |
1 files changed, 86 insertions, 27 deletions
diff --git a/.travis.yml b/.travis.yml index b4999235..5f026e6c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,44 +1,103 @@ # Since the Travis CI environment http://docs.travis-ci.com/user/ci-environment/ -# provides GNU GCC 4.6, which does not support -std=c++11 GNU GCC 4.8 is -# installed. Additionally boost 1.55.0 is compiled from source, since in the -# Travis CI environment only boost 1.46 is available and no backported package -# was found on the net. +# provides GNU GCC 4.6, which does not support -std=c++11 GNU GCC 4.8 is installed + +# NOTE: Please validate this file after editing it using +# Travis WebLint http://lint.travis-ci.org/ +# or travis-yaml https://github.com/travis-ci/travis-yaml language: cpp compiler: - - clang - gcc + - clang +os: + - linux + - osx +sudo: false +cache: + apt: true + +env: + global: + # Boost version to use: + # _MIN is used when building the master branch + # _MAX is used when building any other branch + - BOOST_VERSION_MIN="1.49.0" + - BOOST_VERSION_MAX="1.58.0" + # List of required boost libraries to build + - BOOST_LIBS="date_time,filesystem,iostreams,python,regex,system,test" + # List of required Homebrew formulae to install + - BREWS="gmp,mpfr" + +matrix: + exclude: + - os: linux + compiler: clang + # Compiling ledger on Linux with clang + # either crashes clang or results in a ledger binary that crashes with SIGSEGV. + - os: osx + compiler: gcc + # On Mac OS X building ledger with GNU GCC 4.8 fails due to + # undefined symbols, maybe because boost was not being built with g++-4.8. + # Undefined symbols for architecture x86_64: + # "boost::re_detail::perl_matcher<char const*, std::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)", referenced from: + # boost::re_detail::perl_matcher<char const*, std::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(char const*, char const*, boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, char const*) in main.cc.o + # boost::re_detail::perl_matcher<char const*, std::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(char const*, char const*, boost::match_results<char const*, std::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, char const*) in global.cc.o + # "boost::re_detail::perl_matcher<char const*, std::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()", referenced from: + # bool boost::regex_search<char const*, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(char const*, char const*, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags) in main.cc.o + # bool boost::regex_search<char const*, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(char const*, char const*, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags) in global.cc.o + +addons: + apt: + sources: + - ubuntu-toolchain-r-test + #- boost-latest + packages: + - gcc-4.8 + - g++-4.8 + - libgmp-dev + - libmpfr-dev + - libedit-dev + #- libboost1.55-dev + #- libboost-test1.55-dev + #- libboost-regex1.55-dev + #- libboost-python1.55-dev + #- libboost-system1.55-dev + #- libboost-date-time1.55-dev + #- libboost-iostreams1.55-dev + #- libboost-filesystem1.55-dev + #- libboost-serialization1.55-dev before_install: - # Add software package repository, containing updated build toochain, i.e. GNU GCC 4.8 - - sudo add-apt-repository ppa:ubuntu-toolchain-r/test --yes - - sudo apt-get update -qq - # Download boost 1.55 and extract the source archive - - wget --no-verbose --output-document=boost-trunk.tar.bz2 http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2/download - - export BOOST_ROOT="$TRAVIS_BUILD_DIR/../boost-trunk" - - export CMAKE_MODULE_PATH="$BOOST_ROOT" - - mkdir -p $BOOST_ROOT - - tar jxf boost-trunk.tar.bz2 --strip-components=1 -C $BOOST_ROOT - -install: - # Install GNU GCC 4.8 required by use of C++11 - - sudo apt-get install -qq g++-4.8 gcc-4.8 - - export CXX="g++-4.8" CC="gcc-4.8" - # Build boost libraries required by ledger - - (cd $BOOST_ROOT; ./bootstrap.sh --with-libraries=date_time,filesystem,system,iostreams,regex,python,test) - - (cd $BOOST_ROOT; ./b2 threading=multi --prefix=$BOOST_ROOT -d0 install) - # Install further dependencies - - ./acprep dependencies + - if [ "${TRAVIS_BRANCH}" = "master" ]; then export BOOST_VERSION="${BOOST_VERSION_MIN}"; else export BOOST_VERSION="${BOOST_VERSION_MAX}"; fi + - if [ -n "${BOOST_VERSION}" ]; then export BOOST_ROOT="${TRAVIS_BUILD_DIR}/../boost-trunk"; export CMAKE_MODULE_PATH="${BOOST_ROOT}"; fi + - if [ "${CXX}" = "g++" ]; then export CXX="$(which g++-4.8)"; export CC="$(which gcc-4.8)"; fi + - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then export DYLD_LIBRARY_PATH="${BOOST_ROOT}/lib"; fi + # c++ is a symlink to clang++, but the compiler behaves differently when invoked as c++ + - if [ "${TRAVIS_OS_NAME}" = "osx" -a "${CXX}" = "clang++" ]; then export CXX="$(which c++)"; export CC="$(which cc)"; fi + - tools/travis-before_install.sh + +install: + - tools/travis-install.sh before_script: - - ./acprep opt make --python --boost=$BOOST_ROOT + - cmake . -DUSE_PYTHON=ON -DBUILD_DEBUG=ON + - make script: - - ./acprep check -- --output-on-failure + - make test - PYTHONPATH=. python python/demo.py +after_script: + # These scripts are run for informational purposes and + # should be reintegrated into CTest once they reliably verify the documentation. + - python test/CheckTexinfo.py -l ledger -s . + - python test/CheckManpage.py -l ledger -s . + notifications: email: on_success: change on_failure: change - irc: "chat.freenode.net#ledger" + irc: + channels: [ "chat.freenode.net#ledger" ] + on_success: change + on_failure: change |