From 798688ec63b4cfc882ae41f044458d17d66201b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Apr 2020 07:49:59 +0300 Subject: [PATCH 1/6] Add multi-staged dockerfile to build VobSub2SRT --- packaging/Dockerfile | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 packaging/Dockerfile diff --git a/packaging/Dockerfile b/packaging/Dockerfile new file mode 100644 index 0000000..6206ae4 --- /dev/null +++ b/packaging/Dockerfile @@ -0,0 +1,20 @@ +# +# To build for arm, see https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/ + +ARG VERSION=v1.0pre7 +ARG TARGET=debian + +FROM alpine AS source +RUN apk add git +ARG VERSION +RUN git clone --depth=1 -b $VERSION https://github.com/ruediger/VobSub2SRT /source + +FROM debian:buster AS build-debian +RUN apt update && apt install -y libtiff5-dev libtesseract-dev tesseract-ocr-eng build-essential cmake pkg-config + +FROM build-$TARGET AS build +WORKDIR /build +COPY --from=source /source . +RUN ./configure +RUN make +RUN make install From 29b531a038222081537d938128d5bae4b8bc025a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Apr 2020 08:04:51 +0300 Subject: [PATCH 2/6] Add pld linux build target --- packaging/Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packaging/Dockerfile b/packaging/Dockerfile index 6206ae4..190c0ea 100644 --- a/packaging/Dockerfile +++ b/packaging/Dockerfile @@ -1,5 +1,9 @@ # # To build for arm, see https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/ +# +# Build targets supported: +# docker build --build-arg=TARGET=pld packaging +# docker build --build-arg=TARGET=debian packaging ARG VERSION=v1.0pre7 ARG TARGET=debian @@ -12,6 +16,9 @@ RUN git clone --depth=1 -b $VERSION https://github.com/ruediger/VobSub2SRT /sour FROM debian:buster AS build-debian RUN apt update && apt install -y libtiff5-dev libtesseract-dev tesseract-ocr-eng build-essential cmake pkg-config +FROM registry.gitlab.com/pld-linux/pld AS build-pld +RUN poldek -u cmake gzip libtiff-devel make tesseract-devel + FROM build-$TARGET AS build WORKDIR /build COPY --from=source /source . From 2624df2a23350d9147723a53e2bc451476bdcbc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Apr 2020 08:05:42 +0300 Subject: [PATCH 3/6] Enable buildkit cache for package manager --- packaging/Dockerfile | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packaging/Dockerfile b/packaging/Dockerfile index 190c0ea..d11c69f 100644 --- a/packaging/Dockerfile +++ b/packaging/Dockerfile @@ -1,3 +1,11 @@ +# syntax = docker/dockerfile:experimental +# +# Requires Docker v18.06 or later and BuildKit mode to use cache mount +# Docker v18.06 also requires the daemon to be running in experimental mode. +# +# $ export DOCKER_BUILDKIT=1 +# +# See https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md # # To build for arm, see https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/ # @@ -14,10 +22,14 @@ ARG VERSION RUN git clone --depth=1 -b $VERSION https://github.com/ruediger/VobSub2SRT /source FROM debian:buster AS build-debian -RUN apt update && apt install -y libtiff5-dev libtesseract-dev tesseract-ocr-eng build-essential cmake pkg-config +RUN --mount=type=cache,id=apt,target=/var/cache/apt \ + apt update && apt install -y \ + build-essential cmake libtesseract-dev libtiff5-dev pkg-config tesseract-ocr-eng FROM registry.gitlab.com/pld-linux/pld AS build-pld -RUN poldek -u cmake gzip libtiff-devel make tesseract-devel +RUN --mount=type=cache,id=poldek,target=/var/cache/poldek \ + poldek -O 'keep downloads=yes' --up -u \ + cmake gzip libtiff-devel make tesseract-devel FROM build-$TARGET AS build WORKDIR /build From ece6556aed8de7c21faabd44947e161c8ab47139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Apr 2020 08:20:59 +0300 Subject: [PATCH 4/6] Add patch from #72 for gcc7 and tesseract 4 --- packaging/Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packaging/Dockerfile b/packaging/Dockerfile index d11c69f..be513ff 100644 --- a/packaging/Dockerfile +++ b/packaging/Dockerfile @@ -17,9 +17,12 @@ ARG VERSION=v1.0pre7 ARG TARGET=debian FROM alpine AS source -RUN apk add git +RUN apk add git curl patch ARG VERSION RUN git clone --depth=1 -b $VERSION https://github.com/ruediger/VobSub2SRT /source +WORKDIR /source +RUN curl -sSfLO https://github.com/ruediger/VobSub2SRT/pull/72.patch +RUN patch -p1 < 72.patch FROM debian:buster AS build-debian RUN --mount=type=cache,id=apt,target=/var/cache/apt \ From 5b374c5bb49d30ce020838f0893adeeb81ca43fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Apr 2020 08:39:40 +0300 Subject: [PATCH 5/6] Add fedora build target --- packaging/Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packaging/Dockerfile b/packaging/Dockerfile index be513ff..8d0583d 100644 --- a/packaging/Dockerfile +++ b/packaging/Dockerfile @@ -12,6 +12,7 @@ # Build targets supported: # docker build --build-arg=TARGET=pld packaging # docker build --build-arg=TARGET=debian packaging +# docker build --build-arg=TARGET=fedora packaging ARG VERSION=v1.0pre7 ARG TARGET=debian @@ -34,6 +35,11 @@ RUN --mount=type=cache,id=poldek,target=/var/cache/poldek \ poldek -O 'keep downloads=yes' --up -u \ cmake gzip libtiff-devel make tesseract-devel +FROM fedora:31 AS build-fedora +RUN --mount=type=cache,id=dnf,target=/var/cache/dnf \ + dnf install -y \ + cmake g++ libtiff-devel make tesseract-devel + FROM build-$TARGET AS build WORKDIR /build COPY --from=source /source . From 91a632fdbb05ce97b36ee9713e29f4115163a150 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 7 Apr 2020 08:52:36 +0300 Subject: [PATCH 6/6] Build final runtime, binary stripped --- packaging/Dockerfile | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/packaging/Dockerfile b/packaging/Dockerfile index 8d0583d..1d7c7d3 100644 --- a/packaging/Dockerfile +++ b/packaging/Dockerfile @@ -25,17 +25,32 @@ WORKDIR /source RUN curl -sSfLO https://github.com/ruediger/VobSub2SRT/pull/72.patch RUN patch -p1 < 72.patch -FROM debian:buster AS build-debian +## Debian +FROM debian:buster AS runtime-debian RUN --mount=type=cache,id=apt,target=/var/cache/apt \ apt update && apt install -y \ + libtesseract4 +FROM runtime-debian AS build-debian +RUN --mount=type=cache,id=apt,target=/var/cache/apt \ + apt install -y \ build-essential cmake libtesseract-dev libtiff5-dev pkg-config tesseract-ocr-eng -FROM registry.gitlab.com/pld-linux/pld AS build-pld +## PLD Linux +FROM registry.gitlab.com/pld-linux/pld AS runtime-pld RUN --mount=type=cache,id=poldek,target=/var/cache/poldek \ poldek -O 'keep downloads=yes' --up -u \ + tesseract +FROM runtime-pld AS build-pld +RUN --mount=type=cache,id=poldek,target=/var/cache/poldek \ + poldek -O 'keep downloads=yes' -u \ cmake gzip libtiff-devel make tesseract-devel -FROM fedora:31 AS build-fedora +## Fedora Linux +FROM fedora:31 AS runtime-fedora +RUN --mount=type=cache,id=dnf,target=/var/cache/dnf \ + dnf install -y \ + tesseract +FROM runtime-fedora AS build-fedora RUN --mount=type=cache,id=dnf,target=/var/cache/dnf \ dnf install -y \ cmake g++ libtiff-devel make tesseract-devel @@ -46,3 +61,7 @@ COPY --from=source /source . RUN ./configure RUN make RUN make install +RUN strip /usr/local/bin/* + +FROM runtime-$TARGET AS runtime +COPY --from=build /usr/local/bin/* /usr/local/bin