Skip to content

Build and test conda packages and wheels - #294

Open
jharlow-intel wants to merge 2 commits into
mainfrom
ci/intel-python-ci
Open

jharlow-intel wants to merge 2 commits into
mainfrom
ci/intel-python-ci

Conversation

@jharlow-intel

@jharlow-intel jharlow-intel commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Adds ci/ and .github/workflows/intel-ci.yml, which build the conda packages and the wheels for Linux and Windows, on every declared Python, and test each in a clean environment. The recipe skips macOS, as conda-forge/mkl_umath-feedstock does.

  • conda-recipe/ is now the only recipe: the conda-forge one that was conda-recipe-cf/. The Intel-channel recipe and conda-package.yml are removed; conda-package-cf.yml builds conda-recipe/ and keeps its check names.
  • The conda packages build Python 3.10 to 3.15 plus 3.14t, from the python: list in conda_build_config.yaml. The wheels follow the pyproject.toml classifiers: 3.10 to 3.15 plus 3.14t and 3.15t.
  • Wheels build with cibuildwheel and icx: on Linux from Intel's oneAPI yum repository, on Windows from conda-forge's dpcpp_win-64, which ci/install_icx.py installs. They leave MKL and the compiler runtime out and require mkl, intel-openmp and intel-cmplr-lib-rt >=2026.2,<2027 through [tool.gh-ci] wheel-requires, which ci/build.py adds to each wheel.
  • meson.build adds Library to CMake's search path on Windows, where mkl-devel puts its CMake config.
  • ci/test.py runs pytest --pyargs mkl_umath on the installed package.
  • ci/benchmark.py runs the asv suite in benchmarks/ against the installed package: one quick sample of each benchmark on a pull request, a full measurement on a tag.

Miniforge is pinned to 26.7.2-0, as 26.9.4-0 makes setup-miniconda's conda init fail on Windows runners.

Validation: run 42099116172 built and tested the conda packages and the wheels for 3.10 and 3.15 on Linux and Windows; all 17 jobs passed. Not run yet: the full matrix, which only main and tags build.

Adds what Intel Python CI (gh-ci) needs: a ci/ directory and
.github/workflows/intel-ci.yml. The workflow builds conda-recipe/ with
conda-build and the wheels with cibuildwheel, for every platform and Python
version the recipe and pyproject.toml declare, and tests each package in a
clean environment with ci/test.py. Intel's Jenkins tests them again, scans
them, runs ci/benchmark.py on the newest Linux package, and publishes a
release tag's tested packages as its GitHub Release.

conda-recipe/ is now the only recipe, the conda-forge one that was
conda-recipe-cf/; the Intel-channel recipe and conda-package.yml, which copied
wheels out through WHEELS_OUTPUT_FOLDER, are removed. conda-package-cf.yml reports the same check
names, so the required checks still run. conda_build_config.yaml now lists the
Python versions.

The wheels link MKL's layers and the Intel OpenMP runtime, so their run-time
requirements on mkl and intel-openmp come from [tool.gh-ci] wheel-requires in
pyproject.toml, which ci/build.py adds to each wheel: in [project] they would
fail the recipe's pip check, as conda-forge's mkl has no pip metadata.
asv needs PyYAML, which has no wheel on PyPI for Python 3.15 yet; conda-forge builds it.
@jharlow-intel jharlow-intel changed the title Build and test conda-recipe-cf for Intel Python CI Build and test conda packages and wheels Nov 5, 2026
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