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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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-20.04 # ubuntu-latest == ubuntu-22.04 have issues currently with x32 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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 (for discussion) : 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: cmake build and test run: | FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild V=1 cpp-gnu90-c99-compatibility: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: ARM Build Test run: | sudo apt-get -qqq update make arminstall make armbuild bourne-shell: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: Build with ${{matrix.name}} run: ${{matrix.flags}} make zstd implicit-fall-through: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: Install packages run: pip install --pre meson - name: Configure with Meson run: | meson setup --vsenv build/meson/ builddir -Dbin_tests=true -Dbin_programs=true -Dbin_contrib=true - name: Build with Meson run: | meson compile -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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # tag=v2.0.0 - name: Build & Test working-directory: ${{env.GITHUB_WORKSPACE}} run: | cd build\cmake mkdir build cd build 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 .. cmake.exe --build . ctest.exe -V -C Debug 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # tag=v2.0.0 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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: RISC-V, xcc_pkg: gcc-riscv64-linux-gnu, xcc: riscv64-linux-gnu-gcc, xemu_pkg: qemu-system-riscv64,xemu: qemu-riscv64-static }, { name: M68K, xcc_pkg: gcc-m68k-linux-gnu, xcc: m68k-linux-gnu-gcc, xemu_pkg: qemu-system-m68k, xemu: qemu-m68k-static }, { name: SPARC, xcc_pkg: gcc-sparc64-linux-gnu, xcc: sparc64-linux-gnu-gcc, xemu_pkg: qemu-system-sparc, xemu: qemu-sparc64-static }, ] env: # Set environment variables XCC: ${{ matrix.xcc }} XEMU: ${{ matrix.xemu }} steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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 -z force-bti" MOREFLAGS="-mbranch-protection=standard" CC=$XCC QEMU_SYS=$XEMU make clean check 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: RISC-V if: ${{ matrix.name == 'RISC-V' }} 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 - name: SPARC if: ${{ matrix.name == 'SPARC' }} 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - uses: msys2/setup-msys2@cc11e9188b693c2b100158c3322424c4cc1dadea # tag=v2.22.0 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # tag=v2.0.0 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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 pkg-config: runs-on: ubuntu-latest container: image: debian:testing steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: Versions Compatibility Test run: | make -C tests versionsTest clangbuild: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: make clangbuild run: | make clangbuild clang-pgo: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: Build PGO Zstd with GCC env: CC: gcc run: | make -C programs zstd-pgo ./programs/zstd -b intel-cet-compatibility: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 - name: Build Zstd run: | make -j zstd V=1 readelf -n zstd - name: Get Intel SDE run: | curl -LO https://downloadmirror.intel.com/813591/sde-external-9.33.0-2024-01-07-lin.tar.xz tar xJvf sde-external-9.33.0-2024-01-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.33.0-2024-01-07-lin/sde -cet -cet-raise 0 -cet-endbr-exe -cet-stderr -cet-abort -- ./zstd -b3 # Failing tests, for reference # icc tests are currently failing on Github Actions, likely to issues during installation stage # # 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 # - name: make check # run: | # make CC=/opt/intel/oneapi/compiler/latest/linux/bin/intel64/icc check