# Use, modification, and distribution are # subject to the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # # Copyright Rene Rivera 2015. branches: only: - master - develop sudo: required language: c compiler: - gcc git: # We avoid fetching submodules so that we can set the EOL # style to fetch them as needed. submodules: false addons: apt: packages: - p7zip-full - docutils-common - docutils-doc - docbook - docbook-xml - docbook-xsl - xsltproc - doxygen - dvipsk-ja - texlive env: global: - secure: "DC12OV65iyBzELywj19yI4S8DmmBmZO8hbT3Iq0kJ4yo0aMQzzJDsVpmm2Jwk/Qf/yLyBsAhkpanScJJ9eEekmK8OZN8H9EJ1kgai58IWk0gWKKzJ0lyQH/vsYEyfxCSwqejoIdd07nQh5B/1L5Th3I2vLT2udHUPU2Np/MKgUw=" matrix: - TRAVIS_EMPTY_JOB_WORKAROUND=true matrix: exclude: - env: TRAVIS_EMPTY_JOB_WORKAROUND=true include: # Simple integrated status tests check. - env: STATUS_TESTS=true # Build release package for LF end-of-line style text files. - env: RELEASE_BUILD=LF # Build release package for CRLF end-of-line style text files (i.e. for Windows). - env: RELEASE_BUILD=CRLF install: # Set where we will place all our build byproducts. - | export "BOOST_BUILD_DIR=${TRAVIS_BUILD_DIR}/../build" # We use RapidXML for some doc building tools. - | cd "${TRAVIS_BUILD_DIR}/.." wget -O rapidxml.zip http://sourceforge.net/projects/rapidxml/files/latest/download unzip -n -d rapidxml rapidxml.zip export RAPIDXML=`ls -1d ${PWD}/rapidxml/rapidxml-*` # Need docutils for building some docs. - | sudo pip install docutils before_script: # Fail the whole script whenever any command fails - | set -e # Fetch the rest of the Boost submodules in the appropriate # EOL style. - | if [[ "${STATUS_TESTS}" == "true" ]]; then cd "${TRAVIS_BUILD_DIR}" git submodule update --init --recursive fi - | if [[ "${RELEASE_BUILD}" == "LF" ]]; then cd "${TRAVIS_BUILD_DIR}" git config core.eol lf git config core.autocrlf false git rm --cache -r . git reset --quiet --hard HEAD git submodule update --init --recursive fi - | if [[ "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}" git config core.eol crlf git config core.autocrlf false git rm --cache -r . git reset --quiet --hard HEAD git submodule update --init --recursive fi script: # Simple integrated status tests check. Currently this only # veryfies that we will not get build system errors from things # like missing test files. - | if [[ "${STATUS_TESTS}" == "true" ]]; then cd "${TRAVIS_BUILD_DIR}" ./bootstrap.sh ./b2 -n cd status ../b2 -n -d0 fi # Build a packaged release. This involves building a fresh set # of docs and selectively packging parts of the tree. We try and # avoid creating extra files in the base tree to avoid including # extra stuff in the archives. Which means that we reset the git # tree state to cleanup after building. # Set up where we will "install" built tools. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then mkdir -p "${BOOST_BUILD_DIR}/dist/bin" export "PATH=${BOOST_BUILD_DIR}/dist/bin:${PATH}" fi # Bootstrap Boost Build engine. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/tools/build" ./bootstrap.sh cp -p b2 "${BOOST_BUILD_DIR}/dist/bin/b2" git clean -dfqx fi # Generate include dir structure. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}" b2 -q -d0 headers fi # Build doxygen_xml2qbk for building Boost Geometry docs. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk" b2 -q -d0 --build-dir="${BOOST_BUILD_DIR}" --distdir="${BOOST_BUILD_DIR}/dist" cd "${TRAVIS_BUILD_DIR}/libs/geometry" git clean -dfqx fi # Build Quickbook documentation tool. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/tools/quickbook" b2 -q -d0 --build-dir="${BOOST_BUILD_DIR}" --distdir="${BOOST_BUILD_DIR}/dist" git clean -dfqx fi # Build auto-index documentation tool. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/tools/auto_index/build" b2 -q -d0 --build-dir="${BOOST_BUILD_DIR}" --distdir="${BOOST_BUILD_DIR}/dist" cd "${TRAVIS_BUILD_DIR}/tools/auto_index" git clean -dfqx fi # Set up build config. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then echo "using quickbook : \"${BOOST_BUILD_DIR}/dist/bin/quickbook\" ;" >> "${HOME}/user-config.jam" echo "using auto-index : \"${BOOST_BUILD_DIR}/dist/bin/auto_index\" ;" >> "${HOME}/user-config.jam" echo "using docutils ;" >> "${HOME}/user-config.jam" echo "using doxygen ;" >> "${HOME}/user-config.jam" fi # Pre-build Boost Geometry docs. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/libs/geometry/doc" python make_qbk.py --release-build fi # Build the full docs, and all the submodule docs. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/doc" (while true ; do sleep 60 && echo "[[ ALIVE? ]]" ; done ;) & AWAKE_PID=$! b2 -q -d0 --build-dir="${BOOST_BUILD_DIR}" --distdir="${BOOST_BUILD_DIR}/dist" --release-build --enable-index kill $AWAKE_PID fi # Make the real distribution tree from the base tree. The # distribution tree is "marked" with the commit hash to be # able to track a package to the commit we test. - | if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/.." wget "https://raw.githubusercontent.com/boostorg/release-tools/develop/MakeBoostDistro.py" chmod +x MakeBoostDistro.py export BOOST_RELEASE=boost_${TRAVIS_BRANCH}_${TRAVIS_COMMIT} ./MakeBoostDistro.py "${TRAVIS_BUILD_DIR}" "${BOOST_RELEASE}" fi # Create packages for LF style content. - | if [[ "${RELEASE_BUILD}" == "LF" ]]; then cd "${TRAVIS_BUILD_DIR}/.." tar -zcf "${BOOST_RELEASE}.tar.gz" "${BOOST_RELEASE}" tar -cjf "${BOOST_RELEASE}.tar.bz2" "${BOOST_RELEASE}" ls -la fi # Create packages for CRLF style content. - | if [[ "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/.." zip -qr "${BOOST_RELEASE}.zip" "${BOOST_RELEASE}" 7z a -r "${BOOST_RELEASE}.7z" "${BOOST_RELEASE}" > /dev/null ls -la fi after_success: # Publish created packages depending on the EOL style and branch. # We post archives to distribution services. But currently we only # post master packages as they happen less often. And we are # unlikely to ever want anything else as a package for the # releases. - | if [[ "${TRAVIS_BRANCH}" == "master" && "${RELEASE_BUILD}" == "LF" ]]; then cd "${TRAVIS_BUILD_DIR}/.." curl -T "${BOOST_RELEASE}.tar.gz" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.tar.gz?publish=1" curl -T "${BOOST_RELEASE}.tar.bz2" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.tar.bz2?publish=1" fi - | if [[ "${TRAVIS_BRANCH}" == "master" && "${RELEASE_BUILD}" == "CRLF" ]]; then cd "${TRAVIS_BUILD_DIR}/.." curl -T "${BOOST_RELEASE}.zip" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.zip?publish=1" curl -T "${BOOST_RELEASE}.7z" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.7z?publish=1" fi