Added github actions.

Fixed enum qualifier.
This commit is contained in:
Takatoshi Kondo
2019-12-10 16:32:36 +09:00
parent 8085ab8721
commit 8dc865d92d
3 changed files with 329 additions and 7 deletions

320
.github/workflows/gha.yml vendored Normal file
View File

@@ -0,0 +1,320 @@
name: CI
on:
pull_request:
types: [opened, synchronize]
push:
branches:
- master
tags:
- '*'
jobs:
macos:
runs-on: macos-latest
strategy:
matrix:
pattern: [0, 1, 2, 3]
steps:
- uses: actions/checkout@v1
- name: install boost
run: |
brew install boost
- name: build and test
env:
CC: clang
CXX: clang++
shell: bash
run: |
BASE=`pwd`;
mkdir ${BASE}/usr;
# matrix config
if [ ${{ matrix.pattern }} == 0 ]; then
ACTION="ci/build_cmake.sh"
export CXX17="ON"
export ARCH="64"
export BOOST="ON"
SHARED="ON"
export CHAR_SIGN="unsigned"
export API_VERSION="1"
fi
if [ ${{ matrix.pattern }} == 1 ]; then
ACTION="ci/build_cmake.sh"
export CXX17="ON"
export ARCH="64"
export BOOST="ON"
export SHARED="ON"
export CHAR_SIGN="signed"
export API_VERSION="3"
fi
if [ ${{ matrix.pattern }} == 2 ]; then
ACTION="ci/build_cmake.sh"
export CXX17="ON"
export ARCH="64"
export SHARED="ON"
export CHAR_SIGN="signed"
export API_VERSION="2"
fi
if [ ${{ matrix.pattern }} == 3 ]; then
ACTION="ci/build_cmake.sh"
export ARCH="64"
export SHARED="ON"
export CHAR_SIGN="unsigned"
export API_VERSION="2"
fi
# install gtest
wget https://github.com/google/googletest/archive/release-1.7.0.zip -O googletest-release-1.7.0.zip
unzip -q googletest-release-1.7.0.zip
cd googletest-release-1.7.0
$CXX -m${ARCH} src/gtest-all.cc -I. -Iinclude -c
$CXX -m${ARCH} src/gtest_main.cc -I. -Iinclude -c
ar -rv libgtest.a gtest-all.o
ar -rv libgtest_main.a gtest_main.o
mkdir -p ${BASE}/usr/include
cp -r include/gtest ${BASE}/usr/include
mkdir -p ${BASE}/usr/lib
mv *.a ${BASE}/usr/lib
cd ..
# build and test
CMAKE_CXX_COMPILER="${CXX}" CMAKE_C_COMPILER="${CC}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" BOOST_ROOT="${BASE}/usr" CFLAGS="-Werror -g" CXXFLAGS="-Werror -g" ${ACTION}
cat Files.cmake| grep ".*\.[h|hpp]" | perl -pe 's/ //g' | sort > tmp1 && find include -name "*.h" -o -name "*.hpp" | sort > tmp2 && diff tmp1 tmp2
linux:
runs-on: ubuntu-18.04
strategy:
matrix:
pattern: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
steps:
- uses: actions/checkout@v1
- name: install g++-multilib
run: |
sudo apt-get update
sudo apt-get install g++-multilib
- name: install clang
run: |
sudo apt-get update
sudo apt-get install clang-8
- name: install valgrind
run: |
sudo apt-get update
sudo apt-get install valgrind
- name: build and test
shell: bash
run: |
BASE=`pwd`;
mkdir ${BASE}/usr;
# matrix config
if [ ${{ matrix.pattern }} == 0 ]; then
export CC=clang
export CXX=clang++
ACTION="ci/build_cmake.sh"
export ARCH="64"
export BOOST="ON"
export SHARED="ON"
export CHAR_SIGN="unsigned"
export API_VERSION="2"
fi
if [ ${{ matrix.pattern }} == 1 ]; then
export CC=clang
export CXX=clang++
ACTION="ci/build_cmake.sh"
export ARCH="32"
export SHARED="ON"
export CHAR_SIGN="signed"
export API_VERSION="2"
fi
if [ ${{ matrix.pattern }} == 2 ]; then
export CC=clang
export CXX=clang++
ACTION="ci/build_cmake.sh"
export CXX17="ON"
export ARCH="64"
export BOOST="ON"
export SHARED="ON"
export CHAR_SIGN="signed"
export API_VERSION="3"
export X3_PARSE="ON"
fi
if [ ${{ matrix.pattern }} == 3 ]; then
export CC=clang
export CXX=clang++
ACTION="ci/build_cmake.sh"
export CXX17="ON"
export ARCH="32"
export SHARED="OFF"
export CHAR_SIGN="unsigned"
export API_VERSION="2"
fi
if [ ${{ matrix.pattern }} == 4 ]; then
export CC=gcc
export CXX=g++
ACTION="ci/build_cmake.sh"
export CXX17="ON"
export ARCH="64"
export SHARED="ON"
export CHAR_SIGN="signed"
export API_VERSION="2"
fi
if [ ${{ matrix.pattern }} == 5 ]; then
export CC=gcc
export CXX=g++
ACTION="ci/build_cmake.sh"
export CXX17="ON"
export ARCH="32"
export BOOST="ON"
export SHARED="ON"
export CHAR_SIGN="unsigned"
export API_VERSION="3"
export X3_PARSE="ON"
fi
if [ ${{ matrix.pattern }} == 6 ]; then
export CC=gcc
export CXX=g++
ACTION="ci/build_cmake.sh"
export ARCH="64"
export SHARED="ON"
export CHAR_SIGN="unsigned"
export API_VERSION="2"
fi
if [ ${{ matrix.pattern }} == 7 ]; then
export CC=gcc
export CXX=g++
ACTION="ci/build_cmake.sh"
export ARCH="32"
export BOOST="ON"
export SHARED="OFF"
export CHAR_SIGN="signed"
export API_VERSION="1"
fi
if [ ${{ matrix.pattern }} == 8 ]; then
export CC=gcc
export CXX=g++
ACTION="ci/build_cmake.sh"
export ARCH="32"
export BOOST="ON"
export SHARED="OFF"
export CHAR_SIGN="signed"
export API_VERSION="2"
fi
if [ ${{ matrix.pattern }} == 9 ]; then
export CC=clang
export CXX=clang++
ACTION="ci/build_regression.sh"
export ARCH="64"
export SAN="UBSAN"
export MSGPACK_FUZZ_REGRESSION="ON"
export CTEST_OUTPUT_ON_FAILURE=1
fi
if [ ${{ matrix.pattern }} == 10 ]; then
export CC=clang
export CXX=clang++
ACTION="ci/build_regression.sh"
export ARCH="64"
export SAN="ASAN"
export MSGPACK_FUZZ_REGRESSION="ON"
export CTEST_OUTPUT_ON_FAILURE=1
fi
if [ ${{ matrix.pattern }} == 11 ]; then
export CC=gcc
export CXX=g++
ACTION="ci/build_cmake_embedded.sh"
export ARCH="64"
fi
# install boost
wget https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.bz2
tar xf boost_1_71_0.tar.bz2
cd boost_1_71_0
./bootstrap.sh
./b2 -j4 --prefix=${BASE}/usr --with-chrono --with-context --with-filesystem --with-system --with-timer address-model=${ARCH} install
cd ..
# install gtest
wget https://github.com/google/googletest/archive/release-1.7.0.zip -O googletest-release-1.7.0.zip
unzip -q googletest-release-1.7.0.zip
cd googletest-release-1.7.0
$CXX -m${ARCH} src/gtest-all.cc -I. -Iinclude -c -fPIC
$CXX -m${ARCH} src/gtest_main.cc -I. -Iinclude -c -fPIC
ar -rv libgtest.a gtest-all.o
ar -rv libgtest_main.a gtest_main.o
mkdir -p ${BASE}/usr/include
cp -r include/gtest ${BASE}/usr/include
mkdir -p ${BASE}/usr/lib
mv *.a ${BASE}/usr/lib
cd ..
# install zlib
if [ ${ARCH} == 32 ]; then
sudo apt-get install lib32z1-dev
fi
# build and test
CMAKE_CXX_COMPILER="${CXX}" CMAKE_C_COMPILER="${CC}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" BOOST_ROOT="${BASE}/usr" CFLAGS="-Werror -g" CXXFLAGS="-Werror -g" MSGPACK_SAN="${SAN}" ${ACTION}
cat Files.cmake| grep ".*\.[h|hpp]" | perl -pe 's/ //g' | sort > tmp1 && find include -name "*.h" -o -name "*.hpp" | sort > tmp2 && diff tmp1 tmp2
windows:
runs-on: windows-latest
strategy:
matrix:
pattern: [0, 1, 2, 3]
steps:
- uses: actions/checkout@v1
- name: download
shell: bash
run: |
curl -L -o googletest-release-1.7.0.zip https://github.com/google/googletest/archive/release-1.7.0.zip
curl -L -O http://zlib.net/zlib-1.2.11.tar.gz
pwd
ls -l
- name: build and test
shell: powershell
run: |
if (${{ matrix.pattern }} -eq 0) {
$CPP11="-DMSGPACK_CXX11=""OFF"""
$BOOST="-DMSGPACK_BOOST=""OFF"""
}
if (${{ matrix.pattern }} -eq 1) {
$CPP11="-DMSGPACK_CXX11=""OFF"""
$BOOST="-DMSGPACK_BOOST=""ON"""
}
if (${{ matrix.pattern }} -eq 2) {
$CPP11="-DMSGPACK_CXX11=""ON"""
$BOOST="-DMSGPACK_BOOST=""OFF"""
}
if (${{ matrix.pattern }} -eq 3) {
$CPP11="-DMSGPACK_CXX11=""ON"""
$BOOST="-DMSGPACK_BOOST=""ON"""
}
$CUR=(Get-Location).Path
7z x googletest-release-1.7.0.zip
cd googletest-release-1.7.0
md build
cd build
cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_FLAGS="/D_VARIADIC_MAX=10 /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING" ..
cmake --build . --config Release
cd ..
cd ..
7z x zlib-1.2.11.tar.gz
7z x zlib-1.2.11.tar
cd zlib-1.2.11
md build
cd build
cmake ..
cmake --build . --config Release
copy zconf.h ..
cd ..
cd ..
md build
cd build
echo $env:BOOST_ROOT
$env:DBOOST_ROOT="$env:Boost_ROOT"
Start-Process cmake -ArgumentList "-DBOOST_ROOT=""$env:BOOST_ROOT"" $CPP11 $BOOST $X3_PARSE -DGTEST_LIBRARY=""$CUR\googletest-release-1.7.0\build\Release\gtest.lib"" -DGTEST_MAIN_LIBRARY=""$CUR\googletest-release-1.7.0\build\Release\gtest_main.lib"" -DGTEST_INCLUDE_DIR=""$CUR\googletest-release-1.7.0\include"" -DZLIB_LIBRARY=""$CUR\zlib-1.2.11\build\Release\zlib.lib"" -DZLIB_INCLUDE_DIR=""$CUR\zlib-1.2.11"" -DCMAKE_CXX_FLAGS=""/D_VARIADIC_MAX=10 /EHsc /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"" .." -NoNewWindow -Wait
cmake --build . --config Release
$env:PATH="$env:PATH;$CUR\googletest-release-1.7.0\build\Release;$CUR\zlib-1.2.11\build\Release;$CUR\build\release"
ctest -V

View File

@@ -19,11 +19,13 @@ fi
if [ "${ARCH}" == "32" ]
then
export BIT32="ON"
export ARCH_FLAG="-m32"
else
export BIT32="OFF"
export ARCH_FLAG="-m64"
fi
cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_CXX17=${CXX17} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_BOOST=${BOOST} -DBUILD_SHARED_LIBS=${SHARED} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} ..
cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_CXX17=${CXX17} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_BOOST=${BOOST} -DBUILD_SHARED_LIBS=${SHARED} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} -DCMAKE_CXX_FLAGS=${ARCH_FLAG} ..
ret=$?
if [ $ret -ne 0 ]

View File

@@ -33,9 +33,9 @@ inline msgpack::object_handle unpack(
data, len, off, *z, obj, referenced, f, user_data, limit);
switch(ret) {
case msgpack::PARSE_SUCCESS:
case PARSE_SUCCESS:
return msgpack::object_handle(obj, msgpack::move(z));
case msgpack::PARSE_EXTRA_BYTES:
case PARSE_EXTRA_BYTES:
return msgpack::object_handle(obj, msgpack::move(z));
default:
break;
@@ -84,11 +84,11 @@ inline void unpack(
data, len, off, *z, obj, referenced, f, user_data, limit);
switch(ret) {
case msgpack::PARSE_SUCCESS:
case PARSE_SUCCESS:
result.set(obj);
result.zone() = msgpack::move(z);
return;
case msgpack::PARSE_EXTRA_BYTES:
case PARSE_EXTRA_BYTES:
result.set(obj);
result.zone() = msgpack::move(z);
return;
@@ -141,9 +141,9 @@ inline msgpack::object unpack(
data, len, off, z, obj, referenced, f, user_data, limit);
switch(ret) {
case msgpack::PARSE_SUCCESS:
case PARSE_SUCCESS:
return obj;
case msgpack::PARSE_EXTRA_BYTES:
case PARSE_EXTRA_BYTES:
return obj;
default:
break;