From e1788a33807efcde486adc9cc6dccc2c946097f4 Mon Sep 17 00:00:00 2001 From: Gaurav Sharma Date: Wed, 7 Jan 2026 12:02:22 +0530 Subject: [PATCH 1/3] CI: Upgrade RHEL 9 containers to Python 3.12 - Updated both x86_64 and ARM64 RHEL 9 containers to use Python 3.12 - Changed from python3 (3.9) to python3.12 packages - Updated venv creation and include paths to python3.12 - Fixes test failures due to zip(strict=True) requiring Python 3.10+ - Python 3.12 available since RHEL 9.4 --- eng/pipelines/pr-validation-pipeline.yml | 28 ++++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/eng/pipelines/pr-validation-pipeline.yml b/eng/pipelines/pr-validation-pipeline.yml index ebdda36f..3d5637a0 100644 --- a/eng/pipelines/pr-validation-pipeline.yml +++ b/eng/pipelines/pr-validation-pipeline.yml @@ -1101,9 +1101,9 @@ jobs: dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms || dnf config-manager --set-enabled ubi-9-codeready-builder - # Install Python 3.9 (available in RHEL 9 UBI) and development tools - dnf install -y python3 python3-pip python3-devel cmake curl wget gnupg2 glibc-devel kernel-headers - dnf install -y python3-libs python3-debug + # Install Python 3.12 (available in RHEL 9.4+) and development tools + dnf install -y python3.12 python3.12-pip python3.12-devel cmake curl wget gnupg2 glibc-devel kernel-headers + dnf install -y python3.12-libs dnf install -y gcc gcc-c++ make binutils dnf install -y cmake # If that doesn't work, try installing from different repositories @@ -1112,7 +1112,7 @@ jobs: dnf --enablerepo=ubi-9-codeready-builder install -y gcc gcc-c++ fi # Verify installation - python3 --version + python3.12 --version which gcc && which g++ gcc --version g++ --version @@ -1164,8 +1164,8 @@ jobs: - script: | # Install Python dependencies in the container using virtual environment docker exec test-container-rhel9 bash -c " - # Create a virtual environment with Python 3.9 - python3 -m venv myvenv + # Create a virtual environment with Python 3.12 + python3.12 -m venv myvenv source myvenv/bin/activate # Install dependencies in the virtual environment @@ -1181,7 +1181,7 @@ jobs: # Build pybind bindings in the container docker exec test-container-rhel9 bash -c " source myvenv/bin/activate - ls /usr/include/python3.9 + ls /usr/include/python3.12 # Set compiler environment variables export CC=/usr/bin/gcc export CXX=/usr/bin/g++ @@ -1317,9 +1317,9 @@ jobs: dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms || dnf config-manager --set-enabled ubi-9-codeready-builder - # Install Python 3.9 (available in RHEL 9 UBI) and development tools - dnf install -y python3 python3-pip python3-devel cmake curl wget gnupg2 glibc-devel kernel-headers - dnf install -y python3-libs python3-debug + # Install Python 3.12 (available in RHEL 9.4+) and development tools + dnf install -y python3.12 python3.12-pip python3.12-devel cmake curl wget gnupg2 glibc-devel kernel-headers + dnf install -y python3.12-libs dnf install -y gcc gcc-c++ make binutils dnf install -y cmake # If that doesn't work, try installing from different repositories @@ -1328,7 +1328,7 @@ jobs: dnf --enablerepo=ubi-9-codeready-builder install -y gcc gcc-c++ fi # Verify installation and architecture - python3 --version + python3.12 --version which gcc && which g++ gcc --version g++ --version @@ -1383,8 +1383,8 @@ jobs: - script: | # Install Python dependencies in the container using virtual environment docker exec test-container-rhel9-arm64 bash -c " - # Create a virtual environment with Python 3.9 - python3 -m venv myvenv + # Create a virtual environment with Python 3.12 + python3.12 -m venv myvenv source myvenv/bin/activate # Install dependencies in the virtual environment @@ -1400,7 +1400,7 @@ jobs: # Build pybind bindings in the ARM64 container docker exec test-container-rhel9-arm64 bash -c " source myvenv/bin/activate - ls /usr/include/python3.9 + ls /usr/include/python3.12 # Set compiler environment variables export CC=/usr/bin/gcc export CXX=/usr/bin/g++ From c15062959e20a6e4c0e9a8421bef25a519caac59 Mon Sep 17 00:00:00 2001 From: Gaurav Sharma Date: Wed, 7 Jan 2026 12:27:44 +0530 Subject: [PATCH 2/3] FIX: Remove curl/wget to avoid conflict with curl-minimal in RHEL 9 - curl conflicts with pre-installed curl-minimal causing dnf install to fail - This prevented python3.12-devel from being installed - Consolidated Python packages into single dnf command - curl-minimal provides curl functionality, so no functionality lost --- eng/pipelines/pr-validation-pipeline.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/eng/pipelines/pr-validation-pipeline.yml b/eng/pipelines/pr-validation-pipeline.yml index 3d5637a0..6d3452c3 100644 --- a/eng/pipelines/pr-validation-pipeline.yml +++ b/eng/pipelines/pr-validation-pipeline.yml @@ -1102,10 +1102,9 @@ jobs: subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms || dnf config-manager --set-enabled ubi-9-codeready-builder # Install Python 3.12 (available in RHEL 9.4+) and development tools - dnf install -y python3.12 python3.12-pip python3.12-devel cmake curl wget gnupg2 glibc-devel kernel-headers - dnf install -y python3.12-libs - dnf install -y gcc gcc-c++ make binutils - dnf install -y cmake + # Note: curl and wget omitted to avoid conflicts with curl-minimal + dnf install -y python3.12 python3.12-pip python3.12-devel python3.12-libs gnupg2 glibc-devel kernel-headers + dnf install -y gcc gcc-c++ make binutils cmake # If that doesn't work, try installing from different repositories if ! which gcc; then echo 'Trying alternative gcc installation...' @@ -1318,10 +1317,9 @@ jobs: subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms || dnf config-manager --set-enabled ubi-9-codeready-builder # Install Python 3.12 (available in RHEL 9.4+) and development tools - dnf install -y python3.12 python3.12-pip python3.12-devel cmake curl wget gnupg2 glibc-devel kernel-headers - dnf install -y python3.12-libs - dnf install -y gcc gcc-c++ make binutils - dnf install -y cmake + # Note: curl and wget omitted to avoid conflicts with curl-minimal + dnf install -y python3.12 python3.12-pip python3.12-devel python3.12-libs gnupg2 glibc-devel kernel-headers + dnf install -y gcc gcc-c++ make binutils cmake # If that doesn't work, try installing from different repositories if ! which gcc; then echo 'Trying alternative gcc installation...' From b403d401991303b2df4e4ca18cde509ad63de87f Mon Sep 17 00:00:00 2001 From: Gaurav Sharma Date: Wed, 7 Jan 2026 12:57:11 +0530 Subject: [PATCH 3/3] CI: Add retry for ARM64 builds to handle QEMU emulation flakiness - Added retryCountOnTaskFailure: 1 to all ARM64 build steps - Addresses segfaults during compilation under QEMU user-mode emulation - Affects Debian/Ubuntu ARM64, RHEL 9 ARM64, and Alpine ARM64 --- eng/pipelines/pr-validation-pipeline.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eng/pipelines/pr-validation-pipeline.yml b/eng/pipelines/pr-validation-pipeline.yml index 6d3452c3..5503e501 100644 --- a/eng/pipelines/pr-validation-pipeline.yml +++ b/eng/pipelines/pr-validation-pipeline.yml @@ -982,6 +982,7 @@ jobs: ./build.sh " displayName: 'Build pybind bindings (.so) in $(distroName) ARM64 container' + retryCountOnTaskFailure: 2 - script: | # Uninstall ODBC Driver before running tests @@ -1408,6 +1409,7 @@ jobs: ./build.sh " displayName: 'Build pybind bindings (.so) in RHEL 9 ARM64 container' + retryCountOnTaskFailure: 2 - script: | # Uninstall ODBC Driver before running tests @@ -1879,6 +1881,7 @@ jobs: ./build.sh " displayName: 'Build pybind bindings (.so) in Alpine ARM64 container' + retryCountOnTaskFailure: 2 - script: | # Uninstall ODBC Driver before running tests to use bundled libraries