mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
157 lines
4.5 KiB
Docker
157 lines
4.5 KiB
Docker
#
|
|
# Stage: pre-build
|
|
# Purpose:
|
|
# - Installs common packages
|
|
# - Sets common environment variables related to dpkg
|
|
# - Aquires the qpdf source from bookwork
|
|
# Useful Links:
|
|
# - https://qpdf.readthedocs.io/en/stable/installation.html#system-requirements
|
|
# - https://wiki.debian.org/Multiarch/HOWTO
|
|
# - https://wiki.debian.org/CrossCompiling
|
|
#
|
|
|
|
FROM debian:bullseye-slim as pre-build
|
|
|
|
ARG QPDF_VERSION
|
|
|
|
ARG COMMON_BUILD_PACKAGES="\
|
|
cmake \
|
|
debhelper\
|
|
debian-keyring \
|
|
devscripts \
|
|
dpkg-dev \
|
|
equivs \
|
|
packaging-dev \
|
|
libtool"
|
|
|
|
ENV DEB_BUILD_OPTIONS="terse nocheck nodoc parallel=2"
|
|
|
|
WORKDIR /usr/src
|
|
|
|
RUN set -eux \
|
|
&& echo "Installing common packages" \
|
|
&& apt-get update --quiet \
|
|
&& apt-get install --yes --quiet --no-install-recommends ${COMMON_BUILD_PACKAGES} \
|
|
&& echo "Getting qpdf source" \
|
|
&& echo "deb-src http://deb.debian.org/debian/ bookworm main" > /etc/apt/sources.list.d/bookworm-src.list \
|
|
&& apt-get update --quiet \
|
|
&& apt-get source --yes --quiet qpdf=${QPDF_VERSION}-1/bookworm
|
|
|
|
#
|
|
# Stage: amd64-builder
|
|
# Purpose: Builds qpdf for x86_64 (native build)
|
|
#
|
|
FROM pre-build as amd64-builder
|
|
|
|
ARG AMD64_BUILD_PACKAGES="\
|
|
build-essential \
|
|
libjpeg62-turbo-dev:amd64 \
|
|
libgnutls28-dev:amd64 \
|
|
zlib1g-dev:amd64"
|
|
|
|
WORKDIR /usr/src/qpdf-${QPDF_VERSION}
|
|
|
|
RUN set -eux \
|
|
&& echo "Beginning amd64" \
|
|
&& echo "Install amd64 packages" \
|
|
&& apt-get update --quiet \
|
|
&& apt-get install --yes --quiet --no-install-recommends ${AMD64_BUILD_PACKAGES} \
|
|
&& echo "Building amd64" \
|
|
&& dpkg-buildpackage --build=binary --unsigned-source --unsigned-changes --post-clean \
|
|
&& echo "Removing debug files" \
|
|
&& rm -f ../libqpdf29-dbgsym* \
|
|
&& rm -f ../qpdf-dbgsym* \
|
|
&& echo "Gathering package data" \
|
|
&& dpkg-query -f '${Package;-40}${Version}\n' -W > ../pkg-list.txt
|
|
#
|
|
# Stage: armhf-builder
|
|
# Purpose:
|
|
# - Sets armhf specific environment
|
|
# - Builds qpdf for armhf (cross compile)
|
|
#
|
|
FROM pre-build as armhf-builder
|
|
|
|
ARG ARMHF_PACKAGES="\
|
|
crossbuild-essential-armhf \
|
|
libjpeg62-turbo-dev:armhf \
|
|
libgnutls28-dev:armhf \
|
|
zlib1g-dev:armhf"
|
|
|
|
WORKDIR /usr/src/qpdf-${QPDF_VERSION}
|
|
|
|
ENV CXX="/usr/bin/arm-linux-gnueabihf-g++" \
|
|
CC="/usr/bin/arm-linux-gnueabihf-gcc"
|
|
|
|
RUN set -eux \
|
|
&& echo "Beginning armhf" \
|
|
&& echo "Install armhf packages" \
|
|
&& dpkg --add-architecture armhf \
|
|
&& apt-get update --quiet \
|
|
&& apt-get install --yes --quiet --no-install-recommends ${ARMHF_PACKAGES} \
|
|
&& echo "Building armhf" \
|
|
&& dpkg-buildpackage --build=binary --unsigned-source --unsigned-changes --post-clean --host-arch armhf \
|
|
&& echo "Removing debug files" \
|
|
&& rm -f ../libqpdf29-dbgsym* \
|
|
&& rm -f ../qpdf-dbgsym* \
|
|
&& echo "Gathering package data" \
|
|
&& dpkg-query -f '${Package;-40}${Version}\n' -W > ../pkg-list.txt
|
|
|
|
#
|
|
# Stage: aarch64-builder
|
|
# Purpose:
|
|
# - Sets aarch64 specific environment
|
|
# - Builds qpdf for aarch64 (cross compile)
|
|
#
|
|
FROM pre-build as aarch64-builder
|
|
|
|
ARG ARM64_PACKAGES="\
|
|
crossbuild-essential-arm64 \
|
|
libjpeg62-turbo-dev:arm64 \
|
|
libgnutls28-dev:arm64 \
|
|
zlib1g-dev:arm64"
|
|
|
|
ENV CXX="/usr/bin/aarch64-linux-gnu-g++" \
|
|
CC="/usr/bin/aarch64-linux-gnu-gcc"
|
|
|
|
WORKDIR /usr/src/qpdf-${QPDF_VERSION}
|
|
|
|
RUN set -eux \
|
|
&& echo "Beginning arm64" \
|
|
&& echo "Install arm64 packages" \
|
|
&& dpkg --add-architecture arm64 \
|
|
&& apt-get update --quiet \
|
|
&& apt-get install --yes --quiet --no-install-recommends ${ARM64_PACKAGES} \
|
|
&& echo "Building arm64" \
|
|
&& dpkg-buildpackage --build=binary --unsigned-source --unsigned-changes --post-clean --host-arch arm64 \
|
|
&& echo "Removing debug files" \
|
|
&& rm -f ../libqpdf29-dbgsym* \
|
|
&& rm -f ../qpdf-dbgsym* \
|
|
&& echo "Gathering package data" \
|
|
&& dpkg-query -f '${Package;-40}${Version}\n' -W > ../pkg-list.txt
|
|
|
|
#
|
|
# Stage: package
|
|
# Purpose: Holds the compiled .deb files in arch/variant specific folders
|
|
#
|
|
FROM alpine:3.17 as package
|
|
|
|
LABEL org.opencontainers.image.description="A image with qpdf installers stored in architecture & version specific folders"
|
|
|
|
ARG QPDF_VERSION
|
|
|
|
WORKDIR /usr/src/qpdf/${QPDF_VERSION}/amd64
|
|
|
|
COPY --from=amd64-builder /usr/src/*.deb ./
|
|
COPY --from=amd64-builder /usr/src/pkg-list.txt ./
|
|
|
|
# Note this is ${TARGETARCH}${TARGETVARIANT} for armv7
|
|
WORKDIR /usr/src/qpdf/${QPDF_VERSION}/armv7
|
|
|
|
COPY --from=armhf-builder /usr/src/*.deb ./
|
|
COPY --from=armhf-builder /usr/src/pkg-list.txt ./
|
|
|
|
WORKDIR /usr/src/qpdf/${QPDF_VERSION}/arm64
|
|
|
|
COPY --from=aarch64-builder /usr/src/*.deb ./
|
|
COPY --from=aarch64-builder /usr/src/pkg-list.txt ./
|