From cfa9d3466e26b8d00572d00f5a84facdcf4b41b0 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Tue, 10 Feb 2026 06:26:40 +0000 Subject: [PATCH 1/6] Rebuild for python 3.14 freethreading --- .ci_support/migrations/python314t.yaml | 51 ++++++++++++++++++++++++++ recipe/meta.yaml | 2 +- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 .ci_support/migrations/python314t.yaml diff --git a/.ci_support/migrations/python314t.yaml b/.ci_support/migrations/python314t.yaml new file mode 100644 index 0000000..9fb3334 --- /dev/null +++ b/.ci_support/migrations/python314t.yaml @@ -0,0 +1,51 @@ +migrator_ts: 1755739493 +__migrator: + commit_message: Rebuild for python 3.14 freethreading + migration_number: 1 + operation: key_add + primary_key: python + ordering: + python: + - 3.9.* *_cpython + - 3.10.* *_cpython + - 3.11.* *_cpython + - 3.12.* *_cpython + - 3.13.* *_cp313 + - 3.13.* *_cp313t + - 3.14.* *_cp314 # new entry + - 3.14.* *_cp314t # new entry + longterm: true + pr_limit: 20 + max_solver_attempts: 3 # this will make the bot retry "not solvable" stuff 12 times + exclude: + # this shouldn't attempt to modify the python feedstocks + - python + - pypy3.6 + - pypy-meta + - cross-python + - python_abi + exclude_pinned_pkgs: false + # if feedstock already has 3.13t migrator this is redundant, but harmless + additional_zip_keys: + - is_freethreading + - is_abi3 + wait_for_migrators: + - python314 + ignored_deps_per_node: + matplotlib: + - pyqt + pyarrow: + # optional test dependencies + - numba + - sparse + allowlist_file: free-threaded-314.txt + +python: +- 3.14.* *_cp314t +# additional entries to add for zip_keys +is_freethreading: +- true +is_python_min: +- false +is_abi3: +- false diff --git a/recipe/meta.yaml b/recipe/meta.yaml index b6f4e35..72d27a0 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -20,7 +20,7 @@ source: - python-hashbang.patch build: - number: 4 + number: 5 requirements: build: From 23128bfa94bf3e12bad425eff45fcbc3b0453c41 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Tue, 10 Feb 2026 06:28:16 +0000 Subject: [PATCH 2/6] MNT: Re-rendered with conda-smithy 3.54.2 and conda-forge-pinning 2026.02.09.23.12.1 --- .azure-pipelines/azure-pipelines-linux.yml | 12 ++++++ .azure-pipelines/azure-pipelines-osx.yml | 6 +++ .azure-pipelines/azure-pipelines-win.yml | 3 ++ .../linux_64_python3.14.____cp314t.yaml | 32 ++++++++++++++ .../linux_aarch64_python3.14.____cp314t.yaml | 32 ++++++++++++++ .../linux_ppc64le_python3.14.____cp314t.yaml | 32 ++++++++++++++ .ci_support/migrations/libffi35.yaml | 8 ---- .ci_support/osx_64_python3.14.____cp314t.yaml | 36 ++++++++++++++++ .../osx_arm64_python3.14.____cp314t.yaml | 36 ++++++++++++++++ .ci_support/win_64_python3.14.____cp314t.yaml | 26 ++++++++++++ .scripts/run_osx_build.sh | 19 +++++++++ README.md | 42 +++++++++++++++++++ azure-pipelines.yml | 2 +- 13 files changed, 277 insertions(+), 9 deletions(-) create mode 100644 .ci_support/linux_64_python3.14.____cp314t.yaml create mode 100644 .ci_support/linux_aarch64_python3.14.____cp314t.yaml create mode 100644 .ci_support/linux_ppc64le_python3.14.____cp314t.yaml delete mode 100644 .ci_support/migrations/libffi35.yaml create mode 100644 .ci_support/osx_64_python3.14.____cp314t.yaml create mode 100644 .ci_support/osx_arm64_python3.14.____cp314t.yaml create mode 100644 .ci_support/win_64_python3.14.____cp314t.yaml diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index e2dd8ba..2a92e9b 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -28,6 +28,10 @@ jobs: CONFIG: linux_64_python3.14.____cp314 UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + linux_64_python3.14.____cp314t: + CONFIG: linux_64_python3.14.____cp314t + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 linux_aarch64_python3.10.____cpython: CONFIG: linux_aarch64_python3.10.____cpython UPLOAD_PACKAGES: 'True' @@ -48,6 +52,10 @@ jobs: CONFIG: linux_aarch64_python3.14.____cp314 UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9 + linux_aarch64_python3.14.____cp314t: + CONFIG: linux_aarch64_python3.14.____cp314t + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9 linux_ppc64le_python3.10.____cpython: CONFIG: linux_ppc64le_python3.10.____cpython UPLOAD_PACKAGES: 'True' @@ -68,6 +76,10 @@ jobs: CONFIG: linux_ppc64le_python3.14.____cp314 UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9 + linux_ppc64le_python3.14.____cp314t: + CONFIG: linux_ppc64le_python3.14.____cp314t + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9 timeoutInMinutes: 360 variables: {} diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index 7871044..30c4d02 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -23,6 +23,9 @@ jobs: osx_64_python3.14.____cp314: CONFIG: osx_64_python3.14.____cp314 UPLOAD_PACKAGES: 'True' + osx_64_python3.14.____cp314t: + CONFIG: osx_64_python3.14.____cp314t + UPLOAD_PACKAGES: 'True' osx_arm64_python3.10.____cpython: CONFIG: osx_arm64_python3.10.____cpython UPLOAD_PACKAGES: 'True' @@ -38,6 +41,9 @@ jobs: osx_arm64_python3.14.____cp314: CONFIG: osx_arm64_python3.14.____cp314 UPLOAD_PACKAGES: 'True' + osx_arm64_python3.14.____cp314t: + CONFIG: osx_arm64_python3.14.____cp314t + UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 variables: {} diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 2adcb90..044ccf5 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -23,6 +23,9 @@ jobs: win_64_python3.14.____cp314: CONFIG: win_64_python3.14.____cp314 UPLOAD_PACKAGES: 'True' + win_64_python3.14.____cp314t: + CONFIG: win_64_python3.14.____cp314t + UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 variables: CONDA_BLD_PATH: D:\\bld\\ diff --git a/.ci_support/linux_64_python3.14.____cp314t.yaml b/.ci_support/linux_64_python3.14.____cp314t.yaml new file mode 100644 index 0000000..0a3b67b --- /dev/null +++ b/.ci_support/linux_64_python3.14.____cp314t.yaml @@ -0,0 +1,32 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +cairo: +- '1' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +expat: +- '2' +glib: +- '2' +libffi: +- '3.5' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314t +target_platform: +- linux-64 +zlib: +- '1' diff --git a/.ci_support/linux_aarch64_python3.14.____cp314t.yaml b/.ci_support/linux_aarch64_python3.14.____cp314t.yaml new file mode 100644 index 0000000..e11ff94 --- /dev/null +++ b/.ci_support/linux_aarch64_python3.14.____cp314t.yaml @@ -0,0 +1,32 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +cairo: +- '1' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +docker_image: +- quay.io/condaforge/linux-anvil-aarch64:alma9 +expat: +- '2' +glib: +- '2' +libffi: +- '3.5' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314t +target_platform: +- linux-aarch64 +zlib: +- '1' diff --git a/.ci_support/linux_ppc64le_python3.14.____cp314t.yaml b/.ci_support/linux_ppc64le_python3.14.____cp314t.yaml new file mode 100644 index 0000000..0417994 --- /dev/null +++ b/.ci_support/linux_ppc64le_python3.14.____cp314t.yaml @@ -0,0 +1,32 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +cairo: +- '1' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +docker_image: +- quay.io/condaforge/linux-anvil-ppc64le:alma9 +expat: +- '2' +glib: +- '2' +libffi: +- '3.5' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314t +target_platform: +- linux-ppc64le +zlib: +- '1' diff --git a/.ci_support/migrations/libffi35.yaml b/.ci_support/migrations/libffi35.yaml deleted file mode 100644 index cccfdc4..0000000 --- a/.ci_support/migrations/libffi35.yaml +++ /dev/null @@ -1,8 +0,0 @@ -__migrator: - build_number: 1 - commit_message: Rebuild for libffi 3.5 - kind: version - migration_number: 1 -libffi: -- '3.5' -migrator_ts: 1760302128.4447467 diff --git a/.ci_support/osx_64_python3.14.____cp314t.yaml b/.ci_support/osx_64_python3.14.____cp314t.yaml new file mode 100644 index 0000000..f06d617 --- /dev/null +++ b/.ci_support/osx_64_python3.14.____cp314t.yaml @@ -0,0 +1,36 @@ +MACOSX_DEPLOYMENT_TARGET: +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' +cairo: +- '1' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +expat: +- '2' +glib: +- '2' +libffi: +- '3.5' +macos_machine: +- x86_64-apple-darwin13.4.0 +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314t +target_platform: +- osx-64 +zlib: +- '1' diff --git a/.ci_support/osx_arm64_python3.14.____cp314t.yaml b/.ci_support/osx_arm64_python3.14.____cp314t.yaml new file mode 100644 index 0000000..ade5952 --- /dev/null +++ b/.ci_support/osx_arm64_python3.14.____cp314t.yaml @@ -0,0 +1,36 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +cairo: +- '1' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +expat: +- '2' +glib: +- '2' +libffi: +- '3.5' +macos_machine: +- arm64-apple-darwin20.0.0 +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314t +target_platform: +- osx-arm64 +zlib: +- '1' diff --git a/.ci_support/win_64_python3.14.____cp314t.yaml b/.ci_support/win_64_python3.14.____cp314t.yaml new file mode 100644 index 0000000..a50f10d --- /dev/null +++ b/.ci_support/win_64_python3.14.____cp314t.yaml @@ -0,0 +1,26 @@ +c_compiler: +- vs2022 +c_stdlib: +- vs +cairo: +- '1' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +expat: +- '2' +glib: +- '2' +libffi: +- '3.5' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314t +target_platform: +- win-64 +zlib: +- '1' diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 361edeb..bac7141 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -63,6 +63,25 @@ if [[ "${sha:-}" == "" ]]; then sha=$(git rev-parse HEAD) fi +if [[ "${OSX_SDK_DIR:-}" == "" ]]; then + if [[ "${CI:-}" == "" ]]; then + echo "Please set OSX_SDK_DIR to a directory where SDKs can be downloaded to. Aborting" + exit 1 + else + export OSX_SDK_DIR=/opt/conda-sdks + /usr/bin/sudo mkdir -p "${OSX_SDK_DIR}" + /usr/bin/sudo chown "${USER}" "${OSX_SDK_DIR}" + fi +else + if tmpf=$(mktemp -p "$OSX_SDK_DIR" tmp.XXXXXXXX 2>/dev/null); then + rm -f "$tmpf" + echo "OSX_SDK_DIR is writeable without sudo, continuing" + else + echo "User-provided OSX_SDK_DIR is not writeable for current user! Aborting" + exit 1 + fi +fi + echo -e "\n\nRunning the build setup script." source run_conda_forge_build_setup diff --git a/README.md b/README.md index 576d29a..31886c2 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,13 @@ Current build status variant + + linux_64_python3.14.____cp314t + + + variant + + linux_aarch64_python3.10.____cpython @@ -98,6 +105,13 @@ Current build status variant + + linux_aarch64_python3.14.____cp314t + + + variant + + linux_ppc64le_python3.10.____cpython @@ -133,6 +147,13 @@ Current build status variant + + linux_ppc64le_python3.14.____cp314t + + + variant + + osx_64_python3.10.____cpython @@ -168,6 +189,13 @@ Current build status variant + + osx_64_python3.14.____cp314t + + + variant + + osx_arm64_python3.10.____cpython @@ -203,6 +231,13 @@ Current build status variant + + osx_arm64_python3.14.____cp314t + + + variant + + win_64_python3.10.____cpython @@ -238,6 +273,13 @@ Current build status variant + + win_64_python3.14.____cp314t + + + variant + + diff --git a/azure-pipelines.yml b/azure-pipelines.yml index eff4ad6..438c19b 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -7,7 +7,7 @@ stages: jobs: - job: Skip pool: - vmImage: 'ubuntu-22.04' + vmImage: 'ubuntu-latest' variables: DECODE_PERCENTS: 'false' RET: 'true' From 6b9a4597028f11ff5ec053f7e8ee64075b02e6f4 Mon Sep 17 00:00:00 2001 From: Peter Williams Date: Mon, 9 Feb 2026 23:23:35 -0500 Subject: [PATCH 3/6] Update to upstream 1.86.0 --- recipe/meta.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 72d27a0..cce627c 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,6 +1,6 @@ {% set local_glib_pin = ">=2.82" %} {% set name = "gobject-introspection" %} -{% set version = "1.84.0" %} +{% set version = "1.86.0" %} {% set posix = 'm2-' if win else '' %} {% set native = 'm2w64-' if win else '' %} {% set prefix = 'Library/' if win else '' %} @@ -11,7 +11,7 @@ package: source: url: https://download.gnome.org/sources/{{ name }}/{{ '.'.join(version.split('.')[:2]) }}/{{ name }}-{{ version }}.tar.xz - sha256: 945b57da7ec262e5c266b89e091d14be800cc424277d82a02872b7d794a84779 + sha256: 920d1a3fcedeadc32acff95c2e203b319039dd4b4a08dd1a2dfd283d19c0b9ae patches: - cross-compile.patch - test-fix-linux.patch # [linux] @@ -20,7 +20,7 @@ source: - python-hashbang.patch build: - number: 5 + number: 0 requirements: build: From 6b29faa9960e78fbdd13cfab48ab5abe45936b10 Mon Sep 17 00:00:00 2001 From: Peter Williams Date: Mon, 9 Feb 2026 23:24:07 -0500 Subject: [PATCH 4/6] conda-forge.yml: Add even-odd versioning flag --- conda-forge.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conda-forge.yml b/conda-forge.yml index e21ddb8..8ffecbe 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,3 +1,6 @@ +bot: + version_updates: + even_odd_versions: true build_platform: osx_arm64: osx_64 conda_build: From 56cfe08db8ed5e7e74b1c1690b212f326c5dbe5e Mon Sep 17 00:00:00 2001 From: Peter Williams Date: Tue, 10 Feb 2026 00:25:32 -0500 Subject: [PATCH 5/6] Fix the clobbers OK, it looks like the typelib clobbers with glib ended up having a simple explanation. Our split package recipe was using (effectively) wildcards to pull in the `.gir` and `.typelib` files, and it appears that conda-build isn't clever enough to ignore the files installed by the glib packages. (Even if we delete them during the build process!) --- recipe/meta.yaml | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index cce627c..19674f2 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -60,7 +60,24 @@ requirements: outputs: - name: libgirepository files: - - {{ prefix }}lib/girepository-1.0 + # Unfortunately, we need to manually list all of the typelibs installed + # here by g-i, because the glib packages put some files into the + # `girepository-1.0` directory and conda-build apparently isn't clever + # enough to exclude them if we do a wildcard here. + - {{ prefix }}lib/girepository-1.0/DBus-1.0.typelib + - {{ prefix }}lib/girepository-1.0/DBusGLib-1.0.typelib + - {{ prefix }}lib/girepository-1.0/GIRepository-2.0.typelib + - {{ prefix }}lib/girepository-1.0/GL-1.0.typelib + - {{ prefix }}lib/girepository-1.0/Vulkan-1.0.typelib + - {{ prefix }}lib/girepository-1.0/cairo-1.0.typelib + - {{ prefix }}lib/girepository-1.0/fontconfig-2.0.typelib + - {{ prefix }}lib/girepository-1.0/freetype2-2.0.typelib + - {{ prefix }}lib/girepository-1.0/libxml2-2.0.typelib + - {{ prefix }}lib/girepository-1.0/win32-1.0.typelib + - {{ prefix }}lib/girepository-1.0/xfixes-4.0.typelib + - {{ prefix }}lib/girepository-1.0/xft-2.0.typelib + - {{ prefix }}lib/girepository-1.0/xlib-2.0.typelib + - {{ prefix }}lib/girepository-1.0/xrandr-1.3.typelib - {{ prefix }}lib/libgirepository-1.0* # [not win] - {{ prefix }}bin/girepository-1.0*.dll # [win] - {{ prefix }}lib/girepository-1.0.lib # [win] @@ -141,7 +158,22 @@ outputs: - {{ prefix }}libexec/gi-cross-launcher-load.sh # [not win] - {{ prefix }}libexec/gi-cross-launcher-save.sh # [not win] - {{ prefix }}share/aclocal/introspection.m4 - - {{ prefix }}share/gir-1.0 + # See remark above about a similar big batch of files: + - {{ prefix }}share/gir-1.0/DBus-1.0.gir + - {{ prefix }}share/gir-1.0/DBusGLib-1.0.gir + - {{ prefix }}share/gir-1.0/GIRepository-2.0.gir + - {{ prefix }}share/gir-1.0/GL-1.0.gir + - {{ prefix }}share/gir-1.0/Vulkan-1.0.gir + - {{ prefix }}share/gir-1.0/cairo-1.0.gir + - {{ prefix }}share/gir-1.0/fontconfig-2.0.gir + - {{ prefix }}share/gir-1.0/freetype2-2.0.gir + - {{ prefix }}share/gir-1.0/gir-1.2.rnc + - {{ prefix }}share/gir-1.0/libxml2-2.0.gir + - {{ prefix }}share/gir-1.0/win32-1.0.gir + - {{ prefix }}share/gir-1.0/xfixes-4.0.gir + - {{ prefix }}share/gir-1.0/xft-2.0.gir + - {{ prefix }}share/gir-1.0/xlib-2.0.gir + - {{ prefix }}share/gir-1.0/xrandr-1.3.gir - {{ prefix }}share/gobject-introspection-1.0/tests requirements: # include build and host requirements to get proper build string From 9186c75deacef0d31efbb94cb53695a3a94674a3 Mon Sep 17 00:00:00 2001 From: Peter Williams Date: Tue, 10 Feb 2026 10:18:29 -0500 Subject: [PATCH 6/6] Work around API breakage in setuptools 81 --- recipe/meta.yaml | 1 + recipe/setuptools-compat.patch | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 recipe/setuptools-compat.patch diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 19674f2..7108a97 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -18,6 +18,7 @@ source: # https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/265 - pkg-config.patch - python-hashbang.patch + - setuptools-compat.patch build: number: 0 diff --git a/recipe/setuptools-compat.patch b/recipe/setuptools-compat.patch new file mode 100644 index 0000000..c9672fe --- /dev/null +++ b/recipe/setuptools-compat.patch @@ -0,0 +1,14 @@ +diff --git a/giscanner/msvccompiler.py b/giscanner/msvccompiler.py +index c9f14b5..1cd57df 100644 +--- a/giscanner/msvccompiler.py ++++ b/giscanner/msvccompiler.py +@@ -40,7 +40,8 @@ class MSVCCompiler(DistutilsMSVCCompiler): + + def __init__(self, verbose=0, dry_run=0, force=0): + super(DistutilsMSVCCompiler, self).__init__() +- CCompiler.__init__(self, verbose, dry_run, force) ++ # dry_run removed in setuptools 81; just ignore it ++ CCompiler.__init__(self, verbose=verbose, force=force) + self.__paths = [] + self.__arch = None # deprecated name + self.initialized = False