From 6f7eb57c3f10de8af317ae41f2cba1019cd86df6 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Tue, 27 Jan 2026 00:59:51 +0000 Subject: [PATCH 1/2] migration: supportwindowsarm64platform --- conda-forge.yml | 10 +++++++--- recipe/meta.yaml | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/conda-forge.yml b/conda-forge.yml index a40f3fa57..04fedf236 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,8 +1,12 @@ -build_platform: {osx_arm64: osx_64, linux_ppc64le: linux_64, linux_aarch64: linux_64} +build_platform: + linux_aarch64: linux_64 + linux_ppc64le: linux_64 + osx_arm64: osx_64 + win_arm64: win_64 +conda_build: + pkg_format: '2' conda_forge_output_validation: true github: branch_name: main tooling_branch_name: main -conda_build: - pkg_format: '2' test: native_and_emulated diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 76f2deaee..1f48b8e96 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -90,6 +90,8 @@ build: requirements: build: + - python # [build_platform != target_platform] + - cross-python_{{ target_platform }} # [build_platform != target_platform] {% if from_source_control == 'yes' %} - git {% else %} From 0c6ddb01b1dbe3d0affe62e65f748d5aa2aa8149 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Tue, 27 Jan 2026 01:01:07 +0000 Subject: [PATCH 2/2] MNT: Re-rendered with conda-smithy 3.54.1 and conda-forge-pinning 2026.01.26.23.17.1 --- .azure-pipelines/azure-pipelines-linux.yml | 2 +- .azure-pipelines/azure-pipelines-osx.yml | 4 +-- .azure-pipelines/azure-pipelines-win.yml | 5 +++- .ci_support/linux_64_.yaml | 8 ++---- .ci_support/linux_aarch64_.yaml | 8 ++---- .ci_support/linux_ppc64le_.yaml | 8 ++---- .ci_support/osx_64_.yaml | 6 ++-- .ci_support/osx_arm64_.yaml | 6 ++-- .ci_support/win_64_.yaml | 6 ++-- .ci_support/win_arm64_.yaml | 32 ++++++++++++++++++++++ .gitattributes | 1 + .scripts/build_steps.sh | 2 +- .scripts/run_docker_build.sh | 2 +- .scripts/run_osx_build.sh | 21 +++++++++++++- .scripts/run_win_build.bat | 2 +- README.md | 13 +++++++-- build-locally.py | 8 ++---- 17 files changed, 93 insertions(+), 41 deletions(-) create mode 100644 .ci_support/win_arm64_.yaml diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index b1513b821..807de1f83 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -49,4 +49,4 @@ jobs: env: BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index ac0bf384e..d08eed2c6 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,7 +5,7 @@ jobs: - job: osx pool: - vmImage: macOS-13 + vmImage: macOS-15 strategy: matrix: osx_64_: @@ -37,4 +37,4 @@ jobs: env: BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 13022dde8..a387fc3b4 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -11,6 +11,9 @@ jobs: win_64_: CONFIG: win_64_ UPLOAD_PACKAGES: 'True' + win_arm64_: + CONFIG: win_arm64_ + UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 variables: CONDA_BLD_PATH: D:\\bld\\ @@ -35,4 +38,4 @@ jobs: UPLOAD_TEMP: $(UPLOAD_TEMP) BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index 81feec9b4..e91591ba8 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -3,13 +3,11 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '13' +- '14' c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -17,7 +15,7 @@ channel_targets: cxx_compiler: - gxx cxx_compiler_version: -- '13' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 expat: @@ -29,7 +27,7 @@ libuuid: ncurses: - '6' openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index 1bb0e5c63..762bae35b 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -3,13 +3,11 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '13' +- '14' c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -17,7 +15,7 @@ channel_targets: cxx_compiler: - gxx cxx_compiler_version: -- '13' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 expat: @@ -29,7 +27,7 @@ libuuid: ncurses: - '6' openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index 710b967b5..ccf8bd243 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -3,13 +3,11 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '13' +- '14' c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -17,7 +15,7 @@ channel_targets: cxx_compiler: - gxx cxx_compiler_version: -- '13' +- '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 expat: @@ -29,7 +27,7 @@ libuuid: ncurses: - '6' openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index 22d6211bb..0dfafd2a2 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -7,7 +7,7 @@ bzip2: c_compiler: - clang c_compiler_version: -- '18' +- '19' c_stdlib: - macosx_deployment_target c_stdlib_version: @@ -19,7 +19,7 @@ channel_targets: cxx_compiler: - clangxx cxx_compiler_version: -- '18' +- '19' expat: - '2' liblzma_devel: @@ -29,7 +29,7 @@ macos_machine: ncurses: - '6' openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index eff7f1ea8..49d130d4f 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -7,7 +7,7 @@ bzip2: c_compiler: - clang c_compiler_version: -- '18' +- '19' c_stdlib: - macosx_deployment_target c_stdlib_version: @@ -19,7 +19,7 @@ channel_targets: cxx_compiler: - clangxx cxx_compiler_version: -- '18' +- '19' expat: - '2' liblzma_devel: @@ -29,7 +29,7 @@ macos_machine: ncurses: - '6' openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_64_.yaml b/.ci_support/win_64_.yaml index 6d95c4c00..e57ad1024 100644 --- a/.ci_support/win_64_.yaml +++ b/.ci_support/win_64_.yaml @@ -1,7 +1,7 @@ bzip2: - '1' c_compiler: -- vs2019 +- vs2022 c_stdlib: - vs channel_sources: @@ -9,13 +9,13 @@ channel_sources: channel_targets: - conda-forge main cxx_compiler: -- vs2019 +- vs2022 expat: - '2' liblzma_devel: - '5' openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_arm64_.yaml b/.ci_support/win_arm64_.yaml new file mode 100644 index 000000000..b244fd16f --- /dev/null +++ b/.ci_support/win_arm64_.yaml @@ -0,0 +1,32 @@ +bzip2: +- '1' +c_compiler: +- vs2022 +c_stdlib: +- vs +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- vs2022 +expat: +- '2' +liblzma_devel: +- '5' +openssl: +- '3.5' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- '3.9' +sqlite: +- '3' +target_platform: +- win-arm64 +tk: +- '8.6' +zlib: +- '1' diff --git a/.gitattributes b/.gitattributes index 18f114a1f..85ccb8f4f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -24,4 +24,5 @@ bld.bat text eol=crlf /README.md linguist-generated=true azure-pipelines.yml linguist-generated=true build-locally.py linguist-generated=true +pixi.toml linguist-generated=true shippable.yml linguist-generated=true diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index deb9aa05e..2525be188 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -109,4 +109,4 @@ fi ( startgroup "Final checks" ) 2> /dev/null -touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" \ No newline at end of file +touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 6ee04aa12..b63b5a05a 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -111,4 +111,4 @@ docker run ${DOCKER_RUN_ARGS} \ test -f "$DONE_CANARY" # This closes the last group opened in `build_steps.sh` -( endgroup "Final checks" ) 2> /dev/null \ No newline at end of file +( endgroup "Final checks" ) 2> /dev/null diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 0e3c39422..bac7141a9 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 @@ -117,4 +136,4 @@ else fi ( endgroup "Uploading packages" ) 2> /dev/null -fi \ No newline at end of file +fi diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 297498b12..27c552b1a 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -148,4 +148,4 @@ if /i "%CI%" == "azure" ( echo ##[endgroup] exit /b ) -exit /b \ No newline at end of file +exit /b diff --git a/README.md b/README.md index c8a7c8961..588d14f39 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,13 @@ Current build status variant + + win_arm64 + + + variant + + @@ -167,12 +174,12 @@ it is possible to build and upload installable packages to the [conda-forge](https://anaconda.org/conda-forge) [anaconda.org](https://anaconda.org/) channel for Linux, Windows and OSX respectively. -To manage the continuous integration and simplify feedstock maintenance +To manage the continuous integration and simplify feedstock maintenance, [conda-smithy](https://github.com/conda-forge/conda-smithy) has been developed. Using the ``conda-forge.yml`` within this repository, it is possible to re-render all of this feedstock's supporting files (e.g. the CI configuration files) with ``conda smithy rerender``. -For more information please check the [conda-forge documentation](https://conda-forge.org/docs/). +For more information, please check the [conda-forge documentation](https://conda-forge.org/docs/). Terminology =========== @@ -199,7 +206,7 @@ merged, the recipe will be re-built and uploaded automatically to the everybody to install and use from the `conda-forge` channel. Note that all branches in the conda-forge/python-feedstock are immediately built and any created packages are uploaded, so PRs should be based -on branches in forks and branches in the main repository should only be used to +on branches in forks, and branches in the main repository should only be used to build distinct package versions. In order to produce a uniquely identifiable distribution: diff --git a/build-locally.py b/build-locally.py index 02c23747b..9dfe44039 100755 --- a/build-locally.py +++ b/build-locally.py @@ -106,9 +106,7 @@ def main(args=None): action="store_true", help="Setup debug environment using `conda debug`", ) - p.add_argument( - "--output-id", help="If running debug, specify the output to setup." - ) + p.add_argument("--output-id", help="If running debug, specify the output to setup.") ns = p.parse_args(args=args) verify_config(ns) @@ -124,9 +122,7 @@ def main(args=None): elif ns.config.startswith("win"): run_win_build(ns) finally: - recipe_license_file = os.path.join( - "recipe", "recipe-scripts-license.txt" - ) + recipe_license_file = os.path.join("recipe", "recipe-scripts-license.txt") if os.path.exists(recipe_license_file): os.remove(recipe_license_file)