From 367321be47035e2ec2efb940da5a314e175735a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Thu, 22 Jan 2026 11:02:11 +0100 Subject: [PATCH 1/8] Trigger Windows wheel rebuild --- .env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.env b/.env index dad867f8f66..6d64d284780 100644 --- a/.env +++ b/.env @@ -102,8 +102,8 @@ VCPKG="4334d8b4c8916018600212ab4dd4bbdc343065d1" # 2025.09.17 Release # ci/docker/python-*-windows-*.dockerfile or the vcpkg config. # This is a workaround for our CI problem that "archery docker build" doesn't # use pulled built images in dev/tasks/python-wheels/github.windows.yml. -PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2025-10-13 -PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION=2025-10-13 +PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2026-01-22 +PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION=2026-01-22 # Use conanio/${CONAN_BASE}:{CONAN_VERSION} for "docker compose run --rm conan". # See https://github.com/conan-io/conan-docker-tools#readme and From 3f780d166d28964a7464decafdad6717652a7e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Thu, 22 Jan 2026 12:32:41 +0100 Subject: [PATCH 2/8] Use choco instead of trying to manually install msix --- ci/docker/python-wheel-windows-vs2022-base.dockerfile | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/ci/docker/python-wheel-windows-vs2022-base.dockerfile b/ci/docker/python-wheel-windows-vs2022-base.dockerfile index e63b8fc9945..0b07abd2e64 100644 --- a/ci/docker/python-wheel-windows-vs2022-base.dockerfile +++ b/ci/docker/python-wheel-windows-vs2022-base.dockerfile @@ -84,21 +84,13 @@ RUN ` [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; ` iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) -# Install the Python install manager -# -# See https://docs.python.org/dev/using/windows.html#python-install-manager and -# https://www.python.org/ftp/python/pymanager/ -RUN ` - $pymanager_url = 'https://www.python.org/ftp/python/pymanager/python-manager-25.0.msix'; ` - Invoke-WebRequest -Uri $pymanager_url -OutFile 'C:\Windows\pymanager.msix'; ` - Add-AppxPackage C:\Windows\pymanager.msix - SHELL ["cmd", "/S", "/C"] # Install CMake and other tools ARG cmake=3.31.2 RUN choco install --no-progress -r -y cmake --version=%cmake% --installargs 'ADD_CMAKE_TO_PATH=System' RUN choco install --no-progress -r -y git gzip ninja wget +RUN choco install --no-progress -r -y pymanager # Add UNIX tools to PATH RUN setx path "%path%;C:\Program Files\Git\usr\bin" From 62b1e052665c4ec2f6e05c80cb9a9084a04cad8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Thu, 22 Jan 2026 13:09:42 +0100 Subject: [PATCH 3/8] Bump to newer cmake v3 on chocolatey --- ci/docker/python-wheel-windows-vs2022-base.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/docker/python-wheel-windows-vs2022-base.dockerfile b/ci/docker/python-wheel-windows-vs2022-base.dockerfile index 0b07abd2e64..23a23436378 100644 --- a/ci/docker/python-wheel-windows-vs2022-base.dockerfile +++ b/ci/docker/python-wheel-windows-vs2022-base.dockerfile @@ -87,7 +87,7 @@ RUN ` SHELL ["cmd", "/S", "/C"] # Install CMake and other tools -ARG cmake=3.31.2 +ARG cmake=3.31.9 RUN choco install --no-progress -r -y cmake --version=%cmake% --installargs 'ADD_CMAKE_TO_PATH=System' RUN choco install --no-progress -r -y git gzip ninja wget RUN choco install --no-progress -r -y pymanager From 9bb6af8b607c3dffcbd43e94a6300ec114262efa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Thu, 22 Jan 2026 13:23:12 +0100 Subject: [PATCH 4/8] What if we try installing the msi instead of the msix? --- ci/docker/python-wheel-windows-vs2022-base.dockerfile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ci/docker/python-wheel-windows-vs2022-base.dockerfile b/ci/docker/python-wheel-windows-vs2022-base.dockerfile index 23a23436378..426286ebe07 100644 --- a/ci/docker/python-wheel-windows-vs2022-base.dockerfile +++ b/ci/docker/python-wheel-windows-vs2022-base.dockerfile @@ -84,13 +84,22 @@ RUN ` [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; ` iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) +# Install the Python install manager +# +# See https://docs.python.org/dev/using/windows.html#python-install-manager and +# https://www.python.org/ftp/python/pymanager/ +RUN ` + $pymanager_url = 'https://www.python.org/ftp/python/pymanager/python-manager-25.0.msi'; ` + Invoke-WebRequest -Uri $pymanager_url -OutFile 'C:\Windows\pymanager.msi'; ` + Start-Process msiexec.exe -Wait -ArgumentList '/i C:\Windows\pymanager.msi /quiet /norestart'; ` + Remove-Item C:\Windows\pymanager.msi + SHELL ["cmd", "/S", "/C"] # Install CMake and other tools ARG cmake=3.31.9 RUN choco install --no-progress -r -y cmake --version=%cmake% --installargs 'ADD_CMAKE_TO_PATH=System' RUN choco install --no-progress -r -y git gzip ninja wget -RUN choco install --no-progress -r -y pymanager # Add UNIX tools to PATH RUN setx path "%path%;C:\Program Files\Git\usr\bin" From ec82969eb45e10e44595dd18fb88249af6e04160 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Thu, 22 Jan 2026 16:25:43 +0100 Subject: [PATCH 5/8] Try using new pymanager API --- ci/docker/python-wheel-windows-vs2022.dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/docker/python-wheel-windows-vs2022.dockerfile b/ci/docker/python-wheel-windows-vs2022.dockerfile index d4d5e57cd2c..dc50cdda0ec 100644 --- a/ci/docker/python-wheel-windows-vs2022.dockerfile +++ b/ci/docker/python-wheel-windows-vs2022.dockerfile @@ -27,7 +27,8 @@ ARG python=3.10 ARG python_variant=default ENV PYTHON_VERSION=${python} ENV PYTHON_VARIANT=${python_variant} -RUN pymanager install --version %PYTHON_VERSION% --variant %PYTHON_VARIANT% +# TODO: Fix pymanager to support freethread variants +RUN pymanager install %PYTHON_VERSION% RUN py -%PYTHON_VERSION% -m pip install -U pip setuptools From 6a253a0efe37c1e0c6de2f257341de22968cdc04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Fri, 23 Jan 2026 11:08:54 +0100 Subject: [PATCH 6/8] Define required PYTHON_CMD in environment --- ci/docker/python-wheel-windows-vs2022.dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/docker/python-wheel-windows-vs2022.dockerfile b/ci/docker/python-wheel-windows-vs2022.dockerfile index dc50cdda0ec..60cc875fa1a 100644 --- a/ci/docker/python-wheel-windows-vs2022.dockerfile +++ b/ci/docker/python-wheel-windows-vs2022.dockerfile @@ -35,4 +35,6 @@ RUN py -%PYTHON_VERSION% -m pip install -U pip setuptools COPY python/requirements-wheel-build.txt C:/arrow/python/ RUN py -%PYTHON_VERSION% -m pip install -r C:/arrow/python/requirements-wheel-build.txt +ENV PYTHON_CMD="py -${python}" + ENV PYTHON=${python} From 986f43c26c42f1fed103249e708f7a425ab042f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Fri, 23 Jan 2026 15:28:02 +0100 Subject: [PATCH 7/8] Try to fix it for threaded wheels too --- ci/docker/python-wheel-windows-vs2022.dockerfile | 7 +++---- compose.yaml | 3 +-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ci/docker/python-wheel-windows-vs2022.dockerfile b/ci/docker/python-wheel-windows-vs2022.dockerfile index 60cc875fa1a..0fa388b9bc6 100644 --- a/ci/docker/python-wheel-windows-vs2022.dockerfile +++ b/ci/docker/python-wheel-windows-vs2022.dockerfile @@ -24,10 +24,9 @@ FROM ${base} # Define the full version number otherwise choco falls back to patch number 0 (3.10 => 3.10.0) ARG python=3.10 -ARG python_variant=default -ENV PYTHON_VERSION=${python} -ENV PYTHON_VARIANT=${python_variant} -# TODO: Fix pymanager to support freethread variants +ARG python_variant_suffix="" +ENV PYTHON_VERSION=${python}${python_variant_suffix} + RUN pymanager install %PYTHON_VERSION% RUN py -%PYTHON_VERSION% -m pip install -U pip setuptools diff --git a/compose.yaml b/compose.yaml index 2bd38a381e8..b538a00795e 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1388,7 +1388,6 @@ services: args: base: ${REPO}:python-wheel-windows-vs2022-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} python: ${PYTHON} - python_variant: default context: . dockerfile: ci/docker/python-wheel-windows-vs2022.dockerfile # This should make the pushed images reusable, but the image gets rebuilt. @@ -1405,7 +1404,7 @@ services: args: base: ${REPO}:python-wheel-windows-vs2022-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} python: ${PYTHON} - python_variant: freethreaded + python_variant_suffix: t context: . dockerfile: ci/docker/python-wheel-windows-vs2022.dockerfile # This should make the pushed images reusable, but the image gets rebuilt. From 416297be4bf2b6b1d90b8dab7a866622905cfd15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Mon, 26 Jan 2026 10:14:13 +0100 Subject: [PATCH 8/8] Try fixing free-threaded wheel --- ci/docker/python-wheel-windows-vs2022.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/docker/python-wheel-windows-vs2022.dockerfile b/ci/docker/python-wheel-windows-vs2022.dockerfile index 0fa388b9bc6..e25ebef156c 100644 --- a/ci/docker/python-wheel-windows-vs2022.dockerfile +++ b/ci/docker/python-wheel-windows-vs2022.dockerfile @@ -34,6 +34,6 @@ RUN py -%PYTHON_VERSION% -m pip install -U pip setuptools COPY python/requirements-wheel-build.txt C:/arrow/python/ RUN py -%PYTHON_VERSION% -m pip install -r C:/arrow/python/requirements-wheel-build.txt -ENV PYTHON_CMD="py -${python}" +ENV PYTHON_CMD="py -${python}${python_variant_suffix}" ENV PYTHON=${python}