-
Notifications
You must be signed in to change notification settings - Fork 47
Expand file tree
/
Copy pathDockerfile
More file actions
128 lines (112 loc) · 5.66 KB
/
Copy pathDockerfile
File metadata and controls
128 lines (112 loc) · 5.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
###############################################################
# Copyright (c) 2025-2026 International Color Consortium.
# All rights reserved.
# https://color.org
#
# Intent: iccDEV ci-docker-build
#
# Last Updated: 2026-02-12 00:14:22 UTC by David Hoyt
#
###############################################################
FROM ubuntu:26.04@sha256:fed6ddb82c61194e1814e93b59cfcb6759e5aa33c4e41bb3782313c2386ed6df AS builder
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential=12.12ubuntu2 \
cmake=4.2.3-2ubuntu2 \
gcc=4:15.2.0-5ubuntu1 \
g++=4:15.2.0-5ubuntu1 \
lsb-release=12.1-2build1 \
make=4.4.1-3 \
libxml2-dev=2.15.2+dfsg-0.1 \
nlohmann-json3-dev=3.12.0.really.3.12.0.really.3.11.3-3build1 \
libtiff-dev=4.7.0-3ubuntu4 \
libjpeg-dev=8c-2ubuntu12 \
libpng-dev=1.6.57-1 \
zlib1g-dev=1:1.3.dfsg+really1.3.1-1ubuntu3 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/iccdev
COPY . .
COPY --chmod=0755 docker/iccdev-banner.sh /usr/local/bin/iccdev-banner
COPY --chmod=0755 docker/iccdev-generate-profiles.sh /usr/local/bin/iccdev-generate-profiles
ARG GIT_COMMIT=""
ENV WARN_FLAGS="-Wall -Wextra -Wpedantic -Werror"
RUN sed -i '/find_package(wxWidgets COMPONENTS core base REQUIRED)/,/endif()/ s/^/# /' Build/Cmake/CMakeLists.txt \
&& rm -f Build/CMakeCache.txt \
&& rm -rf Build/CMakeFiles \
&& rm -f Build/Cmake/CMakeCache.txt \
&& rm -rf Build/Cmake/CMakeFiles \
&& GIT_COMMIT="$GIT_COMMIT" CC=gcc CXX=g++ \
cmake -S Build/Cmake -B Build \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_C_FLAGS="${WARN_FLAGS} -fno-omit-frame-pointer -g -O0" \
-DCMAKE_CXX_FLAGS="${WARN_FLAGS} -fno-omit-frame-pointer -g -O0 -std=c++17" \
-DENABLE_SANITIZERS=ON \
-DENABLE_TOOLS=ON \
&& cmake --build Build --parallel "$(nproc)"
WORKDIR /opt/iccdev/Testing
RUN iccdev-generate-profiles /opt/iccdev/Build/Tools
WORKDIR /opt/iccdev
RUN rm -rf .git
RUN echo "=== Libraries ===" \
&& ls -lh /opt/iccdev/Build/IccProfLib/libIccProfLib2* \
&& ls -lh /opt/iccdev/Build/IccXML/libIccXML2* \
&& (ls -lh /opt/iccdev/Build/IccJSON/libIccJSON2* 2>/dev/null || echo "IccJSON: not built (nlohmann-json may be missing)") \
&& echo "=== Tools ===" \
&& find /opt/iccdev/Build/Tools -type f -executable | sort
FROM ubuntu:26.04@sha256:fed6ddb82c61194e1814e93b59cfcb6759e5aa33c4e41bb3782313c2386ed6df
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV DEBIAN_FRONTEND=noninteractive
LABEL org.opencontainers.image.title="iccDEV Build Container" \
org.opencontainers.image.description="Container v2.0.0.82" \
org.opencontainers.image.licenses="BSD-3-Clause" \
org.opencontainers.image.vendor="International Color Consortium" \
org.opencontainers.image.source="https://github.com/InternationalColorConsortium/iccDEV"
RUN apt-get update && apt-get install -y --no-install-recommends \
libc6=2.43-2ubuntu2 \
libxml2-16=2.15.2+dfsg-0.1 \
libtiff6=4.7.0-3ubuntu4 \
libjpeg8=8c-2ubuntu12 \
libpng16-16t64=1.6.57-1 \
libasan8=16-20260322-1ubuntu1 \
libubsan1=16-20260322-1ubuntu1 \
libssl3t64=3.5.5-1ubuntu3.2 \
llvm-21=1:21.1.8-6ubuntu1 \
openssl-provider-legacy=3.5.5-1ubuntu3.2 \
zlib1g=1:1.3.dfsg+really1.3.1-1ubuntu3 \
python3=3.14.3-0ubuntu2 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /opt/iccdev/Build /opt/iccdev/Build
COPY --from=builder /opt/iccdev/Testing /opt/iccdev/Testing
COPY --from=builder /opt/iccdev/LICENSE.md /opt/iccdev/LICENSE.md
COPY --from=builder /opt/iccdev/README.md /opt/iccdev/README.md
COPY --from=builder /usr/local/bin/iccdev-banner /usr/local/bin/iccdev-banner
COPY --from=builder /usr/local/bin/iccdev-generate-profiles /usr/local/bin/iccdev-generate-profiles
RUN groupadd -r iccdev \
&& useradd -r -g iccdev -d /opt/iccdev -s /bin/bash iccdev \
&& chmod 0755 /usr/local/bin/iccdev-banner \
&& chmod 0755 /usr/local/bin/iccdev-generate-profiles \
&& printf '%s\n' \
"if [ -z \"\${ICCDEV_BANNER_SHOWN:-}\" ]; then" \
" export ICCDEV_BANNER_SHOWN=1" \
" case \"\$-\" in *i*) /usr/local/bin/iccdev-banner ;; esac" \
"fi" > /etc/profile.d/iccdev-banner.sh \
&& printf '%s\n' \
"if [ -z \"\${ICCDEV_BANNER_SHOWN:-}\" ]; then" \
" export ICCDEV_BANNER_SHOWN=1" \
" case \"\$-\" in *i*) /usr/local/bin/iccdev-banner ;; esac" \
"fi" > /opt/iccdev/.bashrc \
&& chown -R iccdev:iccdev /opt/iccdev
ENV ICCDEV_ROOT="/opt/iccdev"
ENV ICCDEV_IMAGE_PULL="docker pull ghcr.io/internationalcolorconsortium/iccdev:latest"
ENV PATH="/opt/iccdev/Build/Tools/IccToXml:/opt/iccdev/Build/Tools/IccFromXml:/opt/iccdev/Build/Tools/IccDumpProfile:/opt/iccdev/Build/Tools/IccProfileVisualize:/opt/iccdev/Build/Tools/IccPawgReport:/opt/iccdev/Build/Tools/IccApplyNamedCmm:/opt/iccdev/Build/Tools/IccRoundTrip:/opt/iccdev/Build/Tools/IccFromCube:/opt/iccdev/Build/Tools/IccApplyProfiles:/opt/iccdev/Build/Tools/IccApplySearch:/opt/iccdev/Build/Tools/IccApplyToLink:/opt/iccdev/Build/Tools/IccJpegDump:/opt/iccdev/Build/Tools/IccPngDump:/opt/iccdev/Build/Tools/IccSpecSepToTiff:/opt/iccdev/Build/Tools/IccTiffDump:/opt/iccdev/Build/Tools/IccV5DspObsToV4Dsp:/opt/iccdev/Build/Tools/IccToJson:/opt/iccdev/Build/Tools/IccFromJson:${PATH}"
ENV LD_LIBRARY_PATH="/opt/iccdev/Build/IccProfLib:/opt/iccdev/Build/IccXML:/opt/iccdev/Build/IccJSON"
ENV ASAN_SYMBOLIZER_PATH="/usr/bin/llvm-symbolizer-21"
USER iccdev
WORKDIR /opt/iccdev
HEALTHCHECK --interval=5m --timeout=10s --start-period=30s --retries=3 \
CMD test -x /opt/iccdev/Build/Tools/IccDumpProfile/iccDumpProfile || exit 1
CMD ["bash"]