diff --git a/docker/rocky8/Dockerfile b/docker/rocky8/Dockerfile index 38901de0..56888466 100644 --- a/docker/rocky8/Dockerfile +++ b/docker/rocky8/Dockerfile @@ -5,6 +5,9 @@ ARG OPENSSL_VERSION=3.5.4 ARG QT_VERSION=6.9.0 ARG NODE_MAJOR=22 ARG EIGEN_TAG=3.4.0 +ARG LIBJPEG_TURBO_VERSION=3.1.2 +ARG LIBTIFF_VERSION=v4.7.1 +ARG HDF5_TAG="hdf5_1.14.6" # Update base and install common utilities RUN dnf -y update && \ @@ -22,6 +25,7 @@ RUN dnf -y update && \ xz \ make \ cmake \ + nasm \ gcc-toolset-13 \ gcc-toolset-13-gcc \ gcc-toolset-13-gcc-c++ \ @@ -84,7 +88,6 @@ RUN set -eux; \ # Expose static OpenSSL to CMake/pkg-config ENV OPENSSL_ROOT_DIR=/opt/openssl-${OPENSSL_VERSION} -ENV PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig:${PKG_CONFIG_PATH} # Install a recent Node.js (NodeSource). Change NODE_MAJOR if you want another major version. RUN curl -fsSL https://rpm.nodesource.com/setup_${NODE_MAJOR}.x | bash - && \ @@ -106,6 +109,65 @@ ENV PATH=${GCC_TOOLSET_ROOT}/usr/bin:${PATH} ENV CC=${GCC_TOOLSET_ROOT}/usr/bin/gcc ENV CXX=${GCC_TOOLSET_ROOT}/usr/bin/g++ +RUN set -eux; \ + git clone --depth 1 --branch ${LIBJPEG_TURBO_VERSION} https://github.com/libjpeg-turbo/libjpeg-turbo.git /tmp/libjpeg-turbo-src; \ + mkdir /tmp/libjpeg-turbo-src/build; \ + cd /tmp/libjpeg-turbo-src/build; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_SHARED=FALSE \ + -DENABLE_STATIC=TRUE \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_INSTALL_PREFIX=/opt/libjpeg-turbo-${LIBJPEG_TURBO_VERSION}-static ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/libjpeg-turbo-src + +RUN set -eux; \ + git clone --depth 1 --branch ${LIBTIFF_VERSION} https://gitlab.com/libtiff/libtiff.git /tmp/libtiff-src; \ + mkdir /tmp/libtiff-src/build.cm; \ + cd /tmp/libtiff-src/build.cm; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -Dtools=OFF \ + -Dtests=OFF \ + -Ddocs=OFF \ + -Dlzma=OFF \ + -Djbig=OFF \ + -Dwebp=OFF \ + -Djpeg=OFF \ + -Dold-jpeg=OFF \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_INSTALL_PREFIX=/opt/libtiff-${LIBTIFF_VERSION}-static \ + ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/libtiff-src + +RUN set -eux; \ + git clone --depth 1 --branch ${HDF5_TAG} https://github.com/HDFGroup/hdf5 /tmp/hdf5-src; \ + cd /tmp/hdf5-src; \ + mkdir build && cd build; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DHDF5_BUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTING=OFF \ + -DHDF5_BUILD_TOOLS=OFF \ + -DHDF5_BUILD_EXAMPLES=OFF \ + -DHDF5_ENABLE_SZIP_SUPPORT=OFF \ + -DHDF5_ENABLE_SZIP_ENCODING=OFF \ + -DHDF5_BUILD_CPP_LIB=OFF \ + -DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \ + -DCMAKE_INSTALL_PREFIX=/opt/hdf5-${HDF5_TAG}-static ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/hdf5-src + +ENV CMAKE_PREFIX_PATH=/opt/libtiff-${LIBTIFF_VERSION}-static:/opt/libjpeg-turbo-${LIBJPEG_TURBO_VERSION}-static +ENV PKG_CONFIG_PATH=/opt/hdf5-${HDF5_TAG}-static/lib/pkgconfig:/opt/libjpeg-turbo-${LIBJPEG_TURBO_TAG}-static/lib/pkgconfig:/opt/libtiff-${LIBTIFF_TAG}-static/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig + ARG QT_PREFIX=/opt/qt-${QT_VERSION}-static RUN set -eux; \ cd /tmp; \ @@ -138,7 +200,7 @@ RUN set -eux; \ cmake --install .; \ cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz -ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static:/opt/eigen +ENV CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}:/opt/hdf5-${HDF5_TAG}-static:opt/qt-${QT_VERSION}-static:/opt/eigen # Set workdir for your project WORKDIR /workspace diff --git a/docker/rocky9/Dockerfile b/docker/rocky9/Dockerfile index 45f445db..78712127 100644 --- a/docker/rocky9/Dockerfile +++ b/docker/rocky9/Dockerfile @@ -5,6 +5,9 @@ ARG OPENSSL_VERSION=3.5.4 ARG QT_VERSION=6.9.0 ARG NODE_MAJOR=22 ARG EIGEN_TAG=3.4.0 +ARG LIBJPEG_TURBO_VERSION=3.1.2 +ARG LIBTIFF_VERSION=v4.7.1 +ARG HDF5_TAG="hdf5_1.14.6" # Update base, enable CRB (RHEL/Rocky 9), and install toolchain + Qt deps RUN dnf -y update && \ @@ -33,6 +36,7 @@ RUN dnf -y update && \ ninja-build \ python3 \ perl \ + nasm \ pkgconf-pkg-config \ libxcb-devel \ xcb-util-*-devel \ @@ -87,6 +91,65 @@ RUN curl -fsSL https://rpm.nodesource.com/setup_${NODE_MAJOR}.x | bash - && \ dnf clean all && rm -rf /var/cache/dnf && \ node --version && npm --version && (corepack enable || true) +RUN set -eux; \ + git clone --depth 1 --branch ${LIBJPEG_TURBO_VERSION} https://github.com/libjpeg-turbo/libjpeg-turbo.git /tmp/libjpeg-turbo-src; \ + mkdir /tmp/libjpeg-turbo-src/build; \ + cd /tmp/libjpeg-turbo-src/build; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_SHARED=FALSE \ + -DENABLE_STATIC=TRUE \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_INSTALL_PREFIX=/opt/libjpeg-turbo-${LIBJPEG_TURBO_VERSION}-static ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/libjpeg-turbo-src + +RUN set -eux; \ + git clone --depth 1 --branch ${LIBTIFF_VERSION} https://gitlab.com/libtiff/libtiff.git /tmp/libtiff-src; \ + mkdir /tmp/libtiff-src/build.cm; \ + cd /tmp/libtiff-src/build.cm; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -Dtools=OFF \ + -Dtests=OFF \ + -Ddocs=OFF \ + -Dlzma=OFF \ + -Djbig=OFF \ + -Dwebp=OFF \ + -Djpeg=OFF \ + -Dold-jpeg=OFF \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_INSTALL_PREFIX=/opt/libtiff-${LIBTIFF_VERSION}-static \ + ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/libtiff-src + +RUN set -eux; \ + git clone --depth 1 --branch ${HDF5_TAG} https://github.com/HDFGroup/hdf5 /tmp/hdf5-src; \ + cd /tmp/hdf5-src; \ + mkdir build && cd build; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DHDF5_BUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTING=OFF \ + -DHDF5_BUILD_TOOLS=OFF \ + -DHDF5_BUILD_EXAMPLES=OFF \ + -DHDF5_ENABLE_SZIP_SUPPORT=OFF \ + -DHDF5_ENABLE_SZIP_ENCODING=OFF \ + -DHDF5_BUILD_CPP_LIB=OFF \ + -DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \ + -DCMAKE_INSTALL_PREFIX=/opt/hdf5-${HDF5_TAG}-static ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/hdf5-src + +ENV CMAKE_PREFIX_PATH=/opt/libtiff-${LIBTIFF_VERSION}-static:/opt/libjpeg-turbo-${LIBJPEG_TURBO_VERSION}-static +ENV PKG_CONFIG_PATH=/opt/hdf5-${HDF5_TAG}-static/lib/pkgconfig:/opt/libjpeg-turbo-${LIBJPEG_TURBO_TAG}-static/lib/pkgconfig:/opt/libtiff-${LIBTIFF_TAG}-static/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig + # Make GCC/G++ 13 the default for builds ENV GCC_TOOLSET_ROOT=/opt/rh/gcc-toolset-13/root ENV PATH=${GCC_TOOLSET_ROOT}/usr/bin:${PATH} @@ -127,7 +190,7 @@ RUN set -eux; \ cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz # Make Qt and Eigen discoverable by CMake -ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static +ENV CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}:/opt/hdf5-${HDF5_TAG}-static:/opt/qt-${QT_VERSION}-static # Set workdir for your project WORKDIR /workspace diff --git a/docker/ubuntu2204/Dockerfile b/docker/ubuntu2204/Dockerfile index 312b594d..3b39e456 100644 --- a/docker/ubuntu2204/Dockerfile +++ b/docker/ubuntu2204/Dockerfile @@ -8,6 +8,9 @@ ARG OPENSSL_VERSION=3.5.4 ARG QT_VERSION=6.10.0 ARG NODE_MAJOR=22 ARG EIGEN_TAG=3.4.0 +ARG LIBJPEG_TURBO_VERSION=3.1.2 +ARG LIBTIFF_VERSION=v4.7.1 +ARG HDF5_TAG="hdf5_1.14.6" # Update base and install toolchain + Qt dependencies # Notes: @@ -31,6 +34,7 @@ RUN set -eux; \ pkg-config \ gdb \ file \ + nasm \ dpkg-dev \ fakeroot \ libnuma-dev \ @@ -104,6 +108,66 @@ RUN set -eux; \ rm -rf /var/lib/apt/lists/*; \ node --version; npm --version; (corepack enable || true) +RUN set -eux; \ + git clone --depth 1 --branch ${LIBJPEG_TURBO_VERSION} https://github.com/libjpeg-turbo/libjpeg-turbo.git /tmp/libjpeg-turbo-src; \ + mkdir /tmp/libjpeg-turbo-src/build; \ + cd /tmp/libjpeg-turbo-src/build; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_SHARED=FALSE \ + -DENABLE_STATIC=TRUE \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_INSTALL_PREFIX=/opt/libjpeg-turbo-${LIBJPEG_TURBO_VERSION}-static ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/libjpeg-turbo-src + +RUN set -eux; \ + git clone --depth 1 --branch ${LIBTIFF_VERSION} https://gitlab.com/libtiff/libtiff.git /tmp/libtiff-src; \ + mkdir /tmp/libtiff-src/build.cm; \ + cd /tmp/libtiff-src/build.cm; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -Dtools=OFF \ + -Dtests=OFF \ + -Ddocs=OFF \ + -Dlzma=OFF \ + -Djbig=OFF \ + -Dwebp=OFF \ + -Djpeg=OFF \ + -Dold-jpeg=OFF \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_INSTALL_PREFIX=/opt/libtiff-${LIBTIFF_VERSION}-static \ + ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/libtiff-src + +RUN set -eux; \ + git clone --depth 1 --branch ${HDF5_TAG} https://github.com/HDFGroup/hdf5 /tmp/hdf5-src; \ + cd /tmp/hdf5-src; \ + mkdir build && cd build; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DHDF5_BUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTING=OFF \ + -DHDF5_BUILD_TOOLS=OFF \ + -DHDF5_BUILD_EXAMPLES=OFF \ + -DHDF5_ENABLE_SZIP_SUPPORT=OFF \ + -DHDF5_ENABLE_SZIP_ENCODING=OFF \ + -DHDF5_BUILD_CPP_LIB=OFF \ + -DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \ + -DCMAKE_INSTALL_PREFIX=/opt/hdf5-${HDF5_TAG}-static ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/hdf5-src + + +ENV CMAKE_PREFIX_PATH=/opt/libtiff-${LIBTIFF_VERSION}-static:/opt/libjpeg-turbo-${LIBJPEG_TURBO_VERSION}-static +ENV PKG_CONFIG_PATH=/opt/hdf5-${HDF5_TAG}-static/lib/pkgconfig:/opt/libjpeg-turbo-${LIBJPEG_TURBO_TAG}-static/lib/pkgconfig:/opt/libtiff-${LIBTIFF_TAG}-static/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig + # Use GCC/G++ 12 for builds ENV CC=/usr/bin/gcc-12 ENV CXX=/usr/bin/g++-12 @@ -143,7 +207,7 @@ RUN set -eux; \ cd /; rm -rf /tmp/qt-everywhere-src-${QT_VERSION} /tmp/qt-everywhere-src-${QT_VERSION}.tar.xz # Make Qt and Eigen discoverable by CMake -ENV CMAKE_PREFIX_PATH=/opt/qt-${QT_VERSION}-static +ENV CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}:/opt/hdf5-${HDF5_TAG}-static:/opt/qt-${QT_VERSION}-static # Set workdir for your project WORKDIR /workspace diff --git a/docker/ubuntu2404/Dockerfile b/docker/ubuntu2404/Dockerfile index eb59f2b7..7ea733e5 100644 --- a/docker/ubuntu2404/Dockerfile +++ b/docker/ubuntu2404/Dockerfile @@ -5,9 +5,9 @@ LABEL authors="leonarski_f" ENV DEBIAN_FRONTEND=noninteractive ARG OPENSSL_VERSION=3.5.4 -ARG QT_VERSION=6.9.0 ARG NODE_MAJOR=22 ARG EIGEN_TAG=3.4.0 +ARG HDF5_TAG="hdf5_1.14.6" # Update base and install toolchain + Qt dependencies RUN set -eux; \ @@ -60,6 +60,8 @@ RUN set -eux; \ libgl1-mesa-dev \ libegl1-mesa-dev \ libdbus-1-dev \ + libtiff-dev \ + libjpeg-turbo8-dev \ zlib1g-dev \ libglib2.0-dev \ libfontconfig1-dev \ @@ -87,10 +89,6 @@ RUN set -eux; \ make install_sw; \ cd /; rm -rf /tmp/openssl-${OPENSSL_VERSION} /tmp/openssl-${OPENSSL_VERSION}.tar.gz -# Expose static OpenSSL to CMake/pkg-config -ENV OPENSSL_ROOT_DIR=/opt/openssl-${OPENSSL_VERSION} -ENV PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig:${PKG_CONFIG_PATH} - # Install Node.js 22 (NodeSource) RUN set -eux; \ curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash -; \ @@ -100,6 +98,30 @@ RUN set -eux; \ rm -rf /var/lib/apt/lists/*; \ node --version; npm --version; (corepack enable || true) +RUN set -eux; \ + git clone --depth 1 --branch ${HDF5_TAG} https://github.com/HDFGroup/hdf5 /tmp/hdf5-src; \ + cd /tmp/hdf5-src; \ + mkdir build && cd build; \ + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DHDF5_BUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTING=OFF \ + -DHDF5_BUILD_TOOLS=OFF \ + -DHDF5_BUILD_EXAMPLES=OFF \ + -DHDF5_ENABLE_SZIP_SUPPORT=OFF \ + -DHDF5_ENABLE_SZIP_ENCODING=OFF \ + -DHDF5_BUILD_CPP_LIB=OFF \ + -DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \ + -DCMAKE_INSTALL_PREFIX=/opt/hdf5-${HDF5_TAG}-static ..; \ + cmake --build . -j"$(nproc)"; \ + cmake --install .; \ + rm -rf /tmp/hdf5-src + +# Expose static OpenSSL to CMake/pkg-config +ENV OPENSSL_ROOT_DIR=/opt/openssl-${OPENSSL_VERSION} +ENV PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig:${OPENSSL_ROOT_DIR}/lib64/pkgconfig:/opt/hdf5-${HDF5_TAG}-static + # Set workdir for your project WORKDIR /workspace