mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-16 01:27:07 +00:00
c115680e7c
Verify runpath for all executables, check to make sure the AppImage works in various intended ways.
62 lines
2.2 KiB
Bash
Executable File
62 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Any extra args are passed to the docker run command before the
|
|
# invocation of qpdfbuild. This is useful for iterating locally as
|
|
# described in README-maintainer.
|
|
#
|
|
set -ex
|
|
pushd appimage
|
|
docker build -t qpdfbuild .
|
|
rm -rf build
|
|
mkdir build
|
|
popd
|
|
git clone .git appimage/build/qpdf
|
|
docker run --privileged --rm \
|
|
-v $PWD/appimage/build:/tmp/build ${1+"$@"} qpdfbuild
|
|
rm -rf distribution
|
|
mkdir distribution
|
|
cp -p appimage/build/qpdf/appimage/build/qpdf*AppImage* distribution
|
|
for i in distribution/*; do
|
|
mv $i $(echo $i | sed -e 's/\.AppImage/-ci.AppImage/')
|
|
done
|
|
version=$(basename distribution/qpdf*AppImage | cut -d- -f 2)
|
|
|
|
# Smoke test the AppImage
|
|
app_image=$(echo distribution/qpdf*AppImage)
|
|
# Directly invoking the AppImage should behave like qpdf
|
|
${app_image} --version | grep -E "^qpdf version $version"
|
|
# Invoking the AppImage with a subcommand should behave like the subcommand
|
|
${app_image} qpdf --version | grep -E "^qpdf version $version"
|
|
${app_image} fix-qdf --version | grep -E "^fix-qdf from qpdf version $version"
|
|
${app_image} zlib-flate --version | grep -E "^zlib-flate from qpdf version $version"
|
|
# Symlinking a command to the AppImage should invoke as that command
|
|
mkdir appimage/build/argv0-test
|
|
pushd appimage/build/argv0-test
|
|
for i in qpdf fix-qdf zlib-flate; do
|
|
ln -s ../../../${app_image} ./$i
|
|
done
|
|
./qpdf --version | grep -E "^qpdf version $version"
|
|
./fix-qdf --version | grep -E "^fix-qdf from qpdf version $version"
|
|
./zlib-flate --version | grep -E "^zlib-flate from qpdf version $version"
|
|
popd
|
|
|
|
# Extract a standalone copy of binaries and libraries from the
|
|
# AppImage. This is suitable for use in AWS Lambda, docker, or other
|
|
# self-contained environments. We are relying on the AppImage build to
|
|
# create an executable whose runpath is relative to the binary so that
|
|
# the extract zip file is relocatable.
|
|
${app_image} --appimage-extract
|
|
D=$PWD/distribution
|
|
for i in qpdf fix-qdf zlib-flate; do
|
|
if ! (readelf -d squashfs-root/usr/bin/$i | \
|
|
grep RUNPATH | grep -q -F ..); then
|
|
echo "Standalone linux binary $i lacks relative RUNPATH"
|
|
exit 2
|
|
fi
|
|
done
|
|
(cd squashfs-root/usr; \
|
|
zip -9 --symlinks $D/qpdf-$version-bin-linux-x86_64-ci.zip \
|
|
bin/{qpdf,fix-qdf,zlib-flate} lib/*)
|
|
|
|
sha256sum distribution/*
|