Repository navigation
Build the conda-forge workflow like the conda-forge feedstock - #263
Open
antonwolfy wants to merge 1 commit into
Open
antonwolfy wants to merge 1 commit into
antonwolfy wants to merge 1 commit into
Conversation
antonwolfy
requested review from
jharlow-intel,
ndgrigorian,
vlad-perevezentsev and
xaleryb
as code owners
October 28, 2026 11:36
Make conda-package-cf.yml build and test conda-recipe-cf the way conda-forge/mkl-service-feedstock does, so problems show up here before a feedstock PR: - Pin gcc 15 on Linux, clang 21 on macOS and mkl_devel 2026 (not on macOS) in conda_build_config.yaml, as conda-forge pinning does. The compilers were unpinned and resolved to gcc 16.2 and clang 23.1, so the Linux package required libgcc >=16 instead of >=15. - Drop Python 3.10, which conda-forge no longer builds, through a new python-versions input of conda-build-test.yml. 3.15t stays, as an early check before conda-forge starts its migration. - Build on windows-2022 for Visual Studio 2022, as the feedstock does. windows-latest only ships Visual Studio 2026. - Pass -v to pip in build.sh and bld.bat, so the meson output shows in the logs, as in the feedstock. Replace the test job's own install-and-pytest steps with "conda build --test" on the built package, in both workflows. CI then runs the test section of the recipe, as the feedstock does: pip check, the import test and pytest for conda-recipe-cf, the import test and pytest for conda-recipe. The test environment's Python comes from the package's python_abi dependency, so the free-threaded builds still get a free-threaded interpreter. The build job keeps --no-test, so the tests run once, on a fresh runner. Move the matrix values used in run steps into env, since zizmor flags them once the matrix depends on an input, and update the AGENTS.md files.
antonwolfy
force-pushed
the
align-cf-workflow-with-feedstock
branch
from
October 28, 2026 11:59
5a456ff to
29e7112
Compare
5 of 6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
conda-package-cf.ymlis meant to catch problems before they reach conda-forge/mkl-service-feedstock, but it built and testedconda-recipe-cf/differently from the feedstock. I compared it with the feedstock atmain(2.9.0 build 2, re-rendered 2026-10-12) and with the logs of today's master run 40669276773:conda-package-cf.ymlbeforelibgcc >=16libgcc >=15)mkl_devel20262026(not on macOS, where the recipe hasmkl-devel <2024)test:section (pip check, import, pytest)--no-test; the test job ran its ownpytestonlytest:section, throughconda build --testin the test jobwindows-2022windows-latest(Visual Studio 2026)windows-2022pip installin build scripts-v-v, so the meson output was hidden-vAlready the same before this PR: the recipe's requirements and test section, sysroot 2.17, macOS deployment target 11.0, and the run dependencies on
mkl. Onwindows-latestthevs2022activation already loaded the 14.44 toolset from the Visual Studio 2026 install, but the job depended on that image keeping the older toolset.3.15t stays in the matrix even though the feedstock has no 3.15t build yet: conda-forge has not started that migration, and the job is an early warning for it. The macOS SDK still differs (the runner's Xcode 26.6 SDK here, MacOSX 11.0 in the feedstock). Matching it would mean downloading the SDK the way conda-forge's CI does, and with the same deployment target it doesn't seem worth it.
Test job:
conda build --testIn both workflows the test job now runs
conda build --teston the downloaded package instead of indexing a local channel, reading the version fromconda search, installing the package and runningpytest. CI then runs the test section of the recipe, as the feedstock does:conda-recipe-cf:pip check,import mkl,pytest -vv --pyargs mklconda-recipe:import mkl,pytest -vv --pyargs mklThe build job keeps
--no-test, so the tests run once, on a fresh runner rather than on the machine that just built the package. The test environment's Python comes from the package'spython_abidependency, so the free-threaded packages still get a free-threaded interpreter withoutpython_spec. Test-only dependencies now belong in the recipes'test: requires:, which themkl/tests/AGENTS.mdnotes now say.I tried this locally on two packages built by #262's CI: the 3.12 package got
python 3.12.16 *_cpythonand passedpip check, the import test and pytest (188 passed, 22 skipped), and the 3.14t package gotpython 3.14.10 *_cp314t(191 passed, 19 skipped). Passing--override-channelsworks, because conda-build copies the package into its own local channel.Changes
conda-recipe-cf/conda_build_config.yaml: pinc_compiler_version(gcc 15 on Linux, clang 21 on macOS) andmkl_devel2026, as conda-forge pinning doesconda-recipe-cf/build.sh,bld.bat:pip install -v, as in the feedstockconda-build-test.yml:python-versionsinput, a JSON list of the versions besides 3.14/3.15 (default["3.10", "3.11", "3.12", "3.13"], which keepsconda-package.ymlunchanged)conda build --testreplaces seven steps, and the env vars and version-parsing script that only those steps used are gone; the test matrix keepspython_spec, so check names don't changerun:steps move toenv:, because zizmor flags them once the matrix depends on an inputconda-package-cf.yml:python-versions: '["3.11", "3.12", "3.13"]'andwindows-2022for the Windows jobsAGENTS.mdfiles: document the conda-forge workflow's Python versions and pins, the rule to update them when the feedstock is re-rendered, how the test jobs run the recipe tests, and that macOS is built fromconda-recipe-cf/(the old note said macOS wasn't built)Test plan
pre-commit(including actionlint and shellcheck) passes on the changed fileszizmor --min-severity medium .github/reports no findingsconda render conda-recipe-cffor linux-64, win-64 and osx-64 resolves gcc 15.3 withlibgcc >=15, clang 21,vs2022, andmkl-devel2026.1.0 (2023.2.0 on macOS); overridingmkl_develto 2025 switches tomkl-devel2025.3.1, so the variant key takes effectconda build --testrun locally on Drop the conda package cache from the conda CI workflows #262's linux-64 3.12 and 3.14tconda-forgepackages passes, with the right Python ABIConda package using conda-forgeis green on this PR, with no 3.10 jobsConda package using Intelis green on this PR