diff options
Diffstat (limited to '.github/workflows/linux.yml')
-rw-r--r-- | .github/workflows/linux.yml | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 00000000..703fb962 --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,210 @@ +--- +name: linux + +on: + pull_request: + types: [opened, synchronize] + paths-ignore: + - '**.md' + - '.mailmap' + - 'ChangeLog*' + - 'whatsnew*' + - 'LICENSE' + push: + paths-ignore: + - '**.md' + - '.mailmap' + - 'ChangeLog*' + - 'whatsnew*' + - 'LICENSE' + +jobs: + cmake: + runs-on: ${{ matrix.os }} + if: "!contains(github.event.head_commit.message, 'ci skip')" + strategy: + fail-fast: false + matrix: + os: [ubuntu-18.04] + EVENT_MATRIX: + - DIST + - NONE + - DISABLE_OPENSSL + - DISABLE_THREAD_SUPPORT + - DISABLE_DEBUG_MODE + - DISABLE_MM_REPLACEMENT + - COMPILER_CLANG + - TEST_EXPORT_STATIC + - TEST_EXPORT_SHARED + - ASAN + - TSAN + - UBSAN + + steps: + - uses: actions/checkout@v2.0.0 + - name: Cache Build + uses: actions/cache@v1.1.0 + with: + path: build + key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-v2 + - name: Cache Dist Build + uses: actions/cache@v1.1.0 + with: + path: dist + key: ${{ matrix.os }}-cmake-dist-${{ matrix.EVENT_MATRIX }}-v2 + + - name: Build And Test + shell: bash + run: | + if [ "${{ matrix.EVENT_MATRIX }}" == "DIST" ]; then + ./autogen.sh + mkdir -p dist + cd dist + ../configure + rm -fr *.tar.gz + make dist + archive=$(echo *.tar.gz) + tar -vxf $archive + cd $(basename $archive .tar.gz) + fi + + export TSAN_OPTIONS=suppressions=$PWD/extra/tsan.supp + export LSAN_OPTIONS=suppressions=$PWD/extra/lsan.supp + + if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then + EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON" + elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then + EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON" + elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then + EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON" + elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then + EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON" + elif [ "${{ matrix.EVENT_MATRIX }}" == "COMPILER_CLANG" ]; then + EVENT_CMAKE_OPTIONS="" + export CC=clang + elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then + EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON" + elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then + EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON" + elif [ "${{ matrix.EVENT_MATRIX }}" == "ASAN" ]; then + EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" + elif [ "${{ matrix.EVENT_MATRIX }}" == "TSAN" ]; then + EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=thread -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" + elif [ "${{ matrix.EVENT_MATRIX }}" == "UBSAN" ]; then + EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=undefined -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" + else + EVENT_CMAKE_OPTIONS="" + fi + + #run build and test + JOBS=20 + export CTEST_PARALLEL_LEVEL=$JOBS + export CTEST_OUTPUT_ON_FAILURE=1 + mkdir -p build + cd build + echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS + cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS) + cmake --build . + if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then + sudo python3 ../test-export/test-export.py static + elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then + sudo python3 ../test-export/test-export.py shared + else + cmake --build . --target verify + fi + + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-build + path: build + - uses: actions/upload-artifact@v1 + if: failure() && matrix.EVENT_MATRIX == 'DIST' + with: + name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-dist + path: dist + + autotools: + runs-on: ${{ matrix.os }} + if: "!contains(github.event.head_commit.message, 'ci skip')" + strategy: + fail-fast: false + matrix: + os: [ubuntu-18.04] + EVENT_MATRIX: + - DIST + - NONE + - DISABLE_OPENSSL + - DISABLE_THREAD_SUPPORT + - DISABLE_DEBUG_MODE + - DISABLE_MM_REPLACEMENT + - COMPILER_CLANG + + steps: + - uses: actions/checkout@v2.0.0 + - name: Cache Build + uses: actions/cache@v1.1.0 + with: + path: build + key: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-v2 + - name: Cache Dist Build + uses: actions/cache@v1.1.0 + with: + path: dist + key: ${{ matrix.os }}-autotools-dist-${{ matrix.EVENT_MATRIX }}-v2 + + - name: Build And Test + shell: bash + run: | + if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then + EVENT_CONFIGURE_OPTIONS="--disable-openssl" + + elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then + EVENT_CONFIGURE_OPTIONS="--disable-thread-support" + + elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then + EVENT_CONFIGURE_OPTIONS="--disable-debug-mode" + + elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then + EVENT_CONFIGURE_OPTIONS="--disable-malloc-replacement" + + elif [ "${{ matrix.EVENT_MATRIX }}" == "COMPILER_CLANG" ]; then + EVENT_CONFIGURE_OPTIONS="" + export CC=clang + + else + EVENT_CONFIGURE_OPTIONS="" + fi + + #run build and test + JOBS=20 + ./autogen.sh + + if [ "${{ matrix.EVENT_MATRIX }}" == "DIST" ]; then + mkdir -p dist + cd dist + rm -fr *.tar.gz + ../configure $EVENT_CONFIGURE_OPTIONS + make dist + archive=$(echo *.tar.gz) + tar -vxf $archive + cd $(basename $archive .tar.gz) + fi + + mkdir -p build + cd build + echo [configure]: ../configure $EVENT_CONFIGURE_OPTIONS + ../configure $EVENT_CONFIGURE_OPTIONS + make + make -j $JOBS verify + + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-build + path: build + - uses: actions/upload-artifact@v1 + if: failure() && matrix.EVENT_MATRIX == 'DIST' + with: + name: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-dist + path: dist |