| name: GitHub Actions CI |
| |
| on: |
| pull_request: |
| push: |
| branches: |
| - master |
| - develop |
| - githubactions* |
| - feature/** |
| - fix/** |
| - pr/** |
| |
| env: |
| PROJECT: libs/spirit |
| |
| jobs: |
| posix: |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - name: "STD=14 JOB=test/x3 Job 0" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "14" |
| job: "test/x3" |
| travis_compiler: "clang-10" |
| - name: "STD=14 JOB=test/x3 Job 1" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "14" |
| job: "test/x3" |
| travis_compiler: "gcc-10" |
| - name: "STD=11 JOB=test/qi Job 2" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "11" |
| job: "test/qi" |
| travis_compiler: "clang-10" |
| - name: "STD=11 JOB=test/karma Job 3" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "11" |
| job: "test/karma" |
| travis_compiler: "clang-10" |
| - name: "STD=11 JOB=test/lex Job 4" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "11" |
| job: "test/lex" |
| travis_compiler: "clang-10" |
| - name: "STD=11 JOB=test/support Job 5" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "11" |
| job: "test/support" |
| travis_compiler: "clang-10" |
| - name: "STD=11 JOB=repository/test Job 6" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "11" |
| job: "repository/test" |
| travis_compiler: "clang-10" |
| - name: "STD=03 JOB=test/qi Job 7" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "03" |
| job: "test/qi" |
| travis_compiler: "clang-10" |
| - name: "STD=03 JOB=test/karma Job 8" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "03" |
| job: "test/karma" |
| travis_compiler: "clang-10" |
| - name: "STD=03 JOB=test/lex Job 9" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "03" |
| job: "test/lex" |
| travis_compiler: "clang-10" |
| - name: "STD=03 JOB=test/support Job 10" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "03" |
| job: "test/support" |
| travis_compiler: "clang-10" |
| - name: "STD=03 JOB=repository/test Job 11" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "03" |
| job: "repository/test" |
| travis_compiler: "clang-10" |
| - name: "STD=11 JOB=test/qi Job 12" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "11" |
| job: "test/qi" |
| travis_compiler: "gcc-10" |
| - name: "STD=11 JOB=test/karma Job 13" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "11" |
| job: "test/karma" |
| travis_compiler: "gcc-10" |
| - name: "STD=11 JOB=test/lex Job 14" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "11" |
| job: "test/lex" |
| travis_compiler: "gcc-10" |
| - name: "STD=11 JOB=test/support Job 15" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "11" |
| job: "test/support" |
| travis_compiler: "gcc-10" |
| - name: "STD=11 JOB=repository/test Job 16" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "11" |
| job: "repository/test" |
| travis_compiler: "gcc-10" |
| - name: "STD=03 JOB=test/qi Job 17" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "03" |
| job: "test/qi" |
| travis_compiler: "gcc-10" |
| - name: "STD=03 JOB=test/karma Job 18" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "03" |
| job: "test/karma" |
| travis_compiler: "gcc-10" |
| - name: "STD=03 JOB=test/lex Job 19" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "03" |
| job: "test/lex" |
| travis_compiler: "gcc-10" |
| - name: "STD=03 JOB=test/support Job 20" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "03" |
| job: "test/support" |
| travis_compiler: "gcc-10" |
| - name: "STD=03 JOB=repository/test Job 21" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "03" |
| job: "repository/test" |
| travis_compiler: "gcc-10" |
| - name: "STD=03 JOB=classic/test Job 22" |
| buildtype: "boost" |
| packages: "clang-10 libc++-10-dev libc++abi-10-dev jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "clang-10" |
| sources: "" |
| llvm_os: "bionic" |
| llvm_ver: "10" |
| std: "03" |
| job: "classic/test" |
| travis_compiler: "clang-10" |
| - name: "STD=03 JOB=classic/test Job 23" |
| buildtype: "boost" |
| packages: "g++-10 jq ccache" |
| packages_to_remove: "" |
| os: "ubuntu-18.04" |
| cxx: "gcc-10" |
| sources: "" |
| llvm_os: "" |
| llvm_ver: "" |
| std: "03" |
| job: "classic/test" |
| travis_compiler: "gcc-10" |
| |
| runs-on: ${{ matrix.os }} |
| container: ${{ matrix.container }} |
| |
| steps: |
| - name: Check if running in container |
| if: matrix.container != '' |
| run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV |
| |
| - uses: actions/checkout@v2 |
| |
| - name: linux |
| shell: bash |
| env: |
| CXX: ${{ matrix.cxx }} |
| SOURCES: ${{ matrix.sources }} |
| LLVM_OS: ${{ matrix.llvm_os }} |
| LLVM_VER: ${{ matrix.llvm_ver }} |
| PACKAGES: ${{ matrix.packages }} |
| PACKAGES_TO_REMOVE: ${{ matrix.packages_to_remove }} |
| JOB_BUILDTYPE: ${{ matrix.buildtype }} |
| STD: ${{ matrix.std }} |
| JOB: ${{ matrix.job }} |
| TRAVIS_COMPILER: ${{ matrix.travis_compiler }} |
| TRAVIS_BRANCH: ${{ github.base_ref }} |
| TRAVIS_OS_NAME: "linux" |
| run: | |
| echo '==================================> SETUP' |
| echo '==================================> PACKAGES' |
| set -e |
| if [ -n "$PACKAGES_TO_REMOVE" ]; then sudo apt-get purge -y $PACKAGES_TO_REMOVE; fi |
| echo ">>>>> APT: REPO.." |
| for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done |
| |
| if test -n "${LLVM_OS}" ; then |
| wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - |
| if test -n "${LLVM_VER}" ; then |
| sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main" |
| else |
| # Snapshot (i.e. trunk) build of clang |
| sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS} main" |
| fi |
| fi |
| echo ">>>>> APT: UPDATE.." |
| sudo -E apt-get -o Acquire::Retries=3 update |
| if test -n "${SOURCES}" ; then |
| echo ">>>>> APT: INSTALL SOURCES.." |
| for SOURCE in $SOURCES; do |
| sudo -E apt-add-repository ppa:$SOURCE |
| done |
| fi |
| echo ">>>>> APT: INSTALL ${PACKAGES}.." |
| sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES} |
| |
| echo '==================================> INSTALL AND COMPILE' |
| set -e |
| export TRAVIS_BUILD_DIR=$(pwd) |
| export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')} |
| export VCS_COMMIT_ID=$GITHUB_SHA |
| export GIT_COMMIT=$GITHUB_SHA |
| export REPO_NAME=$(basename $GITHUB_REPOSITORY) |
| export USER=$(whoami) |
| export CC=${CC:-gcc} |
| export PATH=~/.local/bin:/usr/local/bin:$PATH |
| export BOOST_ROOT="$HOME/boost" |
| export BOOST_BUILD_PATH="$HOME/build-boost" |
| export GITHUB_EVENT_NUMBER=${{ github.event.number }} |
| export TRAVIS_PULL_REQUEST=${GITHUB_EVENT_NUMBER:-false} |
| export TRAVIS_REPO_SLUG=$REPO_NAME |
| |
| |
| if [ "$JOB_BUILDTYPE" == "boost" ]; then |
| |
| echo '==================================> INSTALL' |
| |
| export CACHE_NAME=$TRAVIS_OS_NAME-$TOOLSET-$STD-$JOB |
| export PATH=$BOOST_ROOT:$PATH |
| if [[ "$TRAVIS_COMPILER" =~ ^clang- ]]; then export STDLIB=stdlib=libc++ ; fi |
| # Creating ~/user-config.jam file |
| sed 's/^ //' > ~/user-config.jam << 'EOF' |
| |
| import feature ; |
| import os ; |
| import regex ; |
| import toolset ; |
| |
| |
| local TOOLSET = [ os.environ TRAVIS_COMPILER ] ; |
| local toolset-parts = [ regex.split $(TOOLSET) "-" ] ; |
| local toolset-name = $(toolset-parts[1]) ; |
| local toolset-feature = $(toolset-parts[2-]:J="-") ; |
| |
| local cxx ; |
| switch $(toolset-name) { |
| case gcc : cxx ?= [ regex.replace $(TOOLSET) "gcc" "g++" ] ; |
| case clang : cxx ?= [ regex.replace $(TOOLSET) "clang" "clang++" ] ; |
| case * : EXIT "user-config: Unsupported toolset $(toolset-name)" ; |
| } |
| |
| using $(toolset-name) : $(toolset-feature) : ccache $(cxx) ; |
| |
| # Release variant with enabled asserts |
| variant sanitize : <optimization>speed <debug-symbols>off <inlining>full |
| <runtime-debugging>off ; |
| |
| # Ignore some warnings |
| feature.feature known-warnings : suppress : optional incidental propagated ; |
| toolset.flags gcc.compile OPTIONS <known-warnings>suppress : |
| -Wno-maybe-uninitialized # this warning is known to give false positives |
| # -Wextra warnings: |
| -Wno-deprecated-copy # Proto, Phoenix, GCC bug 92145 |
| : unchecked ; |
| toolset.flags clang-linux.compile OPTIONS <known-warnings>suppress : |
| -Wno-deprecated-copy # Proto, Phoenix |
| : unchecked ; |
| |
| EOF |
| # Determining the root branch |
| if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then |
| export BRANCH=$TRAVIS_BRANCH |
| else |
| # It is a pull request. Retrieve the base branch from GitHub |
| GH_PR_API=https://api.github.com/repos/$TRAVIS_REPO_SLUG/pulls/$TRAVIS_PULL_REQUEST |
| export BRANCH=`curl -s $GH_PR_API | jq -r .head.ref`; |
| fi |
| if [[ ! "$BRANCH" =~ ^(master|develop)$ ]]; then |
| # Travis has been triggered not from our main branches. |
| # Find out the base branch from the git history |
| # TODO: Not implemented yet, but in most cases it will be develop branch |
| export BRANCH=develop |
| fi |
| echo Root branch is $BRANCH |
| |
| env |
| sed 's/--depth=1/--depth=9/g' `which git` > ~/git && chmod +x ~/git |
| ~/git clone -j10 --branch=$BRANCH --depth=1 --quiet --recurse-submodules=":(exclude)$PROJECT" --shallow-submodules https://github.com/boostorg/boost.git $BOOST_ROOT |
| pushd $BOOST_ROOT |
| rm -rf $PROJECT |
| ./bootstrap.sh --with-toolset=clang |
| ./b2 headers |
| cp -rp $TRAVIS_BUILD_DIR $PROJECT |
| ln -s $PROJECT $TRAVIS_BUILD_DIR |
| cd $PROJECT |
| cd $JOB |
| |
| echo '==================================> SCRIPT' |
| |
| b2 link=shared threading=multi variant=release,sanitize toolset=$TRAVIS_COMPILER cxxstd=$STD $STDLIB warnings=extra known-warnings=suppress warnings-as-errors=on |
| |
| fi |