- Fix MXE GPG key import (gpg --dearmor + signed-by) - Fix MXE package names (opencv4→opencv) - Use Ubuntu 20.04 base for windows-builder (MXE focal compatibility) - Install CMake 3.20+ from Kitware PPA for windows-builder - Add ColorGradingParams.h for color grading pipeline - Update ColorCorrector, AppConfig, MainWindow, ImageData, CliRunner Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
136 lines
5.4 KiB
Docker
136 lines
5.4 KiB
Docker
# ─────────────────────────────────────────────────────────────────────────────
|
|
# photo-converter — Multi-Stage Build Image
|
|
#
|
|
# Stages:
|
|
# base — Gemeinsame Tools (cmake, ninja, gcc)
|
|
# linux-builder — Linux-Build mit OpenCV, LibRaw, Qt6
|
|
# windows-builder — Windows Cross-Compilation via MXE + MinGW-w64
|
|
#
|
|
# Verwendung:
|
|
# docker build --target linux-builder -t photo-converter:linux .
|
|
# docker build --target windows-builder -t photo-converter:windows .
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
# Ubuntu 22.04 LTS für Linux-Build
|
|
FROM ubuntu:22.04 AS base
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
TZ=UTC
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
# Build-Tools
|
|
cmake \
|
|
ninja-build \
|
|
build-essential \
|
|
pkg-config \
|
|
git \
|
|
# Hilfswerkzeuge
|
|
wget \
|
|
curl \
|
|
unzip \
|
|
zip \
|
|
ca-certificates \
|
|
gnupg \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /project
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Stage: linux-builder
|
|
# Linux-Build mit OpenCV, LibRaw, Qt6
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
FROM base AS linux-builder
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
# OpenCV
|
|
libopencv-dev \
|
|
# LibRaw
|
|
libraw-dev \
|
|
# Qt6
|
|
qt6-base-dev \
|
|
libqt6widgets6 \
|
|
libxkbcommon-dev \
|
|
# GTest für Tests
|
|
libgtest-dev \
|
|
# OpenGL (Qt-Abhängigkeit)
|
|
libgl1-mesa-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY . /project
|
|
|
|
# Standard: Release ohne GUI (GUI benötigt X11/Display)
|
|
RUN cmake -B build -G Ninja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DBUILD_GUI=OFF \
|
|
-DBUILD_TESTS=ON \
|
|
&& cmake --build build --parallel "$(nproc)" \
|
|
&& ctest --test-dir build --output-on-failure
|
|
|
|
ENTRYPOINT ["./build/photo-converter"]
|
|
CMD ["--batch", "--config", "config.ini"]
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Stage: windows-builder
|
|
# Windows Cross-Compilation via MXE (MinGW-w64 + statisch gelinkte Deps)
|
|
# MXE-Pakete sind für Ubuntu 20.04 (focal) gebaut → eigene Base nötig
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
FROM ubuntu:20.04 AS windows-builder
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
TZ=UTC
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ninja-build \
|
|
build-essential \
|
|
pkg-config \
|
|
curl \
|
|
ca-certificates \
|
|
gnupg \
|
|
apt-transport-https \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# CMake 3.20+ von Kitware (Ubuntu 20.04 liefert nur 3.16)
|
|
RUN curl -fsSL https://apt.kitware.com/keys/kitware-archive-latest.asc \
|
|
| gpg --dearmor -o /usr/share/keyrings/kitware-archive-keyring.gpg \
|
|
&& echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main" \
|
|
> /etc/apt/sources.list.d/kitware.list \
|
|
&& apt-get update && apt-get install -y --no-install-recommends cmake \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /project
|
|
|
|
# MXE Repository einrichten (focal = Ubuntu 20.04)
|
|
RUN curl -fsSL "https://pkg.mxe.cc/repos/apt/client-conf/mxeapt.gpg" \
|
|
| gpg --dearmor -o /usr/share/keyrings/mxeapt.gpg \
|
|
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mxeapt.gpg] https://pkg.mxe.cc/repos/apt focal main" \
|
|
> /etc/apt/sources.list.d/mxeapt.list
|
|
|
|
# MXE-Pakete: OpenCV + LibRaw (statisch, x86_64)
|
|
# Hinweis: MXE unterstützt kein Qt6 → Windows-Build als CLI ohne GUI
|
|
# Initial-Download ~1-2 GB, dauert je nach Bandbreite 5-15 Min.
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
mxe-x86-64-w64-mingw32.static-cmake \
|
|
mxe-x86-64-w64-mingw32.static-opencv \
|
|
mxe-x86-64-w64-mingw32.static-libraw \
|
|
mxe-x86-64-w64-mingw32.static-cc \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
ENV MXE_PREFIX=/usr/lib/mxe/usr/x86_64-w64-mingw32.static \
|
|
PATH="/usr/lib/mxe/usr/bin:${PATH}"
|
|
|
|
COPY . /project
|
|
|
|
# System-cmake (3.20+) mit MXE-Toolchain und TryRunResults
|
|
RUN cmake -B build-windows -G Ninja \
|
|
-DCMAKE_TOOLCHAIN_FILE="${MXE_PREFIX}/share/cmake/mxe-conf.cmake" \
|
|
-C /usr/lib/mxe/usr/share/cmake/modules/TryRunResults.cmake \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_INSTALL_PREFIX=/project/dist-windows \
|
|
-DBUILD_GUI=OFF \
|
|
-DBUILD_TESTS=OFF \
|
|
&& cmake --build build-windows --parallel "$(nproc)" \
|
|
&& cmake --install build-windows
|
|
|
|
# Ergebnis: /project/dist-windows/bin/photo-converter.exe
|
|
ENTRYPOINT ["/bin/bash"]
|