Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
177 additions
and
178 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,191 +1,190 @@ | ||
name: GitHub Actions CI | ||
name: CI | ||
|
||
on: | ||
pull_request: | ||
push: | ||
branches: | ||
- master | ||
- develop | ||
- githubactions* | ||
- feature/** | ||
- fix/** | ||
- pr/** | ||
|
||
env: | ||
UBSAN_OPTIONS: print_stacktrace=1 | ||
|
||
jobs: | ||
posix: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- name: "GCC-8" | ||
buildtype: "boost" | ||
packages: "g++-8" | ||
packages_to_remove: "" | ||
os: "ubuntu-16.04" | ||
cxx: "g++" | ||
sources: "" | ||
llvm_os: "" | ||
llvm_ver: "" | ||
b2_args: "cxxstd=98,03,11,14,1z toolset=gcc-8 cxxflags=\"--coverage -fsanitize=address,leak,undefined -fno-sanitize-recover=undefined -DBOOST_TRAVISCI_BUILD\" linkflags=\"--coverage -lasan -lubsan\" \"testing.launcher=LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.5\"" | ||
gcovtool: "gcov-8" | ||
- name: "GCC-4.6" | ||
buildtype: "boost" | ||
packages: "g++-4.6" | ||
packages_to_remove: "" | ||
os: "ubuntu-16.04" | ||
cxx: "g++" | ||
sources: "" | ||
llvm_os: "" | ||
llvm_ver: "" | ||
b2_args: "cxxstd=98,0x toolset=gcc-4.6 cxxflags=\"--coverage -DBOOST_TRAVISCI_BUILD\" linkflags=\"--coverage\"" | ||
gcovtool: "gcov-4.6" | ||
- name: "Clang-8" | ||
buildtype: "boost" | ||
packages: "clang-8 g++" | ||
packages_to_remove: "" | ||
os: "ubuntu-16.04" | ||
cxx: "g++" | ||
sources: "" | ||
llvm_os: "xenial" | ||
llvm_ver: "8" | ||
b2_args: "cxxstd=98,03,11,14,1z toolset=clang-8 cxxflags=\"--coverage -fsanitize=address,leak,undefined -fno-sanitize-recover=undefined -DBOOST_TRAVISCI_BUILD\" linkflags=\"--coverage -fsanitize=address,leak,undefined\"" | ||
gcovtool: "gcov_for_clang.sh" | ||
- name: "Clang-8 libc++" | ||
buildtype: "boost" | ||
packages: "clang-8 libc++-8-dev libc++abi-8-dev" | ||
packages_to_remove: "" | ||
os: "ubuntu-16.04" | ||
cxx: "g++" | ||
sources: "" | ||
llvm_os: "xenial" | ||
llvm_ver: "8" | ||
b2_args: "cxxstd=03,11,14 toolset=clang-8 cxxflags=\"-stdlib=libc++ --coverage -DBOOST_TRAVISCI_BUILD\" linkflags=\"-stdlib=libc++ --coverage\"" | ||
gcovtool: "gcov_for_clang.sh" | ||
|
||
runs-on: ${{ matrix.os }} | ||
container: ${{ matrix.container }} | ||
- toolset: gcc-4.8 | ||
cxxstd: "03,11" | ||
os: ubuntu-16.04 | ||
install: g++-4.8 | ||
- toolset: gcc-7 | ||
cxxstd: "03,11,14,17" | ||
os: ubuntu-18.04 | ||
- toolset: gcc-9 | ||
cxxstd: "03,11,14,17,2a" | ||
os: ubuntu-18.04 | ||
- toolset: gcc-10 | ||
cxxstd: "03,11,14,17,2a" | ||
os: ubuntu-18.04 | ||
cxxflags: "cxxflags=--coverage -fsanitize=address,leak,undefined -fno-sanitize-recover=undefined" | ||
linkflags: "linkflags=--coverage -lasan -lubsan" | ||
gcov_tool: "gcov-10" | ||
- toolset: clang | ||
compiler: clang++-3.7 | ||
cxxstd: "03,11,14" | ||
os: ubuntu-16.04 | ||
install: clang-3.7 | ||
- toolset: clang | ||
compiler: clang++-9 | ||
cxxstd: "03,11,14,17,2a" | ||
os: ubuntu-20.04 | ||
cxxflags: "cxxflags=--coverage" | ||
linkflags: "linkflags=--coverage" | ||
gcov_tool: "llvm-cov-9 gcov" | ||
- toolset: clang | ||
compiler: clang++-10 | ||
cxxstd: "03,11,14,17,2a" | ||
os: ubuntu-20.04 | ||
- toolset: clang | ||
cxxstd: "03,11,14,17,2a" | ||
os: macos-10.15 | ||
cxxflags: "cxxflags=-fsanitize=address,undefined -fno-sanitize-recover=undefined" | ||
linkflags: "linkflags=-fsanitize=address,undefined" | ||
|
||
steps: | ||
- name: Check if running in container | ||
if: matrix.container != '' | ||
run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV | ||
runs-on: ${{matrix.os}} | ||
|
||
steps: | ||
- 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 }} | ||
B2_ARGS: ${{ matrix.b2_args }} | ||
GCOVTOOL: ${{ matrix.gcovtool }} | ||
TRAVIS_BRANCH: ${{ github.base_ref }} | ||
TRAVIS_OS_NAME: "linux" | ||
- name: Install packages | ||
if: matrix.install | ||
run: sudo apt install ${{matrix.install}} | ||
|
||
- name: Setup Boost | ||
run: | | ||
echo '==================================> SETUP' | ||
echo '==================================> PACKAGES' | ||
sudo ln -s /usr/bin/llvm-cov-9 /usr/bin/llvm-cov | ||
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 | ||
if [ "$JOB_BUILDTYPE" == "boost" ]; then | ||
echo '==================================> INSTALL' | ||
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true | ||
IGNORE_COVERAGE='' | ||
BOOST_LIBS_FOLDER=$(basename $REPO_NAME) | ||
UBSAN_OPTIONS=print_stacktrace=1 | ||
LSAN_OPTIONS=verbosity=1:log_threads=1 | ||
BOOST=$HOME/boost-local | ||
git clone -b $BOOST_BRANCH --depth 10 https://github.com/boostorg/boost.git $BOOST | ||
cd $BOOST | ||
git submodule update --init --depth 10 --jobs 2 tools/build tools/boostdep tools/inspect libs/filesystem | ||
python tools/boostdep/depinst/depinst.py --git_args "--depth 10 --jobs 2" $BOOST/libs/filesystem | ||
echo "Testing $BOOST/libs/$BOOST_LIBS_FOLDER moved from $TRAVIS_BUILD_DIR, branch $BOOST_BRANCH" | ||
rm -rf $BOOST/libs/$BOOST_LIBS_FOLDER || true | ||
cp -rp $TRAVIS_BUILD_DIR $BOOST/libs/$BOOST_LIBS_FOLDER | ||
python tools/boostdep/depinst/depinst.py --git_args "--depth 10 --jobs 2" $BOOST_LIBS_FOLDER | ||
git status | ||
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY | ||
LIBRARY=${GITHUB_REPOSITORY#*/} | ||
echo LIBRARY: $LIBRARY | ||
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV | ||
echo GITHUB_BASE_REF: $GITHUB_BASE_REF | ||
echo GITHUB_REF: $GITHUB_REF | ||
REF=${GITHUB_BASE_REF:-$GITHUB_REF} | ||
REF=${REF#refs/heads/} | ||
echo REF: $REF | ||
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true | ||
echo BOOST_BRANCH: $BOOST_BRANCH | ||
cd .. | ||
git clone -b $BOOST_BRANCH --depth 10 https://github.com/boostorg/boost.git boost-root | ||
cd boost-root | ||
git submodule update --init --depth 10 --jobs 2 tools/boostdep tools/inspect libs/filesystem | ||
python tools/boostdep/depinst/depinst.py --git_args "--depth 10 --jobs 3" filesystem | ||
rm -rf libs/$LIBRARY/* | ||
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY | ||
python tools/boostdep/depinst/depinst.py --include benchmark --include example --include examples --include tools --git_args "--depth 10 --jobs 3" $LIBRARY | ||
./bootstrap.sh | ||
./b2 headers | ||
./b2 -d0 headers | ||
./b2 -j4 variant=debug tools/inspect/build | ||
echo "using gcc ;" >> ~/user-config.jam | ||
echo "using clang ;" >> ~/user-config.jam | ||
echo "using clang : 3.8 : clang++-3.8 ;" >> ~/user-config.jam | ||
echo "using clang : 4 : clang++-4.0 ;" >> ~/user-config.jam | ||
echo "using clang : 5 : clang++-5.0 ;" >> ~/user-config.jam | ||
echo "using clang : 6 : clang++-6.0 ;" >> ~/user-config.jam | ||
echo "using clang : 7 : clang++-7.0 ;" >> ~/user-config.jam | ||
echo "using clang : 8 : clang++-8 ;" >> ~/user-config.jam | ||
echo "using clang : libc++ : clang++-libc++ ;" >> ~/user-config.jam | ||
cd $BOOST/libs/$BOOST_LIBS_FOLDER/test/ | ||
echo '==================================> SCRIPT' | ||
sh -c "../../../b2 -j2 $B2_ARGS" | ||
../../../dist/bin/inspect .. -license -copyright -crlf -end -path_name -tab -ascii -apple_macro -deprecated_macro -minmax -unnamed | ||
echo '==================================> AFTER_SUCCESS' | ||
mkdir -p $TRAVIS_BUILD_DIR/coverals | ||
find ../../../bin.v2/ -name "*.gcda" -exec cp "{}" $TRAVIS_BUILD_DIR/coverals/ \; | ||
find ../../../bin.v2/ -name "*.gcno" -exec cp "{}" $TRAVIS_BUILD_DIR/coverals/ \; | ||
find ../../../bin.v2/ -name "*.da" -exec cp "{}" $TRAVIS_BUILD_DIR/coverals/ \; | ||
find ../../../bin.v2/ -name "*.no" -exec cp "{}" $TRAVIS_BUILD_DIR/coverals/ \; | ||
wget https://github.com/linux-test-project/lcov/archive/v1.14.zip | ||
unzip v1.14.zip | ||
LCOV="`pwd`/lcov-1.14/bin/lcov --gcov-tool $GCOVTOOL" | ||
mkdir -p ~/.local/bin | ||
echo -e '#!/bin/bash\nexec llvm-cov gcov "$@"' > ~/.local/bin/gcov_for_clang.sh | ||
chmod 755 ~/.local/bin/gcov_for_clang.sh | ||
echo "$LCOV --directory $TRAVIS_BUILD_DIR/coverals --base-directory `pwd` --capture --output-file $TRAVIS_BUILD_DIR/coverals/coverage.info" | ||
$LCOV --directory $TRAVIS_BUILD_DIR/coverals --base-directory `pwd` --capture --output-file $TRAVIS_BUILD_DIR/coverals/coverage.info | ||
cd $BOOST | ||
$LCOV --remove $TRAVIS_BUILD_DIR/coverals/coverage.info "/usr*" "*/$BOOST_LIBS_FOLDER/test/*" $IGNORE_COVERAGE "*/$BOOST_LIBS_FOLDER/tests/*" "*/$BOOST_LIBS_FOLDER/examples/*" "*/$BOOST_LIBS_FOLDER/example/*" -o $TRAVIS_BUILD_DIR/coverals/coverage.info | ||
OTHER_LIBS=`grep "submodule .*" .gitmodules | sed 's/\[submodule\ "\(.*\)"\]/"\*\/boost\/\1\.hpp" "\*\/boost\/\1\/\*"/g'| sed "/\"\*\/boost\/$BOOST_LIBS_FOLDER\/\*\"/d" | sed ':a;N;$!ba;s/\n/ /g'` | ||
- name: Create user-config.jam | ||
if: matrix.compiler | ||
run: | | ||
echo "using ${{matrix.toolset}} : : ${{matrix.compiler}} ;" > ~/user-config.jam | ||
- name: Run tests | ||
run: | | ||
cd ../boost-root | ||
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release "${{matrix.cxxflags}}" "${{matrix.linkflags}}" "${{matrix.launcher}}" | ||
dist/bin/inspect libs/$LIBRARY | ||
- name: Prepare coverage data | ||
if: matrix.gcov_tool | ||
run: | | ||
mkdir -p $GITHUB_WORKSPACE/coveralls | ||
echo -e "#!/bin/bash\nexec ${{matrix.gcov_tool}} \"\$@\"" > $GITHUB_WORKSPACE/coveralls/gcov_wrapper.sh | ||
chmod +x $GITHUB_WORKSPACE/coveralls/gcov_wrapper.sh | ||
wget https://github.com/linux-test-project/lcov/archive/v1.15.zip | ||
unzip v1.15.zip | ||
LCOV="`pwd`/lcov-1.15/bin/lcov --gcov-tool $GITHUB_WORKSPACE/coveralls/gcov_wrapper.sh" | ||
echo "$LCOV --directory ../boost-root/bin.v2/libs/$LIBRARY/ --base-directory `pwd`/libs/$LIBRARY/test --capture --output-file $GITHUB_WORKSPACE/coveralls/coverage.info" | ||
$LCOV --directory ../boost-root/bin.v2/libs/$LIBRARY/ --base-directory ../boost-root/ --capture --output-file $GITHUB_WORKSPACE/coveralls/coverage.info | ||
$LCOV --remove $GITHUB_WORKSPACE/coveralls/coverage.info "/usr*" "*/$LIBRARY/test/*" ${{matrix.ignore_coverage}} "*/$LIBRARY/tests/*" "*/$LIBRARY/examples/*" "*/$LIBRARY/example/*" -o $GITHUB_WORKSPACE/coveralls/coverage.info | ||
cd ../boost-root | ||
OTHER_LIBS=`grep "submodule .*" .gitmodules | sed 's/\[submodule\ "\(.*\)"\]/"\*\/boost\/\1\.hpp" "\*\/boost\/\1\/\*"/g'| sed "/\"\*\/boost\/$LIBRARY\/\*\"/d" | sed ':a;N;$!ba;s/\n/ /g'` | ||
echo $OTHER_LIBS | ||
eval "$LCOV --remove $TRAVIS_BUILD_DIR/coverals/coverage.info $OTHER_LIBS -o $TRAVIS_BUILD_DIR/coverals/coverage.info" | ||
cd $TRAVIS_BUILD_DIR | ||
sudo gem install coveralls-lcov || echo "ERROR. Failed to install coveralls-lcov" | ||
coveralls-lcov coverals/coverage.info | ||
eval "$LCOV --remove $GITHUB_WORKSPACE/coveralls/coverage.info $OTHER_LIBS -o $GITHUB_WORKSPACE/coveralls/coverage.info" | ||
- name: Coveralls | ||
uses: coverallsapp/github-action@master | ||
if: matrix.gcov_tool | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
path-to-lcov: ./coveralls/coverage.info | ||
parallel: true | ||
|
||
fi | ||
windows: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- toolset: msvc-14.1 | ||
cxxstd: "14,17,latest" | ||
addrmd: 32,64 | ||
os: windows-2016 | ||
- toolset: msvc-14.2 | ||
cxxstd: "14,17,latest" | ||
addrmd: 32,64 | ||
os: windows-2019 | ||
- toolset: gcc | ||
cxxstd: "03,11,14,17,2a" | ||
addrmd: 64 | ||
os: windows-2019 | ||
|
||
runs-on: ${{matrix.os}} | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: Setup Boost | ||
shell: cmd | ||
run: | | ||
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY% | ||
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi | ||
echo LIBRARY: %LIBRARY% | ||
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV% | ||
echo GITHUB_BASE_REF: %GITHUB_BASE_REF% | ||
echo GITHUB_REF: %GITHUB_REF% | ||
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% | ||
set BOOST_BRANCH=develop | ||
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master | ||
echo BOOST_BRANCH: %BOOST_BRANCH% | ||
cd .. | ||
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root | ||
cd boost-root | ||
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\ | ||
git submodule update --init tools/boostdep | ||
python tools/boostdep/depinst/depinst.py --include benchmark --include example --include examples --include tools --git_args "--jobs 3" %LIBRARY% | ||
cmd /c bootstrap | ||
b2 -d0 headers | ||
- name: Run tests | ||
shell: cmd | ||
run: | | ||
cd ../boost-root | ||
b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release | ||
finish: | ||
needs: posix | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Coveralls Finished | ||
uses: coverallsapp/github-action@master | ||
with: | ||
github-token: ${{ secrets.github_token }} | ||
parallel-finished: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.