-
Notifications
You must be signed in to change notification settings - Fork 47
Expand file tree
/
Copy pathDockerfile
More file actions
132 lines (117 loc) · 6.01 KB
/
Copy pathDockerfile
File metadata and controls
132 lines (117 loc) · 6.01 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
129
130
131
132
###############################################################
# Copyright (c) 2025-2026 International Color Consortium.
# All rights reserved.
# https://color.org
#
# Intent: iccDEV container 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
# Package versions are pinned to the digest-pinned Ubuntu base validated on master.
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 \
zlib1g=1:1.3.dfsg+really1.3.1-1ubuntu3 \
libxml2-16=2.15.2+dfsg-0.1ubuntu0.1 \
libxml2-dev=2.15.2+dfsg-0.1ubuntu0.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)") \
&& ls -lh /opt/iccdev/Build/IccConnect/libIccConnect2* \
&& 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"
# Package versions are pinned to the digest-pinned Ubuntu base validated on master.
RUN apt-get update && apt-get install -y --no-install-recommends \
libc6=2.43-2ubuntu2 \
libxml2-16=2.15.2+dfsg-0.1ubuntu0.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:/opt/iccdev/Build/IccConnect"
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"]