mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 02:49:00 +00:00
Add CI for testing with zlib-ng
Add a CI job to test qpdf with other than the default zlib implementation. This incldues a check that the new zlib really is not the default, so the new test will fail if the default because zlib-ng.
This commit is contained in:
parent
4ee393d1fa
commit
10fe5143f4
1
.github/workflows/main.yml
vendored
1
.github/workflows/main.yml
vendored
@ -133,6 +133,7 @@ jobs:
|
||||
script:
|
||||
- build-fuzzer
|
||||
- build-linux32
|
||||
- test-alt-zlib
|
||||
- test-unsigned-char
|
||||
- test-c++-next
|
||||
steps:
|
||||
|
@ -7,6 +7,7 @@
|
||||
* [CHECKING DOCS ON readthedocs](#checking-docs-on-readthedocs)
|
||||
* [GOOGLE OSS-FUZZ](#google-oss-fuzz)
|
||||
* [CODING RULES](#coding-rules)
|
||||
* [ZLIB COMPATIBILITY](#zlib-compatibility)
|
||||
* [HOW TO ADD A COMMAND-LINE ARGUMENT](#how-to-add-a-command-line-argument)
|
||||
* [RELEASE PREPARATION](#release-preparation)
|
||||
* [CREATING A RELEASE](#creating-a-release)
|
||||
@ -272,6 +273,10 @@ Building docs from pull requests is also enabled.
|
||||
* Avoid attaching too much metadata to objects and object handles
|
||||
since those have to get copied around a lot.
|
||||
|
||||
## ZLIB COMPATIBILITY
|
||||
|
||||
XXX Write this
|
||||
|
||||
## HOW TO ADD A COMMAND-LINE ARGUMENT
|
||||
|
||||
Quick reminder:
|
||||
|
39
build-scripts/test-alt-zlib
Executable file
39
build-scripts/test-alt-zlib
Executable file
@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
set -eo pipefail
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install \
|
||||
build-essential cmake \
|
||||
zlib1g-dev libjpeg-dev libgnutls28-dev libssl-dev
|
||||
|
||||
# Build and install zlib-ng
|
||||
rm -rf /tmp/zlib-ng
|
||||
pushd /tmp
|
||||
git clone https://github.com/zlib-ng/zlib-ng
|
||||
cd zlib-ng
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/inst -DZLIB_COMPAT=ON
|
||||
cmake --build build -j$(nproc)
|
||||
(cd build; ctest --verbose)
|
||||
cmake --install build
|
||||
popd
|
||||
|
||||
cmake -S . -B build \
|
||||
-DCI_MODE=1 -DBUILD_STATIC_LIBS=0 -DCMAKE_BUILD_TYPE=Release \
|
||||
-DREQUIRE_CRYPTO_OPENSSL=1 -DREQUIRE_CRYPTO_GNUTLS=1 \
|
||||
-DENABLE_QTC=1
|
||||
cmake --build build --verbose -j$(nproc) -- -k
|
||||
|
||||
# Make sure we can use zlib-ng
|
||||
sum1="$(./build/zlib-flate/zlib-flate -compress < README-maintainer.md | sha256sum -)"
|
||||
export LD_PRELOAD=/tmp/inst/lib/libz.so.1
|
||||
sum2="$(./build/zlib-flate/zlib-flate -compress < README-maintainer.md | sha256sum -)"
|
||||
if [ "$sum1" = "$sum2" ]; then
|
||||
# If this happens, see if zlib-ng has become the default. If
|
||||
# that's the case, rework this test to use some other alternaive
|
||||
# zlib, such as the old one or any other API-compatible
|
||||
# implementation.
|
||||
echo "Using zlib-ng didn't change compression output"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# If this fails, please see ZLIB COMPATIBILITY in README-maintainer.md.
|
||||
(cd build; ctest --verbose)
|
Loading…
Reference in New Issue
Block a user