From a672d3529676315235063c8a025e8be5b6bcdd40 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Wed, 24 Feb 2016 11:21:17 -0600 Subject: Merge release archive building CI from develop. --- .travis.yml | 244 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 240 insertions(+), 4 deletions(-) (limited to '.travis.yml') diff --git a/.travis.yml b/.travis.yml index 312d053abf..b1947d8465 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,244 @@ +# 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: - - ./bootstrap.sh - - ./b2 -n - - cd status - - ../b2 -n -d0 + # 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 -v -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 -v -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 -v -T "${BOOST_RELEASE}.zip" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.zip?publish=1" + curl -v -T "${BOOST_RELEASE}.7z" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.7z?publish=1" + fi -- cgit v1.2.1