ZSTD_compressSequencesAndLiterals #2428
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 | |
- 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 <<EOF | |
[binaries] | |
ar = 'x86_64-w64-mingw32-ar' | |
c = 'x86_64-w64-mingw32-gcc' | |
cpp = 'x86_64-w64-mingw32-g++' | |
ld = 'x86_64-w64-mingw32-ld' | |
objcopy = 'x86_64-w64-mingw32-objcopy' | |
objdump = 'x86_64-w64-mingw32-objdump' | |
strip = 'x86_64-w64-mingw32-strip' | |
windres = 'x86_64-w64-mingw32-windres' | |
[host_machine] | |
system = 'windows' | |
endian = 'little' | |
cpu_family = 'x86_64' | |
cpu = 'x86_64' | |
EOF | |
# pzstd doesn't build; skip -Dbin_contrib=true | |
meson setup \ | |
--buildtype=debugoptimized \ | |
--cross-file=cross.ini \ | |
-Db_lundef=false \ | |
-Dbin_programs=true \ | |
-Dbin_tests=true \ | |
-Ddefault_library=both \ | |
build/meson builddir | |
ninja -C builddir/ | |
if grep -- -pthread builddir/meson-private/libzstd.pc; then | |
echo "Error: found stray pthread dependency" | |
exit 1 | |
fi | |
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@d44ca8e88d8b43d56cf5670f91747359d5537f97 # tag=v2.26.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 | |
- 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@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 |