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