Add conda-forge only build and test workflow - #3035
Merged
Merged
Conversation
antonwolfy
force-pushed
the
add-conda-forge-package-workflow
branch
from
August 20, 2026 11:59
cc38c04 to
8a4f416
Compare
Contributor
|
View rendered docs @ https://intelpython.github.io/dpnp/index.html |
Contributor
|
Array API standard conformance tests for dpnp=0.21.0dev6=py314ha0e2e8e_18 ran successfully. |
Collaborator
antonwolfy
force-pushed
the
add-conda-forge-package-workflow
branch
from
August 21, 2026 10:16
e1b3b3c to
9fb2988
Compare
Add a 'Conda package (conda-forge)' workflow with a dedicated conda-recipe-cf recipe that builds and tests dpnp using compiler, oneMKL, dpctl and NumPy dependencies resolved solely from conda-forge.
The host dependency on dpctl was missing, so find_package(Dpctl) had nothing to locate in the build environment.
A free-threaded (cp314t) dpctl is not yet available on conda-forge, so the free-threaded build/test entries fail to solve. Remove them from the build, test_linux and test_windows matrices with a TODO to restore them once conda-forge ships a free-threaded dpctl.
…pe-cf conda-forge folds the Intel compiler runtime libraries (libircmt.lib on Windows, libirc.a on Linux) into the build-only dpcpp_impl package, so they land in the build prefix and are off the linker's default search path. Add that directory via LIB (Windows) / LIBRARY_PATH (Linux) so icx can link.
dpctl.get_devices() returns a list in dpctl < 0.23 and a tuple from 0.23 onwards, so gate the tuple-equality assertion with with_requires.
Everything in this lane comes from conda-forge, so the Intel-channel set-intel-ocl-icd-registry.ps1 helper and cl.cfg are never present. Drop the dead branches and keep only the manual ICD-loader registration of intelocl64.dll.
Intel internal validation scans every recipe meta.yaml in the source tree and requires the LEGAL NOTICE / EULA block in about/description, so keep it in sync with conda-recipe/meta.yaml.
dpctl 0.23 changed get_devices() and SyclDevice.create_sub_devices() to return tuples instead of lists. Gate the affected tensor tests with with_requires so they skip on older dpctl (e.g. conda-forge 0.22.1).
Unify the two test jobs into a single matrix job (ubuntu-latest, windows-2022) using bash for both OSes, keeping only Set Swap Space (Linux) and the OpenCL CPU driver registration (Windows) OS-specific. Also drop the unused cmd-only steps carried over from the legacy layout.
Move the build and test jobs into a reusable workflow_call workflow (conda-build-test.yml) parameterized by runner, conda subdir, channels and recipe dir. Reduce conda-package-cf.yml to thin per-OS callers with a concurrency group replacing the cancel-workflow action.
github.workspace and $CONDA are backslash paths on Windows that bash mangles. Use workspace-relative paths for the channel/version/repo dirs and convert $CONDA via cygpath before sourcing conda in the retry steps.
Under Git Bash on Windows the mamba wrapper mangles the -c ./channel
argument ('hannel' is not recognized), while conda parses it correctly.
Switch install/list to conda; keep use-mamba for the libmamba solver.
- conda-recipe-cf: remove unused py_build_deps load; bump cmake to >=3.31.6 and python-build to >=1.2.2 to match pyproject.toml; drop the run_test-duplicated 'python -m dpctl -f' from test.commands. - conda-build-test.yml: drop the no-op MAMBA_NO_LOW_SPEED_LIMIT and the dead non-retry test branches (rerun-tests-on-failure toggle).
antonwolfy
force-pushed
the
add-conda-forge-package-workflow
branch
from
August 24, 2026 11:25
ffc355a to
0d98234
Compare
antonwolfy
marked this pull request as ready for review
August 24, 2026 11:26
antonwolfy
requested review from
ndgrigorian and
vlad-perevezentsev
as code owners
August 24, 2026 11:26
ndgrigorian
approved these changes
Aug 25, 2026
ndgrigorian
left a comment
Collaborator
There was a problem hiding this comment.
LGTM, thank you @antonwolfy
github-actions Bot
added a commit
that referenced
this pull request
Aug 25, 2026
This PR adds a `Conda package (conda-forge)` workflow that builds and tests dpnp using its build/runtime dependencies (compiler, oneMKL, dpctl and NumPy) resolved purely from conda-forge with `--override-channels`. It validates that dpnp works when built and installed solely from conda-forge, independently of the Intel channel. The workflow relies on a dedicated `conda-recipe-cf` recipe: - pins the compiler and oneMKL to conda-forge builds (`gxx 15` / `sysroot 2.28` / NumPy 2); - lists `cmake` and `ninja` under `requirements/build` and keeps the remaining host dependencies in sync with `pyproject.toml`; - always relies on the conda-forge OpenCL ICD loaders (`ocl-icd-system` on Linux, `khronos-opencl-icd-loader` on Windows). Build and test stages follow the same naming and structure as the existing `Conda package` workflow: a build matrix over Python 3.10-3.14 (including the free-threaded builds), retry-on-failure test runs, separate tensor tests, and OpenCL CPU driver registration on Windows. 817eafb
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.
This PR adds a
Conda package (conda-forge)workflow that builds and tests dpnp using its build/runtime dependencies (compiler, oneMKL, dpctl and NumPy) resolved purely from conda-forge with--override-channels. It validates that dpnp works when built and installed solely from conda-forge, independently of the Intel channel.The workflow relies on a dedicated
conda-recipe-cfrecipe:gxx 15/sysroot 2.28/ NumPy 2);cmakeandninjaunderrequirements/buildand keeps the remaining host dependencies in sync withpyproject.toml;ocl-icd-systemon Linux,khronos-opencl-icd-loaderon Windows).Build and test stages follow the same naming and structure as the existing
Conda packageworkflow: a build matrix over Python 3.10-3.14 (including the free-threaded builds), retry-on-failure test runs, separate tensor tests, and OpenCL CPU driver registration on Windows.