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