mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +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:
|
script:
|
||||||
- build-fuzzer
|
- build-fuzzer
|
||||||
- build-linux32
|
- build-linux32
|
||||||
|
- test-alt-zlib
|
||||||
- test-unsigned-char
|
- test-unsigned-char
|
||||||
- test-c++-next
|
- test-c++-next
|
||||||
steps:
|
steps:
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
* [CHECKING DOCS ON readthedocs](#checking-docs-on-readthedocs)
|
* [CHECKING DOCS ON readthedocs](#checking-docs-on-readthedocs)
|
||||||
* [GOOGLE OSS-FUZZ](#google-oss-fuzz)
|
* [GOOGLE OSS-FUZZ](#google-oss-fuzz)
|
||||||
* [CODING RULES](#coding-rules)
|
* [CODING RULES](#coding-rules)
|
||||||
|
* [ZLIB COMPATIBILITY](#zlib-compatibility)
|
||||||
* [HOW TO ADD A COMMAND-LINE ARGUMENT](#how-to-add-a-command-line-argument)
|
* [HOW TO ADD A COMMAND-LINE ARGUMENT](#how-to-add-a-command-line-argument)
|
||||||
* [RELEASE PREPARATION](#release-preparation)
|
* [RELEASE PREPARATION](#release-preparation)
|
||||||
* [CREATING A RELEASE](#creating-a-release)
|
* [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
|
* Avoid attaching too much metadata to objects and object handles
|
||||||
since those have to get copied around a lot.
|
since those have to get copied around a lot.
|
||||||
|
|
||||||
|
## ZLIB COMPATIBILITY
|
||||||
|
|
||||||
|
XXX Write this
|
||||||
|
|
||||||
## HOW TO ADD A COMMAND-LINE ARGUMENT
|
## HOW TO ADD A COMMAND-LINE ARGUMENT
|
||||||
|
|
||||||
Quick reminder:
|
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