feat: fix Docker Windows cross-compile and add color grading

- 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>
This commit is contained in:
Christoph K.
2026-03-15 09:49:42 +01:00
parent 0cbac0ff12
commit 4e4e19e80d
11 changed files with 793 additions and 63 deletions

View File

@@ -11,9 +11,8 @@
# docker build --target windows-builder -t photo-converter:windows .
# ─────────────────────────────────────────────────────────────────────────────
# Ubuntu 22.04 LTS: MXE-Pakete sind für focal/jammy verfügbar
ARG UBUNTU_VERSION=22.04
FROM ubuntu:${UBUNTU_VERSION} AS base
# Ubuntu 22.04 LTS für Linux-Build
FROM ubuntu:22.04 AS base
ENV DEBIAN_FRONTEND=noninteractive \
TZ=UTC
@@ -73,27 +72,46 @@ 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 base AS windows-builder
FROM ubuntu:20.04 AS windows-builder
ENV DEBIAN_FRONTEND=noninteractive \
TZ=UTC
# MXE Repository einrichten
RUN apt-get update && apt-get install -y --no-install-recommends \
ninja-build \
build-essential \
pkg-config \
curl \
ca-certificates \
gnupg \
apt-transport-https \
lsb-release \
&& 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" \
-o /etc/apt/trusted.gpg.d/mxeapt.gpg \
&& echo "deb [arch=amd64] https://pkg.mxe.cc/repos/apt focal main" \
| 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 + Qt6 (statisch, x86_64)
# Hinweis: Initial-Download ~3 GB, dauert je nach Bandbreite 10-30 Min.
# 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-opencv4 \
mxe-x86-64-w64-mingw32.static-opencv \
mxe-x86-64-w64-mingw32.static-libraw \
mxe-x86-64-w64-mingw32.static-qtbase \
mxe-x86-64-w64-mingw32.static-cc \
&& rm -rf /var/lib/apt/lists/*
@@ -102,12 +120,13 @@ ENV MXE_PREFIX=/usr/lib/mxe/usr/x86_64-w64-mingw32.static \
COPY . /project
# System-cmake (3.20+) mit MXE-Toolchain und TryRunResults
RUN cmake -B build-windows -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-mingw64.cmake \
-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_PREFIX_PATH="${MXE_PREFIX}" \
-DCMAKE_INSTALL_PREFIX=/project/dist-windows \
-DBUILD_GUI=ON \
-DBUILD_GUI=OFF \
-DBUILD_TESTS=OFF \
&& cmake --build build-windows --parallel "$(nproc)" \
&& cmake --install build-windows