mirror of
https://github.com/boostorg/spirit.git
synced 2026-01-19 04:42:11 +00:00
333 lines
12 KiB
YAML
333 lines
12 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
|
|
concurrency:
|
|
group: ${{format('{0}:{1}', github.repository, github.ref)}}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
PROJECT: libs/spirit
|
|
|
|
jobs:
|
|
posix:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: "C++17 test/x3"
|
|
buildtype: "boost"
|
|
packages: "clang-18 libc++-18-dev libc++abi-18-dev libunwind-18-dev jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "clang-18"
|
|
sources: ""
|
|
llvm_os: "jammy"
|
|
llvm_ver: "18"
|
|
std: "17"
|
|
job: "test/x3"
|
|
travis_compiler: "clang-18"
|
|
- name: "C++17 test/x3"
|
|
buildtype: "boost"
|
|
packages: "g++-13 jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "gcc-13"
|
|
sources: ""
|
|
llvm_os: ""
|
|
llvm_ver: ""
|
|
std: "17"
|
|
job: "test/x3"
|
|
travis_compiler: "gcc-13"
|
|
- name: "C++11 test/qi"
|
|
buildtype: "boost"
|
|
packages: "clang-14 libc++-14-dev libc++abi-14-dev libunwind-14-dev jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "clang-14"
|
|
sources: ""
|
|
llvm_os: "jammy"
|
|
llvm_ver: "14"
|
|
std: "11"
|
|
job: "test/qi"
|
|
travis_compiler: "clang-14"
|
|
- name: "C++11 test/karma"
|
|
buildtype: "boost"
|
|
packages: "clang-14 libc++-14-dev libc++abi-14-dev libunwind-14-dev jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "clang-14"
|
|
sources: ""
|
|
llvm_os: "jammy"
|
|
llvm_ver: "14"
|
|
std: "11"
|
|
job: "test/karma"
|
|
travis_compiler: "clang-14"
|
|
- name: "C++11 test/lex"
|
|
buildtype: "boost"
|
|
packages: "clang-14 libc++-14-dev libc++abi-14-dev libunwind-14-dev jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "clang-14"
|
|
sources: ""
|
|
llvm_os: "jammy"
|
|
llvm_ver: "14"
|
|
std: "11"
|
|
job: "test/lex"
|
|
travis_compiler: "clang-14"
|
|
- name: "C++11 test/support"
|
|
buildtype: "boost"
|
|
packages: "clang-14 libc++-14-dev libc++abi-14-dev libunwind-14-dev jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "clang-14"
|
|
sources: ""
|
|
llvm_os: "jammy"
|
|
llvm_ver: "14"
|
|
std: "11"
|
|
job: "test/support"
|
|
travis_compiler: "clang-14"
|
|
- name: "C++20 test/support"
|
|
buildtype: "boost"
|
|
packages: "clang-18 libc++-18-dev libc++abi-18-dev libunwind-18-dev jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "clang-18"
|
|
sources: ""
|
|
llvm_os: "jammy"
|
|
llvm_ver: "18"
|
|
std: "20"
|
|
job: "test/support"
|
|
travis_compiler: "clang-18"
|
|
- name: "C++11 repository/test"
|
|
buildtype: "boost"
|
|
packages: "clang-14 libc++-14-dev libc++abi-14-dev libunwind-14-dev jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "clang-14"
|
|
sources: ""
|
|
llvm_os: "jammy"
|
|
llvm_ver: "14"
|
|
std: "11"
|
|
job: "repository/test"
|
|
travis_compiler: "clang-14"
|
|
- name: "C++11 test/qi"
|
|
buildtype: "boost"
|
|
packages: "g++-11 jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "gcc-11"
|
|
sources: ""
|
|
llvm_os: ""
|
|
llvm_ver: ""
|
|
std: "11"
|
|
job: "test/qi"
|
|
travis_compiler: "gcc-11"
|
|
- name: "C++11 test/karma"
|
|
buildtype: "boost"
|
|
packages: "g++-11 jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "gcc-11"
|
|
sources: ""
|
|
llvm_os: ""
|
|
llvm_ver: ""
|
|
std: "11"
|
|
job: "test/karma"
|
|
travis_compiler: "gcc-11"
|
|
- name: "C++11 test/lex"
|
|
buildtype: "boost"
|
|
packages: "g++-11 jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "gcc-11"
|
|
sources: ""
|
|
llvm_os: ""
|
|
llvm_ver: ""
|
|
std: "11"
|
|
job: "test/lex"
|
|
travis_compiler: "gcc-11"
|
|
- name: "C++11 test/support"
|
|
buildtype: "boost"
|
|
packages: "g++-11 jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "gcc-11"
|
|
sources: ""
|
|
llvm_os: ""
|
|
llvm_ver: ""
|
|
std: "11"
|
|
job: "test/support"
|
|
travis_compiler: "gcc-11"
|
|
- name: "C++20 test/support"
|
|
buildtype: "boost"
|
|
packages: "g++-11 jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "gcc-11"
|
|
sources: ""
|
|
llvm_os: ""
|
|
llvm_ver: ""
|
|
std: "20"
|
|
job: "test/support"
|
|
travis_compiler: "gcc-11"
|
|
- name: "C++11 repository/test"
|
|
buildtype: "boost"
|
|
packages: "g++-11 jq ccache"
|
|
packages_to_remove: ""
|
|
os: "ubuntu-22.04"
|
|
cxx: "gcc-11"
|
|
sources: ""
|
|
llvm_os: ""
|
|
llvm_ver: ""
|
|
std: "11"
|
|
job: "repository/test"
|
|
travis_compiler: "gcc-11"
|
|
|
|
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: Initialize Ubuntu
|
|
if: matrix.os == 'ubuntu-22.04'
|
|
run: |
|
|
sudo echo "set man-db/auto-update false" | sudo debconf-communicate
|
|
sudo dpkg-reconfigure man-db
|
|
|
|
- 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 ;
|
|
|
|
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 warnings-as-errors=off define=BOOST_SPIRIT_X3_HIDE_CXX17_WARNING
|
|
|
|
fi
|