648db22b |
1 | name: dev-short-tests |
2 | # Faster tests: mostly build tests, along with some other |
3 | # misc tests |
4 | |
5 | concurrency: |
6 | group: fast-${{ github.ref }} |
7 | cancel-in-progress: true |
8 | |
9 | on: |
10 | pull_request: |
11 | branches: [ dev, release, actionsTest ] |
12 | |
13 | permissions: read-all |
14 | |
15 | jobs: |
16 | linux-kernel: |
17 | runs-on: ubuntu-latest |
18 | steps: |
19 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
20 | - name: linux kernel, library + build + test |
21 | run: make -C contrib/linux-kernel test CFLAGS="-Werror -Wunused-const-variable -Wunused-but-set-variable" |
22 | |
23 | benchmarking: |
24 | runs-on: ubuntu-latest |
25 | steps: |
26 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
27 | - name: make benchmarking |
28 | run: make benchmarking |
29 | |
30 | check-32bit: # designed to catch https://github.com/facebook/zstd/issues/2428 |
31 | runs-on: ubuntu-latest |
32 | steps: |
33 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
34 | - name: make check on 32-bit |
35 | run: | |
36 | sudo apt update |
37 | APT_PACKAGES="gcc-multilib" make apt-install |
38 | CFLAGS="-m32 -O1 -fstack-protector" make check V=1 |
39 | |
40 | check-x32: |
41 | runs-on: ubuntu-latest |
42 | steps: |
43 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
44 | - name: make check on x32 ABI # https://en.wikipedia.org/wiki/X32_ABI |
45 | env: |
46 | CHECK_CONSTRAINED_MEM: true |
47 | run: | |
48 | sudo apt update |
49 | APT_PACKAGES="gcc-multilib" make apt-install |
50 | CFLAGS="-mx32 -O1 -fstack-protector" make check V=1 |
51 | |
52 | build-c89: |
53 | runs-on: ubuntu-latest |
54 | steps: |
55 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
56 | - name: ensure zstd can be build with c89/c90 compilers (+ long long support + variadic macros) |
57 | run: | |
58 | make c89build V=1 |
59 | |
60 | build-zstd-dll: |
61 | runs-on: ubuntu-latest |
62 | steps: |
63 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
64 | - name: build zstd bin against a dynamic lib (debuglevel for more dependencies) |
65 | run: | |
66 | make -C lib lib-mt-release |
67 | DEBUGLEVEL=2 make -C programs zstd-dll |
68 | |
69 | gcc-7-libzstd: |
70 | runs-on: ubuntu-latest |
71 | steps: |
72 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
73 | - name: gcc-7 + libzstdmt compilation |
74 | # See https://askubuntu.com/a/1428822 |
75 | run: | |
76 | echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list |
77 | sudo apt-get -qqq update |
78 | make gcc7install |
79 | CC=gcc-7 CFLAGS=-Werror make -j all |
80 | make clean |
81 | LDFLAGS=-Wl,--no-undefined make -C lib libzstd-mt |
82 | |
83 | # candidate test (to check) : underlink test |
84 | # LDFLAGS=-Wl,--no-undefined : will make the linker fail if dll is underlinked |
85 | |
86 | cmake-build-and-test-check: |
87 | runs-on: ubuntu-latest |
88 | steps: |
89 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
90 | - name: cmake build and test check |
91 | run: | |
92 | FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild |
93 | cp -r ./ "../zstd source" |
94 | cd "../zstd source" |
95 | FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild |
96 | |
97 | cpp-gnu90-c99-compatibility: |
98 | runs-on: ubuntu-latest |
99 | steps: |
100 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
101 | - name: C++, gnu90 and c99 compatibility |
102 | run: | |
103 | make cxxtest |
104 | make clean |
105 | make gnu90build |
106 | make clean |
107 | make c99build |
108 | make clean |
109 | make travis-install # just ensures `make install` works |
110 | |
111 | mingw-cross-compilation: |
112 | runs-on: ubuntu-latest |
113 | steps: |
114 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
115 | - name: mingw cross-compilation |
116 | run: | |
117 | # sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; (doesn't work) |
118 | sudo apt-get -qqq update |
119 | sudo apt-get install gcc-mingw-w64 |
120 | CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CFLAGS="-Werror -O1" make zstd |
121 | |
122 | armbuild: |
123 | runs-on: ubuntu-latest |
124 | steps: |
125 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
126 | - name: ARM Build Test |
127 | run: | |
128 | sudo apt-get -qqq update |
129 | make arminstall |
130 | make armbuild |
131 | |
132 | bourne-shell: |
133 | runs-on: ubuntu-latest |
134 | steps: |
135 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
136 | - name: Bourne shell compatibility (shellcheck) |
137 | run: | |
138 | wget https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.x86_64.tar.xz |
139 | tar -xf shellcheck-v0.7.1.linux.x86_64.tar.xz |
140 | shellcheck-v0.7.1/shellcheck --shell=sh --severity=warning --exclude=SC2010 tests/playTests.sh |
141 | |
142 | zlib-wrapper: |
143 | runs-on: ubuntu-latest |
144 | steps: |
145 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
146 | - name: zlib wrapper test |
147 | run: | |
148 | sudo apt-get -qqq update |
149 | make valgrindinstall |
150 | make -C zlibWrapper test |
151 | make -C zlibWrapper test-valgrind |
152 | |
153 | lz4-threadpool-libs: |
154 | runs-on: ubuntu-latest |
155 | steps: |
156 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
157 | - name: LZ4, thread pool, and libs build testslib wrapper test |
158 | run: | |
159 | make lz4install |
160 | make -C tests test-lz4 |
161 | make check < /dev/null | tee # mess with lz4 console detection |
162 | make clean |
163 | make -C tests test-pool |
164 | make clean |
165 | bash tests/libzstd_builds.sh |
166 | |
167 | gcc-make-tests-32bit: |
168 | runs-on: ubuntu-latest |
169 | steps: |
170 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
171 | - name: Make all, 32bit mode |
172 | run: | |
173 | sudo apt-get -qqq update |
174 | make libc6install |
175 | CFLAGS="-Werror -m32" make -j all32 |
176 | |
177 | gcc-8-make: |
178 | runs-on: ubuntu-latest |
179 | steps: |
180 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
181 | - name: gcc-8 build |
182 | # See https://askubuntu.com/a/1428822 |
183 | run: | |
184 | echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list |
185 | sudo apt-get -qqq update |
186 | make gcc8install |
187 | CC=gcc-8 CFLAGS="-Werror" make -j all |
188 | |
189 | make-external-compressors: |
190 | strategy: |
191 | matrix: |
192 | include: |
193 | - name: "no external compressors" |
194 | flags: "HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0" |
195 | - name: "only zlib" |
196 | flags: "HAVE_ZLIB=1 HAVE_LZ4=0 HAVE_LZMA=0" |
197 | - name: "only lz4" |
198 | flags: "HAVE_ZLIB=0 HAVE_LZ4=1 HAVE_LZMA=0" |
199 | - name: "only lzma" |
200 | flags: "HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=1" |
201 | runs-on: ubuntu-latest |
202 | steps: |
203 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
204 | - name: Build with ${{matrix.name}} |
205 | run: ${{matrix.flags}} make zstd |
206 | |
207 | |
208 | implicit-fall-through: |
209 | runs-on: ubuntu-latest |
210 | steps: |
211 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
212 | - name: -Wimplicit-fallthrough build |
213 | run: | |
214 | make clean |
215 | CC=gcc MOREFLAGS="-Werror -Wimplicit-fallthrough=2 -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0 |
216 | make clean |
217 | CC=clang MOREFLAGS="-Werror -Wimplicit-fallthrough -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0 |
218 | |
219 | meson-linux: |
220 | runs-on: ubuntu-latest |
221 | steps: |
222 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
223 | - name: Install packages |
224 | run: | |
225 | sudo apt-get update |
226 | sudo apt-get -y install build-essential python3-pip ninja-build liblz4-dev |
227 | pip install --pre meson |
228 | - name: Build with Meson |
229 | run: | |
230 | meson setup \ |
231 | --buildtype=debugoptimized \ |
232 | -Db_lundef=false \ |
233 | -Dauto_features=enabled \ |
234 | -Dbin_programs=true \ |
235 | -Dbin_tests=true \ |
236 | -Dbin_contrib=true \ |
237 | -Ddefault_library=both \ |
238 | build/meson builddir |
239 | ninja -C builddir/ |
240 | meson test -C builddir/ --print-errorlogs |
241 | meson install -C builddir --destdir staging/ |
242 | |
243 | meson-windows: |
244 | runs-on: windows-latest |
245 | steps: |
246 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
247 | - name: Install packages |
248 | run: pip install --pre meson |
249 | - name: Initialize the MSVC dev command prompt |
250 | uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89 |
251 | - name: Configure with Meson |
252 | run: | |
253 | meson setup build/meson/ builddir -Dbin_tests=true -Dbin_programs=true -Dbin_contrib=true |
254 | - name: Build with Meson |
255 | run: | |
256 | ninja -C builddir/ |
257 | - name: Test with Meson |
258 | run: | |
259 | meson test -C builddir/ --print-errorlogs |
260 | - name: Install with Meson |
261 | run: | |
262 | meson install -C builddir --destdir staging/ |
263 | |
264 | cmake-visual-2022: |
265 | strategy: |
266 | matrix: |
267 | include: |
268 | - generator: "Visual Studio 17 2022" |
269 | flags: "-A x64" |
270 | - generator: "Visual Studio 17 2022" |
271 | flags: "-A Win32" |
272 | - generator: "MinGW Makefiles" |
273 | - generator: "Visual Studio 17 2022" |
274 | flags: "-T ClangCL" |
275 | runs-on: windows-2022 |
276 | steps: |
277 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
278 | - name: Add MSBuild to PATH |
279 | uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3 |
280 | - name: Build |
281 | working-directory: ${{env.GITHUB_WORKSPACE}} |
282 | run: | |
283 | cd build\cmake |
284 | mkdir build |
285 | cd build |
286 | cmake.exe -G "${{matrix.generator}}" ${{matrix.flags}} .. |
287 | cmake.exe --build . |
288 | |
289 | msbuild-visual-studio: |
290 | strategy: |
291 | fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed. |
292 | matrix: |
293 | include: [ |
294 | { name: "VS 2022 x64 Debug", platform: x64, configuration: Debug, toolset: v143, runner: "windows-2022", arch: "" }, |
295 | { name: "VS 2022 Win32 Debug", platform: Win32, configuration: Debug, toolset: v143, runner: "windows-2022", arch: "" }, |
296 | { name: "VS 2022 x64 Release", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022", arch: ""}, |
297 | { name: "VS 2022 Win32 Release", platform: Win32, configuration: Release, toolset: v143, runner: "windows-2022", arch: ""}, |
298 | { name: "VS 2019 x64 Release", platform: Win32, configuration: Release, toolset: v142, runner: "windows-2019", arch: ""}, |
299 | { name: "VS 2019 Win32 Release", platform: x64, configuration: Release, toolset: v142, runner: "windows-2019", arch: ""}, |
300 | { name: "VS 2022 x64 Release AVX2", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022", arch: "AdvancedVectorExtensions2" }, |
301 | ] |
302 | runs-on: ${{matrix.runner}} |
303 | steps: |
304 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
305 | - name: Add MSBuild to PATH |
306 | uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3 |
307 | - name: Build ${{matrix.name}} |
308 | working-directory: ${{env.GITHUB_WORKSPACE}} |
309 | # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference |
310 | if: ${{ matrix.arch == '' }} |
311 | run: > |
312 | msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}} |
313 | /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} /warnaserror |
314 | - name: Build ${{matrix.name}} |
315 | working-directory: ${{env.GITHUB_WORKSPACE}} |
316 | # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference |
317 | if: ${{ matrix.arch != '' }} |
318 | run: > |
319 | msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}} |
320 | /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} /warnaserror |
321 | /p:InstructionSet=${{matrix.arch}} |
322 | |
323 | # This tests that we don't accidentally grow the size too much. |
324 | # If the size grows intentionally, you can raise these numbers. |
325 | # But we do need to think about binary size, since it is a concern. |
326 | libzstd-size: |
327 | runs-on: ubuntu-latest |
328 | steps: |
329 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
330 | - name: libzstd size test |
331 | run: | |
332 | make clean && make -j -C lib libzstd && ./tests/check_size.py lib/libzstd.so 1100000 |
333 | make clean && make -j -C lib libzstd ZSTD_LIB_COMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 && ./tests/check_size.py lib/libzstd.so 400000 |
334 | make clean && make -j -C lib libzstd ZSTD_LIB_MINIFY=1 && ./tests/check_size.py lib/libzstd.so 300000 |
335 | make clean && make -j -C lib libzstd ZSTD_LIB_MINIFY=1 ZSTD_LIB_COMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 && ./tests/check_size.py lib/libzstd.so 80000 |
336 | |
337 | minimal-decompressor-macros: |
338 | runs-on: ubuntu-latest |
339 | steps: |
340 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
341 | - name: minimal decompressor macros |
342 | run: | |
343 | make clean && make -j all ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror" |
344 | make clean && make check ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror" |
345 | make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT" |
346 | make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT" |
347 | make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG" |
348 | make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG" |
349 | make clean && make -j all MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS" |
350 | make clean && make check MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS" |
351 | |
352 | dynamic-bmi2: |
353 | runs-on: ubuntu-latest |
354 | steps: |
355 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
356 | - name: dynamic bmi2 tests |
357 | run: | |
358 | make clean && make -j check MOREFLAGS="-O0 -Werror -mbmi2" |
359 | make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1" |
360 | make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1 -mbmi2" |
361 | make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0" |
362 | make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0 -mbmi2" |
363 | |
364 | test-variants: |
365 | runs-on: ubuntu-latest |
366 | steps: |
367 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
368 | - name: make all variants & validate |
369 | run: | |
370 | make -j -C programs allVariants MOREFLAGS=-O0 |
371 | ./tests/test-variants.sh |
372 | |
373 | qemu-consistency: |
374 | name: QEMU ${{ matrix.name }} |
375 | runs-on: ubuntu-20.04 |
376 | strategy: |
377 | fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed. |
378 | matrix: |
379 | include: [ |
380 | { name: ARM, xcc_pkg: gcc-arm-linux-gnueabi, xcc: arm-linux-gnueabi-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-arm-static }, |
381 | { name: ARM64, xcc_pkg: gcc-aarch64-linux-gnu, xcc: aarch64-linux-gnu-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-aarch64-static }, |
382 | { name: PPC, xcc_pkg: gcc-powerpc-linux-gnu, xcc: powerpc-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc-static }, |
383 | { name: PPC64LE, xcc_pkg: gcc-powerpc64le-linux-gnu, xcc: powerpc64le-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc64le-static }, |
384 | { name: S390X, xcc_pkg: gcc-s390x-linux-gnu, xcc: s390x-linux-gnu-gcc, xemu_pkg: qemu-system-s390x, xemu: qemu-s390x-static }, |
385 | { name: MIPS, xcc_pkg: gcc-mips-linux-gnu, xcc: mips-linux-gnu-gcc, xemu_pkg: qemu-system-mips, xemu: qemu-mips-static }, |
386 | { name: M68K, xcc_pkg: gcc-m68k-linux-gnu, xcc: m68k-linux-gnu-gcc, xemu_pkg: qemu-system-m68k, xemu: qemu-m68k-static }, |
387 | ] |
388 | env: # Set environment variables |
389 | XCC: ${{ matrix.xcc }} |
390 | XEMU: ${{ matrix.xemu }} |
391 | steps: |
392 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
393 | - name: apt update & install |
394 | run: | |
395 | sudo apt-get update |
396 | sudo apt-get install gcc-multilib g++-multilib qemu-utils qemu-user-static |
397 | sudo apt-get install ${{ matrix.xcc_pkg }} ${{ matrix.xemu_pkg }} |
398 | - name: Environment info |
399 | run: | |
400 | echo && which $XCC |
401 | echo && $XCC --version |
402 | echo && $XCC -v # Show built-in specs |
403 | echo && which $XEMU |
404 | echo && $XEMU --version |
405 | - name: ARM |
406 | if: ${{ matrix.name == 'ARM' }} |
407 | run: | |
408 | LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
409 | - name: ARM64 |
410 | if: ${{ matrix.name == 'ARM64' }} |
411 | run: | |
412 | LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
413 | - name: PPC |
414 | if: ${{ matrix.name == 'PPC' }} |
415 | run: | |
416 | LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
417 | - name: PPC64LE |
418 | if: ${{ matrix.name == 'PPC64LE' }} |
419 | run: | |
420 | LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
421 | - name: S390X |
422 | if: ${{ matrix.name == 'S390X' }} |
423 | run: | |
424 | LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
425 | - name: MIPS |
426 | if: ${{ matrix.name == 'MIPS' }} |
427 | run: | |
428 | LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
429 | - name: M68K |
430 | if: ${{ matrix.name == 'M68K' }} |
431 | run: | |
432 | LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
433 | |
434 | mingw-short-test: |
435 | runs-on: windows-latest |
436 | strategy: |
437 | fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed. |
438 | matrix: |
439 | include: [ |
440 | { compiler: gcc, msystem: MINGW32, cflags: "-Werror"}, |
441 | { compiler: gcc, msystem: MINGW64, cflags: "-Werror"}, |
442 | { compiler: clang, msystem: MINGW64, cflags: "--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion -Wno-unused-command-line-argument"}, |
443 | ] |
444 | defaults: |
445 | run: |
446 | shell: msys2 {0} |
447 | steps: |
448 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
449 | - uses: msys2/setup-msys2@5beef6d11f48bba68b9eb503e3adc60b23c0cc36 # tag=v2 |
450 | with: |
451 | msystem: ${{ matrix.msystem }} |
452 | install: make diffutils |
453 | update: true |
454 | # Based on https://ariya.io/2020/07/on-github-actions-with-msys2 |
455 | - name: install mingw gcc i686 |
456 | if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'gcc') }} |
457 | run: pacman --noconfirm -S mingw-w64-i686-gcc |
458 | - name: install mingw gcc x86_64 |
459 | if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'gcc') }} |
460 | run: pacman --noconfirm -S mingw-w64-x86_64-gcc |
461 | - name: install mingw clang i686 |
462 | if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'clang') }} |
463 | run: pacman --noconfirm -S mingw-w64-i686-clang |
464 | - name: install mingw clang x86_64 |
465 | if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'clang') }} |
466 | run: pacman --noconfirm -S mingw-w64-x86_64-clang |
467 | - name: run mingw tests |
468 | run: | |
469 | make -v |
470 | export CC=${{ matrix.compiler }} |
471 | $CC --version |
472 | CFLAGS="${{ matrix.cflags }}" make -j allzstd |
473 | echo "Testing $CC ${{ matrix.msystem }}" |
474 | make clean |
475 | MSYS="" make check |
476 | |
477 | visual-runtime-tests: |
478 | runs-on: windows-latest |
479 | strategy: |
480 | matrix: |
481 | platform: [x64, Win32] |
482 | configuration: [Release] |
483 | steps: |
484 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
485 | - name: Add MSBuild to PATH |
486 | uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3 |
487 | - name: Build and run tests |
488 | working-directory: ${{env.GITHUB_WORKSPACE}} |
489 | env: |
490 | ZSTD_BIN: ./zstd.exe |
491 | DATAGEN_BIN: ./datagen.exe |
492 | # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference |
493 | run: | |
494 | msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v142 /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} |
495 | COPY build\VS2010\bin\${{matrix.platform}}_${{matrix.configuration}}\*.exe tests\ |
496 | CD tests |
497 | sh -e playTests.sh |
498 | .\fuzzer.exe -T2m |
499 | |
500 | # Following instructions at: https://github.com/marketplace/actions/install-cygwin-action |
501 | cygwin-tests: |
502 | runs-on: windows-latest |
503 | steps: |
504 | - run: git config --global core.autocrlf input |
505 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
506 | - uses: cygwin/cygwin-install-action@f5e0f048310c425e84bc789f493a828c6dc80a25 # tag=master |
507 | with: |
508 | platform: x86_64 |
509 | packages: >- |
510 | autoconf, |
511 | automake, |
512 | gcc-g++, |
513 | make, |
514 | mingw64-x86_64-gcc-g++, |
515 | patch, |
516 | perl |
517 | - name: cygwin tests |
518 | shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' |
519 | run: >- |
520 | export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 && |
521 | export CFLAGS="-Werror -O1" && |
522 | ls && |
523 | make -j allzstd && |
524 | make -C tests fuzzer && |
525 | ./tests/fuzzer.exe -v -T1m |
526 | |
527 | intel-cet-compatibility: |
528 | runs-on: ubuntu-latest |
529 | steps: |
530 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
531 | - name: Build Zstd |
532 | run: | |
533 | make -j zstd V=1 |
534 | readelf -n zstd |
535 | - name: Get Intel SDE |
536 | run: | |
537 | curl -LO https://downloadmirror.intel.com/684899/sde-external-9.0.0-2021-11-07-lin.tar.xz |
538 | tar xJvf sde-external-9.0.0-2021-11-07-lin.tar.xz |
539 | - name: Configure Permissions |
540 | run: | |
541 | echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope |
542 | - name: Run Under SDE |
543 | run: | |
544 | sde-external-9.0.0-2021-11-07-lin/sde -cet -cet-raise 0 -cet-endbr-exe -cet-stderr -cet-abort -- ./zstd -b3 |
545 | |
546 | pkg-config: |
547 | runs-on: ubuntu-latest |
548 | container: |
549 | image: debian:testing |
550 | steps: |
551 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
552 | - name: Install dependencies |
553 | run: | |
554 | apt -y update |
555 | apt -y install --no-install-recommends gcc libc6-dev make pkg-config |
556 | - name: Build and install |
557 | run: make -C lib install |
558 | - name: Test pkg-config |
559 | run: | |
560 | cc -Wall -Wextra -Wpedantic -Werror -o simple examples/simple_compression.c $(pkg-config --cflags --libs libzstd) |
561 | ./simple LICENSE |
562 | |
563 | versions-compatibility: |
564 | runs-on: ubuntu-latest |
565 | steps: |
566 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
567 | - name: Versions Compatibility Test |
568 | run: | |
569 | make -C tests versionsTest |
570 | |
571 | clangbuild: |
572 | runs-on: ubuntu-latest |
573 | steps: |
574 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
575 | - name: make clangbuild |
576 | run: | |
577 | make clangbuild |
578 | |
579 | clang-pgo: |
580 | runs-on: ubuntu-latest |
581 | steps: |
582 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
583 | - name: Build PGO Zstd with Clang |
584 | env: |
585 | CC: clang-14 |
586 | LLVM_PROFDATA: llvm-profdata-14 |
587 | run: | |
588 | make -C programs zstd-pgo |
589 | ./programs/zstd -b |
590 | |
591 | gcc-pgo: |
592 | runs-on: ubuntu-latest |
593 | steps: |
594 | - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
595 | - name: Build PGO Zstd with GCC |
596 | env: |
597 | CC: gcc |
598 | run: | |
599 | make -C programs zstd-pgo |
600 | ./programs/zstd -b |
601 | |
602 | |
603 | # For reference : icc tests |
604 | # icc tests are currently failing on Github Actions, likely to issues during installation stage |
605 | # To be fixed later |
606 | # |
607 | # icc: |
608 | # name: icc-check |
609 | # runs-on: ubuntu-latest |
610 | # steps: |
611 | # - name: install icc |
612 | # run: | |
613 | # export DEBIAN_FRONTEND=noninteractive |
614 | # sudo apt-get -qqq update |
615 | # sudo apt-get install -y wget build-essential pkg-config cmake ca-certificates gnupg |
616 | # sudo wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB |
617 | # sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB |
618 | # sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" |
619 | # sudo apt-get update |
620 | # sudo apt-get install -y intel-basekit intel-hpckit |
621 | # - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3 |
622 | # - name: make check |
623 | # run: | |
624 | # make CC=/opt/intel/oneapi/compiler/latest/linux/bin/intel64/icc check |