Skip to content

ci: align conda-forge workflow with the feedstock build - #398

Open
antonwolfy wants to merge 2 commits into
masterfrom
align-cf-workflow-with-feedstock
Open

antonwolfy wants to merge 2 commits into
masterfrom
align-cf-workflow-with-feedstock

Conversation

@antonwolfy

@antonwolfy antonwolfy commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Description

conda-package-cf.yml is meant to catch conda-forge problems before a feedstock PR does, but it built and tested conda-recipe-cf differently from conda-forge/mkl_fft-feedstock. This PR closes the gaps found by comparing the two: the feedstock's latest CI run (2.4.0, build 1) against the latest conda-package-cf.yml run on master.

Commit 1: align the build with the feedstock

Feedstock Before After
Build-time NumPy newest 2.x (numpy: '2'): 2.4.6 on 3.11, 2.5.4 on 3.12+ hard-coded 2.3 on 3.11–3.14 numpy: '2' in conda_build_config.yaml
NumPy run requirement from NumPy's run_exports bare numpy from NumPy's run_exports
Recipe test: section (pip check, imports, pytest) runs skipped (--no-test) runs
Linux compiler / sysroot gcc 15 / 2.17 gcc 16 (unpinned) / 2.28 gcc 15 / 2.17
Windows runner windows-2022 (VS 2022) windows-latest, now windows-2025-vs2026 (VS 2026) windows-2022
Python 3.10 not built built and tested dropped

Notes:

  • --numpy 2 can't be used. conda-build's legacy CLI handling expands dotless versions (27 → 2.7), so 2 becomes 2. and the solver rejects it. The pin therefore lives in conda_build_config.yaml, the way the feedstock sets it, and the per-row numpy matrix values are gone. Build job names lose the NumPy part, e.g. build_linux (3.11); none of them is a required check.
  • The NumPy run requirement change matches the feedstock recipe since 2.4.0.
  • The removed cxx_compiler* entries were unused, since the recipe has no C++ compiler. They had been copied from the Intel-channel recipe config.
  • Python 3.10 reached end of life on 2026-10-01, and conda-forge's mkl_fft 2.4.0 is built for 3.11–3.15 only. 3.10 is still covered by conda-package.yml, build_pip.yml and the clang workflows.

Commit 2: fix the conda package caches

  • The Windows cache steps in both conda workflows cached /home/runner/conda_pkgs_dir, which doesn't exist on Windows. setup-miniconda uses C:\Users\runneradmin\conda_pkgs_dir, so nothing was ever saved or restored. They now cache ~/conda_pkgs_dir.
  • conda-package.yml and conda-package-cf.yml used identical cache keys with the same path. On master, the build_linux 3.15 jobs of both workflows hit Linux-conda-0-python-3.15-6aee6ded… by exact key, so neither saved its own packages, and the restore-keys prefixes matched across workflows too. Keys in conda-package-cf.yml now have a cf segment.

The first run after merge will miss the cache for the conda-forge jobs and all Windows jobs and create new entries, about 2.5–3 GB each judging by the current Linux entries.

Not addressed here

  • The Linux jobs still install conda-build from Anaconda defaults via the runner's preinstalled miniconda; the feedstock uses conda-forge only.

Checklist

  • NumPy/SciPy FFT API compatibility preserved, or the break is intentional and called out above.
  • Behavior changes have tests in mkl_fft/tests/; bug fixes have a regression test.
  • CHANGELOG.md updated under ## [dev] with a [gh-NNN] link, or the change isn't user-visible.

Make conda-package-cf.yml build and test the recipe the way
conda-forge/mkl_fft-feedstock does, so issues show up here before
a feedstock PR:

- Pin numpy to '2' in conda_build_config.yaml, like conda-forge
  pinning, so each Python builds against the newest NumPy 2.x
  instead of hard-coded 2.2/2.3/2.5 rows. The --numpy CLI flag is
  dropped because conda-build turns "2" into an invalid "2." spec.
- Rely on numpy run_exports instead of a bare numpy run requirement,
  as the feedstock recipe does since 2.4.0.
- Stop passing --no-test, so the recipe test section (pip check,
  imports, pytest) runs as in the feedstock.
- Use gcc 15 and sysroot 2.17 on Linux, as conda-forge pinning does,
  and drop the unused cxx_compiler entries.
- Build on windows-2022 to get Visual Studio 2022, as the feedstock
  does, instead of windows-latest which now ships Visual Studio 2026.
- Drop Python 3.10, which conda-forge no longer builds.
- Point the Windows cache steps at ~/conda_pkgs_dir, the package
  directory setup-miniconda configures; /home/runner/conda_pkgs_dir
  does not exist on Windows, so nothing was cached.
- Point the Windows cache steps in conda-package.yml at
  ~/conda_pkgs_dir, the package directory setup-miniconda
  configures. /home/runner/conda_pkgs_dir does not exist on Windows,
  so the build and test caches were never saved or restored.
- Add a "cf" segment to the cache keys and restore-keys in
  conda-package-cf.yml. Both workflows used the same
  "<os>-conda-<n>-python-<ver>-<hash>" keys with the same path, so
  their build jobs hit each other's caches by exact key and neither
  saved its own packages, and restore-keys prefixes matched across
  workflows too. The fixed Windows paths would have collided the
  same way.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant