From 45d1f749e7144607ccaed6e6fd03cadd543dfed6 Mon Sep 17 00:00:00 2001 From: Uilian Ries Date: Mon, 9 Jun 2025 17:04:20 +0200 Subject: [PATCH 1/2] Install Python 3.12 as optional version Signed-off-by: Uilian Ries --- .ci/Jenkinsfile | 2 ++ images/.env | 1 + images/base/Dockerfile | 22 ++++++++++++++++++++-- images/compose.yml | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile index 3e3a48f6..4b8c825c 100644 --- a/.ci/Jenkinsfile +++ b/.ci/Jenkinsfile @@ -88,6 +88,7 @@ def defineModernBaseImageData(Map envValues, String pr_number, String registry, imageData["buildArgs"]["CONAN_VERSION"] = conanVersion imageData["buildArgs"]["CMAKE_VERSION"] = envValues["CMAKE_VERSION"] imageData["buildArgs"]['PYTHON_VERSION'] = envValues["PYTHON_VERSION"] + imageData["buildArgs"]['PYTHON_SECOND_VERSION'] = envValues["PYTHON_SECOND_VERSION"] imageData["name"] = getModernImageName(imageData, registry) // pull images from registry to be used as cache String masterImageName = getImageMasterName(imageData) @@ -108,6 +109,7 @@ def defineModernImagesData(String compiler, String compilerVersion, Map envValue builderImage["buildArgs"]["BUILDKIT_INLINE_CACHE"] = "1" // Enable BuildKit cache builderImage["buildArgs"]["CMAKE_VERSION"] = envValues["CMAKE_VERSION"] builderImage["buildArgs"]['PYTHON_VERSION'] = envValues["PYTHON_VERSION"] + builderImage["buildArgs"]['PYTHON_SECOND_VERSION'] = envValues["PYTHON_SECOND_VERSION"] builderImage["buildArgs"]['LIBSTDCPP_VERSION'] = envValues["LIBSTDCPP_VERSION"] builderImage["buildArgs"]['LIBSTDCPP_PATCH_VERSION'] = envValues["LIBSTDCPP_PATCH_VERSION"] builderImage["buildArgs"]['LIBSTDCPP_MAJOR_VERSION'] = envValues["LIBSTDCPP_MAJOR_VERSION"] diff --git a/images/.env b/images/.env index 89928cdc..b7c8abfe 100644 --- a/images/.env +++ b/images/.env @@ -8,6 +8,7 @@ DOCKERHUB_USERNAME=conanio # This versions are mandatory by 'conan-io/conan-center-index' CMAKE_VERSION=3.15.7 PYTHON_VERSION=3.7.17 +PYTHON_SECOND_VERSION=3.12.7 LIBSTDCPP_VERSION=10.3.0 LIBSTDCPP_PATCH_VERSION=28 LIBSTDCPP_MAJOR_VERSION=10 diff --git a/images/base/Dockerfile b/images/base/Dockerfile index 0d20cb50..c805426a 100644 --- a/images/base/Dockerfile +++ b/images/base/Dockerfile @@ -18,8 +18,9 @@ COPY conan.lock conanfile.txt /opt/conan/ RUN apt-get -qq update \ && apt-get -qq install -y --no-install-recommends software-properties-common \ && add-apt-repository ppa:git-core/ppa -y \ - && apt-get -qq update \ - && apt-get -qq install -y --no-install-recommends --no-install-suggests -o=Dpkg::Use-Pty=0 \ + && apt-get -qq update + +RUN apt-get -qq install -y --no-install-recommends --no-install-suggests -o=Dpkg::Use-Pty=0 \ sudo \ binutils \ wget \ @@ -92,6 +93,23 @@ RUN wget --no-check-certificate --quiet -O /tmp/pyenv-installer https://raw.gith && ln -s /usr/share/pyshared/lsb_release.py /opt/pyenv/versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION%.*}/site-packages/lsb_release.py \ && pip install -q --upgrade --no-cache-dir pip +# Python +3.10 requires OpenSSL 1.1.x, but Ubuntu 16.04 LTS ships with OpenSSL 1.0.x +RUN wget --no-check-certificate --quiet -O /tmp/openssl-1.1.1w.tar.gz https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz \ + && tar -xzf /tmp/openssl-1.1.1w.tar.gz -C /tmp \ + && cd /tmp/openssl-1.1.1w \ + && ./Configure linux-x86_64 --prefix=/opt/ssl --openssldir=/etc/ssl --libdir=lib no-tests no-unit-test shared \ + && make -j$(nproc) \ + && make install_sw install_ssldirs \ + && rm -rf /tmp/openssl-1.1.1w* + +ARG PYTHON_SECOND_VERSION + +RUN CPPFLAGS=-I/opt/ssl/include \ + LDFLAGS="-Wl,-rpath,/opt/ssl/lib" \ + PYTHON_CONFIGURE_OPTS="--enable-shared --with-openssl=/opt/ssl --with-openssl-rpath=auto" \ + pyenv install ${PYTHON_SECOND_VERSION} \ + && update-alternatives --install /usr/local/bin/python${PYTHON_SECOND_VERSION%.*} python${PYTHON_SECOND_VERSION%.*} /opt/pyenv/versions/${PYTHON_SECOND_VERSION}/bin/python${PYTHON_SECOND_VERSION%.*} 100 + RUN printf '/usr/local/lib\n' > /etc/ld.so.conf.d/20local-lib.conf \ && printf '/usr/local/lib64\n' >> /etc/ld.so.conf.d/20local-lib.conf \ && mv /etc/ld.so.conf.d/libc.conf /etc/ld.so.conf.d/10libc.conf \ diff --git a/images/compose.yml b/images/compose.yml index 29bf4ec9..b07b16c2 100644 --- a/images/compose.yml +++ b/images/compose.yml @@ -3,6 +3,7 @@ name: 'conan-docker-tools-modern' x-common-args: &common-args CMAKE_VERSION: ${CMAKE_VERSION} PYTHON_VERSION: ${PYTHON_VERSION} + PYTHON_SECOND_VERSION: ${PYTHON_SECOND_VERSION} CONAN_VERSION: ${CONAN_VERSION} LIBSTDCPP_VERSION: ${LIBSTDCPP_VERSION} LIBSTDCPP_PATCH_VERSION: ${LIBSTDCPP_PATCH_VERSION} From 07ed7e8df8a8fc553a9180630d90bbe30b5f933c Mon Sep 17 00:00:00 2001 From: Uilian Ries Date: Tue, 10 Jun 2025 11:16:52 +0200 Subject: [PATCH 2/2] Use OpenSSL 3.x Signed-off-by: Uilian Ries --- .ci/Jenkinsfile | 2 ++ images/.env | 1 + images/base/Dockerfile | 12 +++++++----- images/compose.yml | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile index 4b8c825c..1bc05830 100644 --- a/.ci/Jenkinsfile +++ b/.ci/Jenkinsfile @@ -89,6 +89,7 @@ def defineModernBaseImageData(Map envValues, String pr_number, String registry, imageData["buildArgs"]["CMAKE_VERSION"] = envValues["CMAKE_VERSION"] imageData["buildArgs"]['PYTHON_VERSION'] = envValues["PYTHON_VERSION"] imageData["buildArgs"]['PYTHON_SECOND_VERSION'] = envValues["PYTHON_SECOND_VERSION"] + imageData["buildArgs"]['OPENSSL_VERSION'] = envValues["OPENSSL_VERSION"] imageData["name"] = getModernImageName(imageData, registry) // pull images from registry to be used as cache String masterImageName = getImageMasterName(imageData) @@ -110,6 +111,7 @@ def defineModernImagesData(String compiler, String compilerVersion, Map envValue builderImage["buildArgs"]["CMAKE_VERSION"] = envValues["CMAKE_VERSION"] builderImage["buildArgs"]['PYTHON_VERSION'] = envValues["PYTHON_VERSION"] builderImage["buildArgs"]['PYTHON_SECOND_VERSION'] = envValues["PYTHON_SECOND_VERSION"] + builderImage["buildArgs"]['OPENSSL_VERSION'] = envValues["OPENSSL_VERSION"] builderImage["buildArgs"]['LIBSTDCPP_VERSION'] = envValues["LIBSTDCPP_VERSION"] builderImage["buildArgs"]['LIBSTDCPP_PATCH_VERSION'] = envValues["LIBSTDCPP_PATCH_VERSION"] builderImage["buildArgs"]['LIBSTDCPP_MAJOR_VERSION'] = envValues["LIBSTDCPP_MAJOR_VERSION"] diff --git a/images/.env b/images/.env index b7c8abfe..e41817a1 100644 --- a/images/.env +++ b/images/.env @@ -9,6 +9,7 @@ DOCKERHUB_USERNAME=conanio CMAKE_VERSION=3.15.7 PYTHON_VERSION=3.7.17 PYTHON_SECOND_VERSION=3.12.7 +OPENSSL_VERSION=3.5.0 LIBSTDCPP_VERSION=10.3.0 LIBSTDCPP_PATCH_VERSION=28 LIBSTDCPP_MAJOR_VERSION=10 diff --git a/images/base/Dockerfile b/images/base/Dockerfile index c805426a..0a8da4c2 100644 --- a/images/base/Dockerfile +++ b/images/base/Dockerfile @@ -93,14 +93,16 @@ RUN wget --no-check-certificate --quiet -O /tmp/pyenv-installer https://raw.gith && ln -s /usr/share/pyshared/lsb_release.py /opt/pyenv/versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION%.*}/site-packages/lsb_release.py \ && pip install -q --upgrade --no-cache-dir pip -# Python +3.10 requires OpenSSL 1.1.x, but Ubuntu 16.04 LTS ships with OpenSSL 1.0.x -RUN wget --no-check-certificate --quiet -O /tmp/openssl-1.1.1w.tar.gz https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz \ - && tar -xzf /tmp/openssl-1.1.1w.tar.gz -C /tmp \ - && cd /tmp/openssl-1.1.1w \ +# Python +3.10 requires OpenSSL +1.1.x, but Ubuntu 16.04 LTS ships with OpenSSL 1.0.x +ARG OPENSSL_VERSION + +RUN wget --no-check-certificate --quiet -O /tmp/openssl.tar.gz https://github.com/openssl/openssl/releases/download/openssl-${OPENSSL_VERSION}/openssl-${OPENSSL_VERSION}.tar.gz \ + && tar -xzf /tmp/openssl.tar.gz -C /tmp \ + && cd /tmp/openssl-${OPENSSL_VERSION} \ && ./Configure linux-x86_64 --prefix=/opt/ssl --openssldir=/etc/ssl --libdir=lib no-tests no-unit-test shared \ && make -j$(nproc) \ && make install_sw install_ssldirs \ - && rm -rf /tmp/openssl-1.1.1w* + && rm -rf /tmp/openssl* ARG PYTHON_SECOND_VERSION diff --git a/images/compose.yml b/images/compose.yml index b07b16c2..549b179b 100644 --- a/images/compose.yml +++ b/images/compose.yml @@ -4,6 +4,7 @@ x-common-args: &common-args CMAKE_VERSION: ${CMAKE_VERSION} PYTHON_VERSION: ${PYTHON_VERSION} PYTHON_SECOND_VERSION: ${PYTHON_SECOND_VERSION} + OPENSSL_VERSION: ${OPENSSL_VERSION} CONAN_VERSION: ${CONAN_VERSION} LIBSTDCPP_VERSION: ${LIBSTDCPP_VERSION} LIBSTDCPP_PATCH_VERSION: ${LIBSTDCPP_PATCH_VERSION}