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