Skip to content

Commit a3fdfd1

Browse files
committed
Build and test conda packages and wheels
Adds a ci/ directory and .github/workflows/intel-ci.yml, which build the conda packages and the wheels for every declared platform and Python and test each with ci/test.py on the OpenCL CPU device. 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. The dev uploads to anaconda.org and their cleanup move into intel-ci.yml, for pushes to master and tags only. The wheels leave the SYCL runtime out and require intel-sycl-rt and intel-cmplr-lib-rt, as the PyPI wheels do; scikit-build is pinned below 1.0 (#2341). LDFLAGS in the cibuildwheel environment links every Linux library with -z,relro,-z,now, as conda-forge's compiler activation does for the conda packages, so libDPCTLSyclInterface.so gets full RELRO like the extensions. conda-build gets --extra-meta remote_url=... sha=... when GitHub Actions sets GITHUB_SERVER_URL, GITHUB_REPOSITORY and GITHUB_SHA, so each conda package records the commit it was built from. A pull request also builds and tests the newest free-threaded version, and every push and tag run gets a concurrency group of its own. The benchmarks take PyYAML from conda-forge, as PyPI has no Python 3.15 wheel for it yet. ci/build.py refuses two built packages with the same file name, which would overwrite each other in its flat output directory. ci/test.py fails when python -m dpctl -f fails, and when the environment's conda compilers cannot build an extension, instead of deselecting the two tests that need them. The dev upload takes each wheel's version from its file name and fails when there is nothing to upload. The benchmarks set USERPROFILE as well as HOME, and the repair commands match any libsycl version, as wheel-requires allows any 2026 runtime.
1 parent 4db4419 commit a3fdfd1

27 files changed

Lines changed: 2347 additions & 1328 deletions

‎.github/workflows/conda-package-cf.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ env:
1313
PACKAGE_NAME: dpctl
1414
MODULE_NAME: dpctl
1515
TEST_ENV_NAME: test_dpctl
16-
RECIPE_DIR: conda-recipe-cf
16+
RECIPE_DIR: conda-recipe
1717
CHANNELS: "-c conda-forge --override-channels"
1818
VER_SCRIPT1: "import json; f = open('ver.json', 'r'); j = json.load(f); f.close(); d = j['dpctl'][0];"
1919
VER_SCRIPT2: "print('='.join((d[s] for s in ('version', 'build'))))"
@@ -60,7 +60,7 @@ jobs:
6060
with:
6161
path: ~/.conda/pkgs
6262
key:
63-
${{ runner.os }}-conda-cf-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-spec-${{ matrix.python == '3.14' && contains(matrix.python_spec, 'cp314t') && 't' || '' }}-${{hashFiles('conda-recipe-cf/meta.yaml') }}
63+
${{ runner.os }}-conda-cf-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-spec-${{ matrix.python == '3.14' && contains(matrix.python_spec, 'cp314t') && 't' || '' }}-${{hashFiles('conda-recipe/meta.yaml') }}
6464
restore-keys: |
6565
${{ runner.os }}-conda-cf-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-spec-${{ matrix.python == '3.14' && contains(matrix.python_spec, 'cp314t') && 't' || '' }}-
6666
${{ runner.os }}-conda-cf-${{ env.CACHE_NUMBER }}-
@@ -405,7 +405,7 @@ jobs:
405405
EXAMPLES_ENV_NAME: examples
406406
BUILD_ENV_NAME: build_env
407407
DPCPP_CMPLR: "dpcpp_linux-64>=2026.0"
408-
# keep in sync with conda-recipe-cf/conda_build_config.yaml
408+
# keep in sync with conda-recipe/conda_build_config.yaml
409409
GCC_CMPLR_VERSION: '15'
410410

411411
steps:

0 commit comments

Comments
 (0)