| name: dev-short-tests |
| # Faster tests: mostly build tests, along with some other |
| # misc tests |
| |
| concurrency: |
| group: fast-${{ github.ref }} |
| cancel-in-progress: true |
| |
| on: |
| pull_request: |
| branches: [ dev, release, actionsTest ] |
| |
| permissions: read-all |
| |
| jobs: |
| linux-kernel: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: linux kernel, library + build + test |
| run: make -C contrib/linux-kernel test CFLAGS="-Werror -Wunused-const-variable -Wunused-but-set-variable" |
| |
| benchmarking: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: make benchmarking |
| run: make benchmarking |
| |
| check-32bit: # designed to catch https://github.com/facebook/zstd/issues/2428 |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: make check on 32-bit |
| run: | |
| sudo apt update |
| APT_PACKAGES="gcc-multilib" make apt-install |
| CFLAGS="-m32 -O1 -fstack-protector" make check V=1 |
| |
| check-x32: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: make check on x32 ABI # https://en.wikipedia.org/wiki/X32_ABI |
| env: |
| CHECK_CONSTRAINED_MEM: true |
| run: | |
| sudo apt update |
| APT_PACKAGES="gcc-multilib" make apt-install |
| CFLAGS="-mx32 -O1 -fstack-protector" make check V=1 |
| |
| build-c89: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: ensure zstd can be build with c89/c90 compilers (+ long long support + variadic macros) |
| run: | |
| make c89build V=1 |
| |
| build-zstd-dll: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: build zstd bin against a dynamic lib (debuglevel for more dependencies) |
| run: | |
| make -C lib lib-mt-release |
| DEBUGLEVEL=2 make -C programs zstd-dll |
| |
| gcc-7-libzstd: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: gcc-7 + libzstdmt compilation |
| # See https://askubuntu.com/a/1428822 |
| run: | |
| echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list |
| sudo apt-get -qqq update |
| make gcc7install |
| CC=gcc-7 CFLAGS=-Werror make -j all |
| make clean |
| LDFLAGS=-Wl,--no-undefined make -C lib libzstd-mt |
| |
| # candidate test (to check) : underlink test |
| # LDFLAGS=-Wl,--no-undefined : will make the linker fail if dll is underlinked |
| |
| cmake-build-and-test-check: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: cmake build and test check |
| run: | |
| FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild |
| cp -r ./ "../zstd source" |
| cd "../zstd source" |
| FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild |
| |
| cpp-gnu90-c99-compatibility: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: C++, gnu90 and c99 compatibility |
| run: | |
| make cxxtest |
| make clean |
| make gnu90build |
| make clean |
| make c99build |
| make clean |
| make travis-install # just ensures `make install` works |
| |
| mingw-cross-compilation: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: mingw cross-compilation |
| run: | |
| # sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; (doesn't work) |
| sudo apt-get -qqq update |
| sudo apt-get install gcc-mingw-w64 |
| CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CFLAGS="-Werror -O1" make zstd |
| |
| armbuild: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: ARM Build Test |
| run: | |
| sudo apt-get -qqq update |
| make arminstall |
| make armbuild |
| |
| bourne-shell: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Bourne shell compatibility (shellcheck) |
| run: | |
| wget https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.x86_64.tar.xz |
| tar -xf shellcheck-v0.7.1.linux.x86_64.tar.xz |
| shellcheck-v0.7.1/shellcheck --shell=sh --severity=warning --exclude=SC2010 tests/playTests.sh |
| |
| zlib-wrapper: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: zlib wrapper test |
| run: | |
| sudo apt-get -qqq update |
| make valgrindinstall |
| make -C zlibWrapper test |
| make -C zlibWrapper test-valgrind |
| |
| lz4-threadpool-libs: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: LZ4, thread pool, and libs build testslib wrapper test |
| run: | |
| make lz4install |
| make -C tests test-lz4 |
| make check < /dev/null | tee # mess with lz4 console detection |
| make clean |
| make -C tests test-pool |
| make clean |
| bash tests/libzstd_builds.sh |
| |
| gcc-make-tests-32bit: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Make all, 32bit mode |
| run: | |
| sudo apt-get -qqq update |
| make libc6install |
| CFLAGS="-Werror -m32" make -j all32 |
| |
| gcc-8-make: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: gcc-8 build |
| # See https://askubuntu.com/a/1428822 |
| run: | |
| echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list |
| sudo apt-get -qqq update |
| make gcc8install |
| CC=gcc-8 CFLAGS="-Werror" make -j all |
| |
| make-external-compressors: |
| strategy: |
| matrix: |
| include: |
| - name: "no external compressors" |
| flags: "HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0" |
| - name: "only zlib" |
| flags: "HAVE_ZLIB=1 HAVE_LZ4=0 HAVE_LZMA=0" |
| - name: "only lz4" |
| flags: "HAVE_ZLIB=0 HAVE_LZ4=1 HAVE_LZMA=0" |
| - name: "only lzma" |
| flags: "HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=1" |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Build with ${{matrix.name}} |
| run: ${{matrix.flags}} make zstd |
| |
| |
| implicit-fall-through: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: -Wimplicit-fallthrough build |
| run: | |
| make clean |
| CC=gcc MOREFLAGS="-Werror -Wimplicit-fallthrough=2 -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0 |
| make clean |
| CC=clang MOREFLAGS="-Werror -Wimplicit-fallthrough -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0 |
| |
| meson-linux: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Install packages |
| run: | |
| sudo apt-get update |
| sudo apt-get -y install build-essential python3-pip ninja-build liblz4-dev |
| pip install --pre meson |
| - name: Build with Meson |
| run: | |
| meson setup \ |
| --buildtype=debugoptimized \ |
| -Db_lundef=false \ |
| -Dauto_features=enabled \ |
| -Dbin_programs=true \ |
| -Dbin_tests=true \ |
| -Dbin_contrib=true \ |
| -Ddefault_library=both \ |
| build/meson builddir |
| ninja -C builddir/ |
| meson test -C builddir/ --print-errorlogs |
| meson install -C builddir --destdir staging/ |
| |
| meson-windows: |
| runs-on: windows-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Install packages |
| run: pip install --pre meson |
| - name: Initialize the MSVC dev command prompt |
| uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89 |
| - name: Configure with Meson |
| run: | |
| meson setup build/meson/ builddir -Dbin_tests=true -Dbin_programs=true -Dbin_contrib=true |
| - name: Build with Meson |
| run: | |
| ninja -C builddir/ |
| - name: Test with Meson |
| run: | |
| meson test -C builddir/ --print-errorlogs |
| - name: Install with Meson |
| run: | |
| meson install -C builddir --destdir staging/ |
| |
| cmake-visual-2022: |
| strategy: |
| matrix: |
| include: |
| - generator: "Visual Studio 17 2022" |
| flags: "-A x64" |
| - generator: "Visual Studio 17 2022" |
| flags: "-A Win32" |
| - generator: "MinGW Makefiles" |
| - generator: "Visual Studio 17 2022" |
| flags: "-T ClangCL" |
| runs-on: windows-2022 |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Add MSBuild to PATH |
| uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3 |
| - name: Build |
| working-directory: ${{env.GITHUB_WORKSPACE}} |
| run: | |
| cd build\cmake |
| mkdir build |
| cd build |
| cmake.exe -G "${{matrix.generator}}" ${{matrix.flags}} .. |
| cmake.exe --build . |
| |
| msbuild-visual-studio: |
| strategy: |
| fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed. |
| matrix: |
| include: [ |
| { name: "VS 2022 x64 Debug", platform: x64, configuration: Debug, toolset: v143, runner: "windows-2022", arch: "" }, |
| { name: "VS 2022 Win32 Debug", platform: Win32, configuration: Debug, toolset: v143, runner: "windows-2022", arch: "" }, |
| { name: "VS 2022 x64 Release", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022", arch: ""}, |
| { name: "VS 2022 Win32 Release", platform: Win32, configuration: Release, toolset: v143, runner: "windows-2022", arch: ""}, |
| { name: "VS 2019 x64 Release", platform: Win32, configuration: Release, toolset: v142, runner: "windows-2019", arch: ""}, |
| { name: "VS 2019 Win32 Release", platform: x64, configuration: Release, toolset: v142, runner: "windows-2019", arch: ""}, |
| { name: "VS 2022 x64 Release AVX2", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022", arch: "AdvancedVectorExtensions2" }, |
| ] |
| runs-on: ${{matrix.runner}} |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Add MSBuild to PATH |
| uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3 |
| - name: Build ${{matrix.name}} |
| working-directory: ${{env.GITHUB_WORKSPACE}} |
| # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference |
| if: ${{ matrix.arch == '' }} |
| run: > |
| msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}} |
| /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} /warnaserror |
| - name: Build ${{matrix.name}} |
| working-directory: ${{env.GITHUB_WORKSPACE}} |
| # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference |
| if: ${{ matrix.arch != '' }} |
| run: > |
| msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}} |
| /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} /warnaserror |
| /p:InstructionSet=${{matrix.arch}} |
| |
| # This tests that we don't accidentally grow the size too much. |
| # If the size grows intentionally, you can raise these numbers. |
| # But we do need to think about binary size, since it is a concern. |
| libzstd-size: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: libzstd size test |
| run: | |
| make clean && make -j -C lib libzstd && ./tests/check_size.py lib/libzstd.so 1100000 |
| make clean && make -j -C lib libzstd ZSTD_LIB_COMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 && ./tests/check_size.py lib/libzstd.so 400000 |
| make clean && make -j -C lib libzstd ZSTD_LIB_MINIFY=1 && ./tests/check_size.py lib/libzstd.so 300000 |
| 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 |
| |
| minimal-decompressor-macros: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: minimal decompressor macros |
| run: | |
| make clean && make -j all ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror" |
| make clean && make check ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror" |
| make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT" |
| make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT" |
| make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG" |
| make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG" |
| make clean && make -j all MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS" |
| make clean && make check MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS" |
| make clean && make check ZSTD_LIB_EXCLUDE_COMPRESSORS_DFAST_AND_UP=1 MOREFLAGS="-Werror" |
| make clean && make check ZSTD_LIB_EXCLUDE_COMPRESSORS_GREEDY_AND_UP=1 MOREFLAGS="-Werror" |
| |
| dynamic-bmi2: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: dynamic bmi2 tests |
| run: | |
| make clean && make -j check MOREFLAGS="-O0 -Werror -mbmi2" |
| make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1" |
| make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1 -mbmi2" |
| make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0" |
| make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0 -mbmi2" |
| |
| test-variants: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: make all variants & validate |
| run: | |
| make -j -C programs allVariants MOREFLAGS=-O0 |
| ./tests/test-variants.sh |
| |
| qemu-consistency: |
| name: QEMU ${{ matrix.name }} |
| runs-on: ubuntu-20.04 |
| strategy: |
| fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed. |
| matrix: |
| include: [ |
| { name: ARM, xcc_pkg: gcc-arm-linux-gnueabi, xcc: arm-linux-gnueabi-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-arm-static }, |
| { name: ARM64, xcc_pkg: gcc-aarch64-linux-gnu, xcc: aarch64-linux-gnu-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-aarch64-static }, |
| { name: PPC, xcc_pkg: gcc-powerpc-linux-gnu, xcc: powerpc-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc-static }, |
| { name: PPC64LE, xcc_pkg: gcc-powerpc64le-linux-gnu, xcc: powerpc64le-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc64le-static }, |
| { name: S390X, xcc_pkg: gcc-s390x-linux-gnu, xcc: s390x-linux-gnu-gcc, xemu_pkg: qemu-system-s390x, xemu: qemu-s390x-static }, |
| { name: MIPS, xcc_pkg: gcc-mips-linux-gnu, xcc: mips-linux-gnu-gcc, xemu_pkg: qemu-system-mips, xemu: qemu-mips-static }, |
| { name: M68K, xcc_pkg: gcc-m68k-linux-gnu, xcc: m68k-linux-gnu-gcc, xemu_pkg: qemu-system-m68k, xemu: qemu-m68k-static }, |
| ] |
| env: # Set environment variables |
| XCC: ${{ matrix.xcc }} |
| XEMU: ${{ matrix.xemu }} |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: apt update & install |
| run: | |
| sudo apt-get update |
| sudo apt-get install gcc-multilib g++-multilib qemu-utils qemu-user-static |
| sudo apt-get install ${{ matrix.xcc_pkg }} ${{ matrix.xemu_pkg }} |
| - name: Environment info |
| run: | |
| echo && which $XCC |
| echo && $XCC --version |
| echo && $XCC -v # Show built-in specs |
| echo && which $XEMU |
| echo && $XEMU --version |
| - name: ARM |
| if: ${{ matrix.name == 'ARM' }} |
| run: | |
| LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
| - name: ARM64 |
| if: ${{ matrix.name == 'ARM64' }} |
| run: | |
| LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
| - name: PPC |
| if: ${{ matrix.name == 'PPC' }} |
| run: | |
| LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
| - name: PPC64LE |
| if: ${{ matrix.name == 'PPC64LE' }} |
| run: | |
| LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
| - name: S390X |
| if: ${{ matrix.name == 'S390X' }} |
| run: | |
| LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
| - name: MIPS |
| if: ${{ matrix.name == 'MIPS' }} |
| run: | |
| LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
| - name: M68K |
| if: ${{ matrix.name == 'M68K' }} |
| run: | |
| LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check |
| |
| mingw-short-test: |
| runs-on: windows-latest |
| strategy: |
| fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed. |
| matrix: |
| include: [ |
| { compiler: gcc, msystem: MINGW32, cflags: "-Werror"}, |
| { compiler: gcc, msystem: MINGW64, cflags: "-Werror"}, |
| { compiler: clang, msystem: MINGW64, cflags: "--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion -Wno-unused-command-line-argument"}, |
| ] |
| defaults: |
| run: |
| shell: msys2 {0} |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - uses: msys2/setup-msys2@5beef6d11f48bba68b9eb503e3adc60b23c0cc36 # tag=v2 |
| with: |
| msystem: ${{ matrix.msystem }} |
| install: make diffutils |
| update: true |
| # Based on https://ariya.io/2020/07/on-github-actions-with-msys2 |
| - name: install mingw gcc i686 |
| if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'gcc') }} |
| run: pacman --noconfirm -S mingw-w64-i686-gcc |
| - name: install mingw gcc x86_64 |
| if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'gcc') }} |
| run: pacman --noconfirm -S mingw-w64-x86_64-gcc |
| - name: install mingw clang i686 |
| if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'clang') }} |
| run: pacman --noconfirm -S mingw-w64-i686-clang |
| - name: install mingw clang x86_64 |
| if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'clang') }} |
| run: pacman --noconfirm -S mingw-w64-x86_64-clang |
| - name: run mingw tests |
| run: | |
| make -v |
| export CC=${{ matrix.compiler }} |
| $CC --version |
| CFLAGS="${{ matrix.cflags }}" make -j allzstd |
| echo "Testing $CC ${{ matrix.msystem }}" |
| make clean |
| MSYS="" make check |
| |
| visual-runtime-tests: |
| runs-on: windows-latest |
| strategy: |
| matrix: |
| platform: [x64, Win32] |
| configuration: [Release] |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Add MSBuild to PATH |
| uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3 |
| - name: Build and run tests |
| working-directory: ${{env.GITHUB_WORKSPACE}} |
| env: |
| ZSTD_BIN: ./zstd.exe |
| DATAGEN_BIN: ./datagen.exe |
| # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference |
| run: | |
| msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v142 /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} |
| COPY build\VS2010\bin\${{matrix.platform}}_${{matrix.configuration}}\*.exe tests\ |
| CD tests |
| sh -e playTests.sh |
| .\fuzzer.exe -T2m |
| |
| # Following instructions at: https://github.com/marketplace/actions/install-cygwin-action |
| cygwin-tests: |
| runs-on: windows-latest |
| steps: |
| - run: git config --global core.autocrlf input |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - uses: cygwin/cygwin-install-action@006ad0b0946ca6d0a3ea2d4437677fa767392401 # tag=master |
| with: |
| platform: x86_64 |
| packages: >- |
| autoconf, |
| automake, |
| gcc-g++, |
| make, |
| mingw64-x86_64-gcc-g++, |
| patch, |
| perl |
| - name: cygwin tests |
| shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' |
| run: >- |
| export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 && |
| export CFLAGS="-Werror -O1" && |
| ls && |
| make -j allzstd && |
| make -C tests fuzzer && |
| ./tests/fuzzer.exe -v -T1m |
| |
| intel-cet-compatibility: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Build Zstd |
| run: | |
| make -j zstd V=1 |
| readelf -n zstd |
| - name: Get Intel SDE |
| run: | |
| curl -LO https://downloadmirror.intel.com/684899/sde-external-9.0.0-2021-11-07-lin.tar.xz |
| tar xJvf sde-external-9.0.0-2021-11-07-lin.tar.xz |
| - name: Configure Permissions |
| run: | |
| echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope |
| - name: Run Under SDE |
| run: | |
| sde-external-9.0.0-2021-11-07-lin/sde -cet -cet-raise 0 -cet-endbr-exe -cet-stderr -cet-abort -- ./zstd -b3 |
| |
| pkg-config: |
| runs-on: ubuntu-latest |
| container: |
| image: debian:testing |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Install dependencies |
| run: | |
| apt -y update |
| apt -y install --no-install-recommends gcc libc6-dev make pkg-config |
| - name: Build and install |
| run: make -C lib install |
| - name: Test pkg-config |
| run: | |
| cc -Wall -Wextra -Wpedantic -Werror -o simple examples/simple_compression.c $(pkg-config --cflags --libs libzstd) |
| ./simple LICENSE |
| |
| versions-compatibility: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Versions Compatibility Test |
| run: | |
| make -C tests versionsTest |
| |
| clangbuild: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: make clangbuild |
| run: | |
| make clangbuild |
| |
| clang-pgo: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Build PGO Zstd with Clang |
| env: |
| CC: clang-14 |
| LLVM_PROFDATA: llvm-profdata-14 |
| run: | |
| make -C programs zstd-pgo |
| ./programs/zstd -b |
| |
| gcc-pgo: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| - name: Build PGO Zstd with GCC |
| env: |
| CC: gcc |
| run: | |
| make -C programs zstd-pgo |
| ./programs/zstd -b |
| |
| |
| # For reference : icc tests |
| # icc tests are currently failing on Github Actions, likely to issues during installation stage |
| # To be fixed later |
| # |
| # icc: |
| # name: icc-check |
| # runs-on: ubuntu-latest |
| # steps: |
| # - name: install icc |
| # run: | |
| # export DEBIAN_FRONTEND=noninteractive |
| # sudo apt-get -qqq update |
| # sudo apt-get install -y wget build-essential pkg-config cmake ca-certificates gnupg |
| # sudo wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB |
| # sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB |
| # sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" |
| # sudo apt-get update |
| # sudo apt-get install -y intel-basekit intel-hpckit |
| # - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # tag=v3 |
| # - name: make check |
| # run: | |
| # make CC=/opt/intel/oneapi/compiler/latest/linux/bin/intel64/icc check |