diff options
author | Alexis Hildebrandt <afh@surryhill.net> | 2015-07-29 00:21:08 +0200 |
---|---|---|
committer | Alexis Hildebrandt <afh@surryhill.net> | 2015-07-31 03:30:58 +0200 |
commit | 81ee98c17c96aed21d437457e4917fe6a3a8c47b (patch) | |
tree | 67e6787ebebef30ffbca4cd93ce8d0ed42a37594 | |
parent | 3008a6a6bed9dcc98981d4c66e978eb6eacf1e02 (diff) | |
download | fork-ledger-81ee98c17c96aed21d437457e4917fe6a3a8c47b.tar.gz fork-ledger-81ee98c17c96aed21d437457e4917fe6a3a8c47b.tar.bz2 fork-ledger-81ee98c17c96aed21d437457e4917fe6a3a8c47b.zip |
[travis] Add multi-os build configuration
and use a custom build of boost.
-rw-r--r-- | .travis.yml | 66 | ||||
-rwxr-xr-x | tools/travis-before_install.sh | 16 | ||||
-rwxr-xr-x | tools/travis-install.sh | 22 |
3 files changed, 92 insertions, 12 deletions
diff --git a/.travis.yml b/.travis.yml index c573057d..abfa903b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,35 +7,75 @@ language: cpp compiler: - - clang - gcc + - clang +os: + - linux + - osx sudo: false cache: apt: true +env: + global: + # Boost version to use. + - BOOST_VERSION="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 + #- 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 + #- 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: + - 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: - - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi - cmake . -DUSE_PYTHON=ON -DBUILD_DEBUG=ON - make @@ -44,6 +84,8 @@ script: - 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 . diff --git a/tools/travis-before_install.sh b/tools/travis-before_install.sh new file mode 100755 index 00000000..fe010945 --- /dev/null +++ b/tools/travis-before_install.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +#set -x +set -e +set -o pipefail + +if [ "${TRAVIS_OS_NAME}" = "osx" ]; then + brew update +fi + +if [ -n "${BOOST_VERSION}" ]; then + mkdir -p $BOOST_ROOT + wget --no-verbose --output-document=- \ + http://sourceforge.net/projects/boost/files/boost/${BOOST_VERSION}/boost_${BOOST_VERSION//./_}.tar.bz2/download \ + | tar jxf - --strip-components=1 -C "${BOOST_ROOT}" +fi diff --git a/tools/travis-install.sh b/tools/travis-install.sh new file mode 100755 index 00000000..4e8bdc48 --- /dev/null +++ b/tools/travis-install.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +#set -x +set -e +set -o pipefail + +if [ "${TRAVIS_OS_NAME}" = "osx" ]; then + for formula in $(echo "${BREWS//,/ }"); do + echo "Checking ${formula} formula" + brew outdated "${formula}" \ + || (brew unlink "${formula}" + brew install "${formula}" + ) + done +fi + +if [ -d "${BOOST_ROOT}" ]; then + (cd "${BOOST_ROOT}" + ./bootstrap.sh --with-libraries="${BOOST_LIBS}" + ./b2 threading=multi --prefix="${BOOST_ROOT}" -d0 install + ) +fi |