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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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 CFLAGS="-m32 -O1 -fstack-protector" make V=1 -C tests test-cli-tests build-c89: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: ensure zstd can be built 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: cmake build and test run: | sudo apt install liblzma-dev FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild V=1 cmake-source-directory-with-spaces: runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest generator: "Unix Makefiles" - os: windows-latest generator: "NMake Makefiles" - os: macos-latest generator: "Unix Makefiles" env: SRC_DIR: "source directory with spaces" steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 with: path: "${{ env.SRC_DIR }}" - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 if: ${{ matrix.generator == 'NMake Makefiles' }} - name: cmake build on a source directory with spaces run: | cmake -S "${{ env.SRC_DIR }}/build/cmake" -B build -DBUILD_TESTING=ON -G "${{ matrix.generator }}" -DCMAKE_BUILD_TYPE=Release --install-prefix "${{ runner.temp }}/install" cmake --build build --config Release cmake --install build --config Release cpp-gnu90-c99-compatibility: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: ARM Build Test run: | sudo apt-get -qqq update make arminstall make armbuild bourne-shell: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: install valgrind run: | sudo apt-get -qqq update make valgrindinstall V=1 - name: zlib wrapper test run: make -C zlibWrapper test V=1 - name: zlib wrapper test under valgrind run: make -C zlibWrapper test-valgrind V=1 lz4-threadpool-libs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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-all-avx2: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Make all, with AVX2 run: | sudo apt-get -qqq update make libc6install CFLAGS="-Werror -mavx2" make -j all gcc-make-all-32bit: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Make all, 32bit mode run: | sudo apt-get -qqq update make libc6install CFLAGS="-Werror -m32" make -j all32 gcc-make-all-32bit-avx2: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Make all, 32bit + AVX2 mode run: | sudo apt-get -qqq update make libc6install CPPFLAGS="-DSTATIC_BMI2=1" CFLAGS="-Werror -m32 -mavx2 -mbmi2" make -j all32 gcc-8-make: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Build with ${{matrix.name}} run: | sudo apt install liblzma-dev ${{matrix.flags}} make zstd implicit-fall-through: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Install packages run: | sudo apt-get update sudo apt-get -y install build-essential python3-pip ninja-build liblz4-dev liblzma-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 mesonBuild ninja -C mesonBuild/ meson test -C mesonBuild/ --print-errorlogs meson install -C mesonBuild --destdir staging/ meson-mingw-cross-compilation: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Install packages run: | sudo apt-get -qqq update sudo apt-get -y install build-essential python3-pip ninja-build {gcc,g++}-mingw-w64-x86-64 pip install --pre meson - name: Build with Meson run: | cat > cross.ini < 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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-24.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-aarch64,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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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: | make clean LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make -j check LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make -j -C tests test-cli-tests # This test is only compatible with standard libraries that support BTI (Branch Target Identification). # Unfortunately, the standard library provided on Ubuntu 24.04 does not have this feature enabled. # make clean # LDFLAGS="-static -z force-bti" MOREFLAGS="-mbranch-protection=standard" CC=$XCC QEMU_SYS=$XEMU make check V=1 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - uses: msys2/setup-msys2@61f9e5e925871ba6c9e3e8da24ede83ea27fa91f # tag=v2.27.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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - uses: cygwin/cygwin-install-action@f61179d72284ceddc397ed07ddb444d82bf9e559 # tag=v5 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 - name: cygwin install test shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' run: >- make -j && make install pkg-config: runs-on: ubuntu-latest container: image: debian:testing steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Versions Compatibility Test run: | make -C tests versionsTest clangbuild: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: make clangbuild run: | make clangbuild gcc-pgo: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Build PGO Zstd with GCC env: CC: gcc run: | make -C programs zstd-pgo ./programs/zstd -b clang-pgo: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Build PGO Zstd with Clang env: CC: clang run: | sudo apt install -y llvm llvm-profdata --version make -C programs zstd-pgo ./programs/zstd -b musl-build: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Install musl-tools run: | sudo apt install -y musl-tools - name: Compile with musl-gcc and test-zstd run: | CC=musl-gcc CFLAGS="-Werror -O3" CPPFLAGS=-DZDICT_QSORT=ZDICT_QSORT_C90 make -j -C tests test-zstd V=1 intel-cet-compatibility: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - 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 icx: # install instructions: https://www.intel.com/content/www/us/en/docs/oneapi/installation-guide-linux/2025-0/apt-005.html name: icx-check runs-on: ubuntu-latest steps: - name: install icx run: | # download the key to system keyring wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null # add signed entry to apt sources and configure the APT client to use Intel repository: echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list sudo apt-get update sudo apt-get install -y intel-basekit intel-hpckit - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: make check run: | source /opt/intel/oneapi/setvars.sh make CC=icx check make CC=icx -C tests test-cli-tests