From d872651ea27fc307d0e13fc73ade30b3d1ad0c28 Mon Sep 17 00:00:00 2001 From: Abhishek Krishna Date: Wed, 28 Jan 2026 12:11:13 +0530 Subject: [PATCH 1/3] Upgrade Python from 3.9 to 3.14: install from source in Dockerfile, pin pip to 24.2, and update CI configs --- .semaphore/cp_dockerfile_build.yml | 2 +- .semaphore/semaphore.yml | 2 +- base/Dockerfile.ubi8 | 35 +++++++++++++++++++++++++----- base/pom.xml | 8 +++---- pom.xml | 4 ++-- 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/.semaphore/cp_dockerfile_build.yml b/.semaphore/cp_dockerfile_build.yml index 93859d6601..a40692aa14 100644 --- a/.semaphore/cp_dockerfile_build.yml +++ b/.semaphore/cp_dockerfile_build.yml @@ -25,7 +25,7 @@ global_job_config: commands: - checkout - if [[ $SEMAPHORE_GIT_BRANCH =~ ^7\..* ]]; then sem-version java 8; else sem-version java 17; fi - - sem-version python 3.9 + - sem-version python 3.14 - . vault-setup - . cache-maven restore - pip install tox==3.28.0 diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml index 08a785c442..2454c2490a 100644 --- a/.semaphore/semaphore.yml +++ b/.semaphore/semaphore.yml @@ -25,7 +25,7 @@ global_job_config: commands: - checkout - if [[ $SEMAPHORE_GIT_BRANCH =~ ^7\..* ]]; then sem-version java 8; else sem-version java 17; fi - - sem-version python 3.9 + - sem-version python 3.14 - . vault-setup - . cache-maven restore - pip install tox==3.28.0 diff --git a/base/Dockerfile.ubi8 b/base/Dockerfile.ubi8 index e946cfbd2e..aacc5fd3e7 100644 --- a/base/Dockerfile.ubi8 +++ b/base/Dockerfile.ubi8 @@ -53,7 +53,7 @@ ENV CUB_CLASSPATH='"/usr/share/java/cp-base-new/*"' ARG OPENSSL_VERSION="" ARG WGET_VERSION="" ARG NETCAT_VERSION="" -ARG PYTHON39_VERSION="" +ARG PYTHON314_VERSION="3.14.0" ARG TAR_VERSION="" ARG PROCPS_VERSION="" ARG KRB5_WORKSTATION_VERSION="" @@ -85,8 +85,6 @@ RUN microdnf --nodocs install yum \ "openssl${OPENSSL_VERSION}" \ "wget${WGET_VERSION}" \ "nmap-ncat${NETCAT_VERSION}" \ - "python39${PYTHON39_VERSION}" \ - "python39-pip${PYTHON_PIP_VERSION}" \ "tar${TAR_VERSION}" \ "procps-ng${PROCPS_VERSION}" \ "krb5-workstation${KRB5_WORKSTATION_VERSION}" \ @@ -99,9 +97,34 @@ RUN microdnf --nodocs install yum \ "curl${CURL_VERSION}" \ "libcurl${CURL_VERSION}" \ "zulu11-ca-jdk-headless${ZULU_OPENJDK_VERSION}" "zulu11-ca-jre-headless${ZULU_OPENJDK_VERSION}" \ - && alternatives --set python /usr/bin/python3 \ - && python3 -m pip install --upgrade "setuptools${PYTHON_SETUPTOOLS_VERSION}" \ - && python3 -m pip install --prefer-binary --prefix=/usr/local --upgrade "${PYTHON_CONFLUENT_DOCKER_UTILS_INSTALL_SPEC}" \ + gcc \ + make \ + bzip2-devel \ + expat-devel \ + gdbm-devel \ + libffi-devel \ + libnsl2-devel \ + ncurses-devel \ + readline-devel \ + sqlite-devel \ + tk-devel \ + zlib-devel \ + && cd /tmp \ + && wget -q https://www.python.org/ftp/python/${PYTHON314_VERSION}/Python-${PYTHON314_VERSION}.tgz \ + && tar -xzf Python-${PYTHON314_VERSION}.tgz \ + && cd Python-${PYTHON314_VERSION} \ + && ./configure --prefix=/usr/local --enable-optimizations --with-ensurepip=yes \ + && make -j$(nproc) \ + && make altinstall \ + && ln -sf /usr/local/bin/python3.14 /usr/local/bin/python3 \ + && ln -sf /usr/local/bin/python3.14 /usr/local/bin/python \ + && /usr/local/bin/python3.14 -m ensurepip --upgrade \ + && /usr/local/bin/python3.14 -m pip install --upgrade "pip==${PYTHON_PIP_VERSION}" \ + && /usr/local/bin/python3.14 -m pip install --upgrade "setuptools${PYTHON_SETUPTOOLS_VERSION}" \ + && /usr/local/bin/python3.14 -m pip install --prefer-binary --prefix=/usr/local --upgrade "${PYTHON_CONFLUENT_DOCKER_UTILS_INSTALL_SPEC}" \ + && cd / \ + && rm -rf /tmp/Python-${PYTHON314_VERSION}* \ + && yum remove -y gcc make bzip2-devel expat-devel gdbm-devel libffi-devel libnsl2-devel ncurses-devel readline-devel sqlite-devel tk-devel zlib-devel \ && yum remove -y git \ && yum clean all \ && rm -rf /tmp/* \ diff --git a/base/pom.xml b/base/pom.xml index 890d69d417..5a4da6e761 100644 --- a/base/pom.xml +++ b/base/pom.xml @@ -126,7 +126,7 @@ -${ubi8-minimal.openssl.version} -${ubi8-minimal.wget.version} -${ubi8-minimal.nmap-ncat.version} - -${ubi8-minimal.python39.version} + ${ubi8-minimal.python314.version} -${ubi8-minimal.tar.version} -${ubi8-minimal.procps-ng.version} -${ubi8-minimal.krb5-workstation.version} @@ -136,7 +136,7 @@ -${ubi8-minimal.glibc.version} -${ubi8-minimal.curl.version} -${ubi8-minimal.zulu11-ca-jdk-headless.version} - -${ubi8-minimal.python39-pip.version} + ${ubi8-minimal.python314-pip.version} ==${python.setuptools.version} ${git-repo.confluent-docker-utils.tag} ${docker.skip-security-update-check} @@ -156,7 +156,7 @@ -${ubi8-minimal.openssl.version} -${ubi8-minimal.wget.version} -${ubi8-minimal.nmap-ncat.version} - -${ubi8-minimal.python39.version} + ${ubi8-minimal.python314.version} -${ubi8-minimal.tar.version} -${ubi8-minimal.procps-ng.version} -${ubi8-minimal.krb5-workstation.version} @@ -166,7 +166,7 @@ -${ubi8-minimal.glibc.version} -${ubi8-minimal.curl.version} -${ubi8-minimal.zulu11-ca-jdk-headless.version} - -${ubi8-minimal.python39-pip.version} + ${ubi8-minimal.python314-pip.version} ==${python.setuptools.version} ${git-repo.confluent-docker-utils.tag} ${docker.skip-security-update-check} diff --git a/pom.xml b/pom.xml index 6f50642cdb..dd5774612b 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ 1.1.1k-14.el8_10 1.19.5-12.el8_10 7.92-2.el8_10 - 3.9.25-2.module+el8.10.0+23718+1842ae33 + 3.14.0 1.30-11.el8_10 3.3.15-14.el8 1.18.2-32.el8_10 @@ -80,7 +80,7 @@ 2.28-251.el8_10.27 7.61.1-34.el8_10.9 11.0.30-1 - 20.2.4-9.module+el8.10.0+21329+8d76b841 + 24.2 80.9.0 From 3fd862b01046ae2b212c43ed6d68fc8d80b9ef39 Mon Sep 17 00:00:00 2001 From: Abhishek Krishna Date: Wed, 28 Jan 2026 12:32:04 +0530 Subject: [PATCH 2/3] Fix Python 3.14 build: remove unavailable packages (libnsl2-devel, readline-devel, tk-devel) and configure without readline/tkinter --- base/Dockerfile.ubi8 | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/base/Dockerfile.ubi8 b/base/Dockerfile.ubi8 index aacc5fd3e7..7e359a32d5 100644 --- a/base/Dockerfile.ubi8 +++ b/base/Dockerfile.ubi8 @@ -103,17 +103,14 @@ RUN microdnf --nodocs install yum \ expat-devel \ gdbm-devel \ libffi-devel \ - libnsl2-devel \ ncurses-devel \ - readline-devel \ sqlite-devel \ - tk-devel \ zlib-devel \ && cd /tmp \ && wget -q https://www.python.org/ftp/python/${PYTHON314_VERSION}/Python-${PYTHON314_VERSION}.tgz \ && tar -xzf Python-${PYTHON314_VERSION}.tgz \ && cd Python-${PYTHON314_VERSION} \ - && ./configure --prefix=/usr/local --enable-optimizations --with-ensurepip=yes \ + && ./configure --prefix=/usr/local --enable-optimizations --with-ensurepip=yes --without-readline --disable-tkinter \ && make -j$(nproc) \ && make altinstall \ && ln -sf /usr/local/bin/python3.14 /usr/local/bin/python3 \ @@ -124,7 +121,7 @@ RUN microdnf --nodocs install yum \ && /usr/local/bin/python3.14 -m pip install --prefer-binary --prefix=/usr/local --upgrade "${PYTHON_CONFLUENT_DOCKER_UTILS_INSTALL_SPEC}" \ && cd / \ && rm -rf /tmp/Python-${PYTHON314_VERSION}* \ - && yum remove -y gcc make bzip2-devel expat-devel gdbm-devel libffi-devel libnsl2-devel ncurses-devel readline-devel sqlite-devel tk-devel zlib-devel \ + && yum remove -y gcc make bzip2-devel expat-devel gdbm-devel libffi-devel ncurses-devel sqlite-devel zlib-devel \ && yum remove -y git \ && yum clean all \ && rm -rf /tmp/* \ From 794aedd307abc2ffdaa0a9347203a8ee1a1ee613 Mon Sep 17 00:00:00 2001 From: Abhishek Krishna Date: Wed, 28 Jan 2026 15:42:06 +0530 Subject: [PATCH 3/3] set required as false for flexibility --- base/Dockerfile.ubi8 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/base/Dockerfile.ubi8 b/base/Dockerfile.ubi8 index 7e359a32d5..b23c5d8f23 100644 --- a/base/Dockerfile.ubi8 +++ b/base/Dockerfile.ubi8 @@ -86,6 +86,7 @@ RUN microdnf --nodocs install yum \ "wget${WGET_VERSION}" \ "nmap-ncat${NETCAT_VERSION}" \ "tar${TAR_VERSION}" \ + "findutils" \ "procps-ng${PROCPS_VERSION}" \ "krb5-workstation${KRB5_WORKSTATION_VERSION}" \ "iputils${IPUTILS_VERSION}" \ @@ -110,8 +111,8 @@ RUN microdnf --nodocs install yum \ && wget -q https://www.python.org/ftp/python/${PYTHON314_VERSION}/Python-${PYTHON314_VERSION}.tgz \ && tar -xzf Python-${PYTHON314_VERSION}.tgz \ && cd Python-${PYTHON314_VERSION} \ - && ./configure --prefix=/usr/local --enable-optimizations --with-ensurepip=yes --without-readline --disable-tkinter \ - && make -j$(nproc) \ + && ./configure --prefix=/usr/local --enable-optimizations --with-ensurepip=yes --without-readline \ + && make -j$(nproc) || make -j1 \ && make altinstall \ && ln -sf /usr/local/bin/python3.14 /usr/local/bin/python3 \ && ln -sf /usr/local/bin/python3.14 /usr/local/bin/python \