@@ -26,6 +26,9 @@ SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
26
26
27
27
ARG JOBS=8
28
28
ARG VERBOSE_LOGS=OFF
29
+ ARG LTO_ENABLE=OFF
30
+ ARG LTO_CXX_FLAGS=""
31
+ ARG LTO_LD_FLAGS="-Wl,-z,relro"
29
32
30
33
# hadolint ignore=DL3041
31
34
RUN echo -e "max_parallel_downloads=8\nretries=50" >> /etc/dnf/dnf.conf && \
@@ -51,7 +54,10 @@ WORKDIR /boost
51
54
RUN wget -nv https://sourceforge.net/projects/boost/files/boost/1.68.0/boost_1_68_0.tar.gz && \
52
55
if [ "$VERBOSE_LOGS" == "ON" ] ; then export BVERBOSE="-d+2" ; else export BVERBOSE="" ; fi && \
53
56
tar xf boost_1_68_0.tar.gz && cd boost_1_68_0 && ./bootstrap.sh && \
54
- ./b2 -j ${JOBS} cxxstd=17 link=static cxxflags='-fPIC' cflags='-fPIC' \
57
+ ./b2 -j ${JOBS} cxxstd=17 link=static variant=release \
58
+ cxxflags="-fPIC $LTO_CXX_FLAGS" \
59
+ cflags="-fPIC $LTO_CXX_FLAGS" \
60
+ linkflags="$LTO_LD_FLAGS" \
55
61
--with-chrono --with-date_time --with-filesystem \
56
62
--with-program_options --with-system \
57
63
--with-random --with-thread --with-atomic --with-regex \
@@ -65,7 +71,9 @@ COPY third_party/pugixml /ovms/third_party/pugixml
65
71
RUN git clone -b v1.13 https://github.com/zeux/pugixml && \
66
72
cd pugixml && \
67
73
patch -p1 < /ovms/third_party/pugixml/pugixml_v1.13_flags.patch && \
68
- cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} && \
74
+ cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} \
75
+ -DCMAKE_CXX_FLAGS="${LTO_CXX_FLAGS}" \
76
+ -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" && \
69
77
make all -j ${JOBS} && \
70
78
cp -P libpugixml.so* /usr/lib64/
71
79
@@ -79,10 +87,10 @@ RUN git clone --recurse-submodules --depth 1 --branch v2.10.16 https://github.co
79
87
patch -d /azure/azure-storage-cpp/ -p1 </ovms/third_party/azure/azure_sdk.patch
80
88
81
89
WORKDIR /azure/cpprestsdk/Release/build.release
82
- RUN cmake .. -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} -DCMAKE_CXX_FLAGS="-fPIC" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON -DBoost_USE_STATIC_LIBS=ON -DWERROR=OFF -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF && make --jobs=$JOBS install
90
+ RUN cmake .. -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} -DCMAKE_CXX_FLAGS="-fPIC ${LTO_CXX_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS} " -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON -DBoost_USE_STATIC_LIBS=ON -DWERROR=OFF -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF && make --jobs=$JOBS install
83
91
84
92
WORKDIR /azure/azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release
85
- RUN CASABLANCA_DIR=/azure/cpprestsdk cmake .. -DCMAKE_CXX_FLAGS="-fPIC" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON -DBoost_USE_STATIC_LIBS=ON -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} && make --jobs=$JOBS && make --jobs=$JOBS install
93
+ RUN CASABLANCA_DIR=/azure/cpprestsdk cmake .. -DCMAKE_CXX_FLAGS="-fPIC ${LTO_CXX_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS} " -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON -DBoost_USE_STATIC_LIBS=ON -DCMAKE_VERBOSE_MAKEFILE=${VERBOSE_LOGS} && make --jobs=$JOBS && make --jobs=$JOBS install
86
94
####### End of Azure SDK
87
95
88
96
####### Build OpenCV
@@ -99,6 +107,7 @@ SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
99
107
100
108
ARG JOBS=40
101
109
ARG VERBOSE_LOGS=OFF
110
+ ARG LTO_ENABLE=OFF
102
111
103
112
# hadolint ignore=DL3041
104
113
RUN dnf install -y https://rpmfind.net/linux/almalinux/8.10/PowerTools/x86_64/os/Packages/opencl-headers-2.2-1.20180306gite986688.el8.noarch.rpm && \
@@ -175,9 +184,12 @@ RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.n
175
184
# hadolint ignore=DL3003
176
185
RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; git clone https://github.com/$ov_source_org/openvino.git /openvino && cd /openvino && git checkout $ov_source_branch && git submodule update --init --recursive
177
186
RUN if [ "$ov_use_binary" == "0" ]; then true ; else exit 0 ; fi ; if ! [[ $debug_bazel_flags == *"py_off"* ]]; then true ; else exit 0 ; fi ; pip3 install --no-cache-dir -r /openvino/src/bindings/python/wheel/requirements-dev.txt
187
+ WORKDIR /openvino
188
+ COPY openvino-lto.patch .
189
+ RUN if [ "$ov_use_binary" == "0" ]; then patch -p1 < openvino-lto.patch ; rm -f openvino-lto.patch ; fi
178
190
WORKDIR /openvino/build
179
- RUN if [ "$ov_use_binary" == "0" ] && [[ $debug_bazel_flags == *"PYTHON_DISABLE=1"* ]]; then true ; else exit 0 ; fi ; if ! [[ $debug_bazel_flags == *"PYTHON_DISABLE=1"* ]]; then true ; else exit 0 ; fi ; cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DENABLE_PYTHON=ON -DENABLE_INTEL_NPU=OFF -DENABLE_SAMPLES=0 -DCMAKE_CXX_FLAGS=" -Wno-error=parentheses " ..
180
- RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; cmake -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DENABLE_SAMPLES=0 -DENABLE_INTEL_NPU=OFF -DCMAKE_CXX_FLAGS=" -Wno-error=parentheses " ..
191
+ RUN if [ "$ov_use_binary" == "0" ] && [[ $debug_bazel_flags == *"PYTHON_DISABLE=1"* ]]; then true ; else exit 0 ; fi ; if ! [[ $debug_bazel_flags == *"PYTHON_DISABLE=1"* ]]; then true ; else exit 0 ; fi ; cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DENABLE_LTO=${LTO_ENABLE} - DENABLE_PYTHON=ON -DENABLE_INTEL_NPU=OFF -DENABLE_SAMPLES=0 -DCMAKE_CXX_FLAGS=" -Wno-error=parentheses ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" ..
192
+ RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; cmake -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DENABLE_LTO=${LTO_ENABLE} - DENABLE_SAMPLES=0 -DENABLE_INTEL_NPU=OFF -DCMAKE_CXX_FLAGS=" -Wno-error=parentheses ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS} " ..
181
193
RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; make --jobs=$JOBS
182
194
RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; make install
183
195
RUN if [ "$ov_use_binary" == "0" ] ; then true ; else exit 0 ; fi ; \
@@ -225,7 +237,17 @@ ARG ov_tokenizers_branch=85be884a69f10270703f81f970a5ee596a4c8df7
225
237
# hadolint ignore=DL3003
226
238
RUN git clone https://github.com/openvinotoolkit/openvino_tokenizers.git /openvino_tokenizers && cd /openvino_tokenizers && git checkout $ov_tokenizers_branch && git submodule update --init --recursive
227
239
WORKDIR /openvino_tokenizers/build
228
- RUN cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" && cmake --build . --parallel $JOBS ; cp /openvino_tokenizers/build/src/lib*.so /opt/intel/openvino/runtime/lib/intel64/
240
+ RUN cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE_LOGS}" -DCMAKE_CXX_FLAGS=" ${LTO_CXX_FLAGS} " -DCMAKE_SHARED_LINKER_FLAGS="${LTO_LD_FLAGS}" && cmake --build . --parallel $JOBS ; cp /openvino_tokenizers/build/src/lib*.so /opt/intel/openvino/runtime/lib/intel64/
241
+ WORKDIR /openvino_tokenizers/
242
+ # Install the openvino_tokenizers python bindings and use a symlink to point
243
+ # to the shared object in it's final location.
244
+ RUN if ! [[ $debug_bazel_flags == *"_py_off"* ]]; then \
245
+ mkdir -p /opt/intel/openvino/python/openvino_tokenizers/lib ; \
246
+ cp -r python/* /opt/intel/openvino/python/ ; \
247
+ cp build/python/* /opt/intel/openvino/python/openvino_tokenizers/ ; \
248
+ mkdir -p /opt/intel/openvino/python/openvino_tokenizers-2025.1.dist-info ; \
249
+ echo $'Metadata-Version: 1.0\nName: openvino-tokenizers\nVersion: 2025.1\nRequires-Python: >=3.9\nRequires-Dist: openvino~=2025.1.0' > /opt/intel/openvino/python/openvino_tokenizers-2025.1.dist-info/METADATA ; \
250
+ ln -s /ovms/lib/libopenvino_tokenizers.so /opt/intel/openvino/python/openvino_tokenizers/lib/libopenvino_tokenizers.so ; fi
229
251
230
252
# Build OpenVINO Model Server
231
253
WORKDIR /ovms
@@ -345,7 +367,9 @@ ARG FUZZER_BUILD=0
345
367
ARG debug_bazel_flags="--strip=always --config=mp_on_py_on --//:distro=redhat"
346
368
COPY --from=capi-build /ovms_release/lib/libovms_shared.so /ovms_release/lib/
347
369
COPY create_package.sh /
348
- RUN ./create_package.sh
370
+ RUN ./create_package.sh ; if ! [[ $debug_bazel_flags == *"_py_off"* ]]; then \
371
+ echo $'#!/bin/bash\npython3 -m openvino_tokenizers.cli "$@"' > /ovms_release/bin/convert_tokenizer ; \
372
+ chmod +x /ovms_release/bin/convert_tokenizer ; fi
349
373
350
374
# hadolint ignore=DL3059
351
375
RUN chown -R ovms:ovms /ovms_release
@@ -394,6 +418,7 @@ RUN if [ -f /usr/bin/dnf ] ; then export DNF_TOOL=dnf ; echo -e "max_parallel_do
394
418
useradd --home-dir /home/ovms --create-home --uid 5000 --gid 5000 --groups 39,44 --shell /bin/bash --skel /dev/null ovms
395
419
396
420
ENV LD_LIBRARY_PATH=/ovms/lib
421
+ ENV PATH="$PATH:/ovms/bin"
397
422
398
423
COPY --from=pkg /ovms_release /ovms
399
424
# hadolint ignore=SC2114
@@ -404,5 +429,14 @@ COPY --from=pkg /usr/local/lib64/python3.*/site-packages/MarkupSafe-3.0.2.dist-i
404
429
COPY --from=pkg /usr/local/lib64/python3.*/site-packages/markupsafe /ovms/python_deps/markupsafe
405
430
406
431
COPY --from=pkg /licenses /licenses
432
+
433
+ # Setup Python Demos Environment
434
+ COPY demos/python_demos/requirements.txt .
435
+ RUN if [ -f /usr/bin/dnf ] ; then export DNF_TOOL=dnf ; \
436
+ else export DNF_TOOL=microdnf ; fi ; \
437
+ $DNF_TOOL install -y python3-pip git iproute net-tools ; $DNF_TOOL clean all ; \
438
+ pip3 install --no-cache-dir -r requirements.txt ; \
439
+ rm -f requirements.txt
440
+
407
441
USER ovms
408
442
ENTRYPOINT ["/ovms/bin/ovms"]
0 commit comments