2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-12-23 03:18:59 +00:00

Add docker file for building app image

The official, signed AppImage will be build locally for now for
security of my key, but I still want it to be built in a clean,
controlled environment based off a suitably old Linux distribution for
maximal portability in the AppImage.
This commit is contained in:
Jay Berkenbilt 2018-02-20 20:36:13 -05:00
parent ac4cca7c26
commit 30380b64e3
3 changed files with 44 additions and 1 deletions

View File

@ -27,7 +27,17 @@
* libqpdf/QPDF.cc * libqpdf/QPDF.cc
* manual/qpdf-manual.xml * manual/qpdf-manual.xml
`make_dist` verifies this consistency. `make_dist` verifies this consistency.
* Generate a signed AppImage. To do this, have the gpg key available and run `./appimage/build-appimage --sign`. Rename the AppImage in appimage/build to qpdf-<version>-x86_64.AppImage and include it in the set of files to be released. * Generate a signed AppImage using the docker image in appimage. Arguments to the docker container are arguments to git clone. The build should be made off the exact commit that will be officially tagged as the release but built prior to tagging the release.
Example:
```
cd appimage
docker build -t qpdfbuild .
rm -rf /tmp/build
mkdir -p /tmp/build
cp -rLp ~/.gnupg/. /tmp/build/.gnupg
docker run --privileged -ti --rm -v /tmp/build:/tmp/build qpdfbuild https://github.com/jberkenbilt/qpdf -b work
```
Rename the AppImage in appimage/build to qpdf-<version>-x86_64.AppImage and include it in the set of files to be released.
* Update release date in `manual/qpdf-manual.xml`. Remember to ensure that the entities at the top of the document are consistent with the release notes for both version and release date. * Update release date in `manual/qpdf-manual.xml`. Remember to ensure that the entities at the top of the document are consistent with the release notes for both version and release date.
* Check `TODO` file to make sure all planned items for the release are done or retargeted. * Check `TODO` file to make sure all planned items for the release are done or retargeted.
* Each year, update copyright notices. Just do a case-insensitive search for copyright. Don't forget copyright in manual. Also update debian copyright in debian package. Last updated: 2018. * Each year, update copyright notices. Just do a case-insensitive search for copyright. Don't forget copyright in manual. Also update debian copyright in debian package. Last updated: 2018.

11
appimage/Dockerfile Normal file
View File

@ -0,0 +1,11 @@
FROM ubuntu:14.04
RUN apt-get update && \
apt-get -y install screen autoconf git \
build-essential zlib1g-dev libjpeg-dev \
docbook-xsl fop xsltproc \
imagemagick wget fuse && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
COPY entrypoint /entrypoint
RUN chmod +x /entrypoint
ENTRYPOINT [ "/entrypoint" ]

22
appimage/entrypoint Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
set -e
if [ $(id -u) = 0 ]; then
if [ ! -d /tmp/build/.gnupg ]; then
echo "/tmp/build must exist and must contain .gnupg"
exit 2
fi
id=$(stat -c %u /tmp/build)
adduser --home /tmp/build --no-create-home --uid $id --disabled-password --gecos build build
exec sudo -iu build $0 "$@"
fi
cd /tmp/build
if [ ! -d qpdf ]; then
if [ "$1" == "" ]; then
echo "A repository and optional git clone arguments must be given"
exit 2
fi
git clone "$@" qpdf
fi
cd qpdf
./appimage/build-appimage --sign