1be3acd7cSAzat Khuzhin--- 2be3acd7cSAzat Khuzhinname: linux 3be3acd7cSAzat Khuzhin 4be3acd7cSAzat Khuzhinon: 5be3acd7cSAzat Khuzhin pull_request: 6be3acd7cSAzat Khuzhin types: [opened, synchronize] 7be3acd7cSAzat Khuzhin paths-ignore: 8be3acd7cSAzat Khuzhin - '**.md' 9be3acd7cSAzat Khuzhin - '.mailmap' 10be3acd7cSAzat Khuzhin - 'ChangeLog*' 11be3acd7cSAzat Khuzhin - 'whatsnew*' 12be3acd7cSAzat Khuzhin - 'LICENSE' 13be3acd7cSAzat Khuzhin push: 14be3acd7cSAzat Khuzhin paths-ignore: 15be3acd7cSAzat Khuzhin - '**.md' 16be3acd7cSAzat Khuzhin - '.mailmap' 17be3acd7cSAzat Khuzhin - 'ChangeLog*' 18be3acd7cSAzat Khuzhin - 'whatsnew*' 19be3acd7cSAzat Khuzhin - 'LICENSE' 20be3acd7cSAzat Khuzhin 21be3acd7cSAzat Khuzhinjobs: 22be3acd7cSAzat Khuzhin cmake: 23be3acd7cSAzat Khuzhin runs-on: ${{ matrix.os }} 24be3acd7cSAzat Khuzhin if: "!contains(github.event.head_commit.message, 'ci skip')" 25be3acd7cSAzat Khuzhin strategy: 26be3acd7cSAzat Khuzhin fail-fast: false 27be3acd7cSAzat Khuzhin matrix: 28be3acd7cSAzat Khuzhin os: [ubuntu-18.04] 29be3acd7cSAzat Khuzhin EVENT_MATRIX: 30be3acd7cSAzat Khuzhin - DIST 31be3acd7cSAzat Khuzhin - NONE 32be3acd7cSAzat Khuzhin - DISABLE_OPENSSL 33be3acd7cSAzat Khuzhin - DISABLE_THREAD_SUPPORT 34be3acd7cSAzat Khuzhin - DISABLE_DEBUG_MODE 35be3acd7cSAzat Khuzhin - DISABLE_MM_REPLACEMENT 36be3acd7cSAzat Khuzhin - COMPILER_CLANG 37be3acd7cSAzat Khuzhin - TEST_EXPORT_STATIC 38be3acd7cSAzat Khuzhin - TEST_EXPORT_SHARED 39be3acd7cSAzat Khuzhin - ASAN 40be3acd7cSAzat Khuzhin - TSAN 41be3acd7cSAzat Khuzhin - UBSAN 42be3acd7cSAzat Khuzhin 43be3acd7cSAzat Khuzhin steps: 44be3acd7cSAzat Khuzhin - uses: actions/checkout@v2.0.0 45be3acd7cSAzat Khuzhin - name: Cache Build 46be3acd7cSAzat Khuzhin uses: actions/cache@v1.1.0 47be3acd7cSAzat Khuzhin with: 48be3acd7cSAzat Khuzhin path: build 49be3acd7cSAzat Khuzhin key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-v2 50be3acd7cSAzat Khuzhin - name: Cache Dist Build 51be3acd7cSAzat Khuzhin uses: actions/cache@v1.1.0 52be3acd7cSAzat Khuzhin with: 53be3acd7cSAzat Khuzhin path: dist 54be3acd7cSAzat Khuzhin key: ${{ matrix.os }}-cmake-dist-${{ matrix.EVENT_MATRIX }}-v2 55be3acd7cSAzat Khuzhin 56be3acd7cSAzat Khuzhin - name: Build And Test 57be3acd7cSAzat Khuzhin shell: bash 58be3acd7cSAzat Khuzhin run: | 59be3acd7cSAzat Khuzhin if [ "${{ matrix.EVENT_MATRIX }}" == "DIST" ]; then 60be3acd7cSAzat Khuzhin ./autogen.sh 61be3acd7cSAzat Khuzhin mkdir -p dist 62be3acd7cSAzat Khuzhin cd dist 63be3acd7cSAzat Khuzhin ../configure 64be3acd7cSAzat Khuzhin rm -fr *.tar.gz 65be3acd7cSAzat Khuzhin make dist 66be3acd7cSAzat Khuzhin archive=$(echo *.tar.gz) 67be3acd7cSAzat Khuzhin tar -vxf $archive 68be3acd7cSAzat Khuzhin cd $(basename $archive .tar.gz) 69be3acd7cSAzat Khuzhin fi 70be3acd7cSAzat Khuzhin 71be3acd7cSAzat Khuzhin export TSAN_OPTIONS=suppressions=$PWD/extra/tsan.supp 72be3acd7cSAzat Khuzhin export LSAN_OPTIONS=suppressions=$PWD/extra/lsan.supp 73be3acd7cSAzat Khuzhin 74be3acd7cSAzat Khuzhin if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then 75be3acd7cSAzat Khuzhin EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON" 76be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then 77be3acd7cSAzat Khuzhin EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON" 78be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then 79be3acd7cSAzat Khuzhin EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON" 80be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then 81be3acd7cSAzat Khuzhin EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON" 82be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "COMPILER_CLANG" ]; then 83be3acd7cSAzat Khuzhin EVENT_CMAKE_OPTIONS="" 84be3acd7cSAzat Khuzhin export CC=clang 85be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then 86be3acd7cSAzat Khuzhin EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON" 87be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then 88be3acd7cSAzat Khuzhin EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON" 89be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "ASAN" ]; then 90733201a4SAzat Khuzhin EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" 91be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "TSAN" ]; then 92733201a4SAzat Khuzhin EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=thread -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" 93be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "UBSAN" ]; then 94733201a4SAzat Khuzhin EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=undefined -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" 95be3acd7cSAzat Khuzhin else 96be3acd7cSAzat Khuzhin EVENT_CMAKE_OPTIONS="" 97be3acd7cSAzat Khuzhin fi 98be3acd7cSAzat Khuzhin 99be3acd7cSAzat Khuzhin #run build and test 100be3acd7cSAzat Khuzhin JOBS=20 101be3acd7cSAzat Khuzhin export CTEST_PARALLEL_LEVEL=$JOBS 102be3acd7cSAzat Khuzhin export CTEST_OUTPUT_ON_FAILURE=1 103be3acd7cSAzat Khuzhin mkdir -p build 104be3acd7cSAzat Khuzhin cd build 105be3acd7cSAzat Khuzhin echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS 106be3acd7cSAzat Khuzhin cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS) 107be3acd7cSAzat Khuzhin cmake --build . 108be3acd7cSAzat Khuzhin if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then 109be3acd7cSAzat Khuzhin sudo python3 ../test-export/test-export.py static 110be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then 111be3acd7cSAzat Khuzhin sudo python3 ../test-export/test-export.py shared 112be3acd7cSAzat Khuzhin else 113be3acd7cSAzat Khuzhin cmake --build . --target verify 114be3acd7cSAzat Khuzhin fi 115be3acd7cSAzat Khuzhin 116be3acd7cSAzat Khuzhin - uses: actions/upload-artifact@v1 117be3acd7cSAzat Khuzhin if: failure() 118be3acd7cSAzat Khuzhin with: 119be3acd7cSAzat Khuzhin name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-build 120be3acd7cSAzat Khuzhin path: build 121be3acd7cSAzat Khuzhin - uses: actions/upload-artifact@v1 122*c660a578SAzat Khuzhin if: failure() && matrix.EVENT_MATRIX == 'DIST' 123be3acd7cSAzat Khuzhin with: 124be3acd7cSAzat Khuzhin name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-dist 125be3acd7cSAzat Khuzhin path: dist 126be3acd7cSAzat Khuzhin 127be3acd7cSAzat Khuzhin autotools: 128be3acd7cSAzat Khuzhin runs-on: ${{ matrix.os }} 129be3acd7cSAzat Khuzhin if: "!contains(github.event.head_commit.message, 'ci skip')" 130be3acd7cSAzat Khuzhin strategy: 131be3acd7cSAzat Khuzhin fail-fast: false 132be3acd7cSAzat Khuzhin matrix: 133be3acd7cSAzat Khuzhin os: [ubuntu-18.04] 134be3acd7cSAzat Khuzhin EVENT_MATRIX: 135be3acd7cSAzat Khuzhin - DIST 136be3acd7cSAzat Khuzhin - NONE 137be3acd7cSAzat Khuzhin - DISABLE_OPENSSL 138be3acd7cSAzat Khuzhin - DISABLE_THREAD_SUPPORT 139be3acd7cSAzat Khuzhin - DISABLE_DEBUG_MODE 140be3acd7cSAzat Khuzhin - DISABLE_MM_REPLACEMENT 141be3acd7cSAzat Khuzhin - COMPILER_CLANG 142be3acd7cSAzat Khuzhin 143be3acd7cSAzat Khuzhin steps: 144be3acd7cSAzat Khuzhin - uses: actions/checkout@v2.0.0 145be3acd7cSAzat Khuzhin - name: Cache Build 146be3acd7cSAzat Khuzhin uses: actions/cache@v1.1.0 147be3acd7cSAzat Khuzhin with: 148be3acd7cSAzat Khuzhin path: build 149be3acd7cSAzat Khuzhin key: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-v2 150be3acd7cSAzat Khuzhin - name: Cache Dist Build 151be3acd7cSAzat Khuzhin uses: actions/cache@v1.1.0 152be3acd7cSAzat Khuzhin with: 153be3acd7cSAzat Khuzhin path: dist 154be3acd7cSAzat Khuzhin key: ${{ matrix.os }}-autotools-dist-${{ matrix.EVENT_MATRIX }}-v2 155be3acd7cSAzat Khuzhin 156be3acd7cSAzat Khuzhin - name: Build And Test 157be3acd7cSAzat Khuzhin shell: bash 158be3acd7cSAzat Khuzhin run: | 159be3acd7cSAzat Khuzhin if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then 160be3acd7cSAzat Khuzhin EVENT_CONFIGURE_OPTIONS="--disable-openssl" 161be3acd7cSAzat Khuzhin 162be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then 163be3acd7cSAzat Khuzhin EVENT_CONFIGURE_OPTIONS="--disable-thread-support" 164be3acd7cSAzat Khuzhin 165be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then 166be3acd7cSAzat Khuzhin EVENT_CONFIGURE_OPTIONS="--disable-debug-mode" 167be3acd7cSAzat Khuzhin 168be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then 169be3acd7cSAzat Khuzhin EVENT_CONFIGURE_OPTIONS="--disable-malloc-replacement" 170be3acd7cSAzat Khuzhin 171be3acd7cSAzat Khuzhin elif [ "${{ matrix.EVENT_MATRIX }}" == "COMPILER_CLANG" ]; then 172be3acd7cSAzat Khuzhin EVENT_CONFIGURE_OPTIONS="" 173be3acd7cSAzat Khuzhin export CC=clang 174be3acd7cSAzat Khuzhin 175be3acd7cSAzat Khuzhin else 176be3acd7cSAzat Khuzhin EVENT_CONFIGURE_OPTIONS="" 177be3acd7cSAzat Khuzhin fi 178be3acd7cSAzat Khuzhin 179be3acd7cSAzat Khuzhin #run build and test 180be3acd7cSAzat Khuzhin JOBS=20 181be3acd7cSAzat Khuzhin ./autogen.sh 182be3acd7cSAzat Khuzhin 183be3acd7cSAzat Khuzhin if [ "${{ matrix.EVENT_MATRIX }}" == "DIST" ]; then 184be3acd7cSAzat Khuzhin mkdir -p dist 185be3acd7cSAzat Khuzhin cd dist 186be3acd7cSAzat Khuzhin rm -fr *.tar.gz 187be3acd7cSAzat Khuzhin ../configure $EVENT_CONFIGURE_OPTIONS 188be3acd7cSAzat Khuzhin make dist 189be3acd7cSAzat Khuzhin archive=$(echo *.tar.gz) 190be3acd7cSAzat Khuzhin tar -vxf $archive 191be3acd7cSAzat Khuzhin cd $(basename $archive .tar.gz) 192be3acd7cSAzat Khuzhin fi 193be3acd7cSAzat Khuzhin 194be3acd7cSAzat Khuzhin mkdir -p build 195be3acd7cSAzat Khuzhin cd build 196be3acd7cSAzat Khuzhin echo [configure]: ../configure $EVENT_CONFIGURE_OPTIONS 197be3acd7cSAzat Khuzhin ../configure $EVENT_CONFIGURE_OPTIONS 198be3acd7cSAzat Khuzhin make 199be3acd7cSAzat Khuzhin make -j $JOBS verify 200be3acd7cSAzat Khuzhin 201be3acd7cSAzat Khuzhin - uses: actions/upload-artifact@v1 202be3acd7cSAzat Khuzhin if: failure() 203be3acd7cSAzat Khuzhin with: 204be3acd7cSAzat Khuzhin name: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-build 205be3acd7cSAzat Khuzhin path: build 206be3acd7cSAzat Khuzhin - uses: actions/upload-artifact@v1 207*c660a578SAzat Khuzhin if: failure() && matrix.EVENT_MATRIX == 'DIST' 208be3acd7cSAzat Khuzhin with: 209be3acd7cSAzat Khuzhin name: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-dist 210be3acd7cSAzat Khuzhin path: dist 211