From 78612c56ab623358fd67e0748bc3207e02d6f03a Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Fri, 16 Oct 2026 14:25:14 +0200 Subject: [PATCH 1/2] Align conda-recipe-cf and its CI with the conda-forge feedstock Make the conda-forge-only CI build mkl_umath the way conda-forge/mkl_umath-feedstock does, so problems the feedstock would hit show up upstream first: - Pass --error-overlinking to conda build (the feedstock sets error_overlinking: true) and allowlist $RPATH/mkl_umath_loops.dll on Windows, as the feedstock does. - Build against the newest NumPy per Python version (2.4 for 3.11, 2.5 for 3.12+), matching the feedstock, and drop the unused numpy 1.26.4 pin from conda_build_config.yaml. - Take run dependencies from run_exports instead of pin_compatible, stop ignoring the numpy and llvm-openmp run_exports, add intel-cmplr-lib-rt to host, and ignore the dpcpp run_exports on Linux. - Use gcc/gxx 15 on Linux, as in conda-forge's global pinning. --- .github/workflows/conda-package-cf.yml | 23 ++++++++++++----------- conda-recipe-cf/conda_build_config.yaml | 6 +++--- conda-recipe-cf/meta.yaml | 10 +++++----- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 04c68592..fe486c75 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -26,17 +26,17 @@ jobs: - python: "3.10" numpy: "2.2" - python: "3.11" - numpy: "2.3" + numpy: "2.4" - python: "3.12" - numpy: "2.3" + numpy: "2.5" - python: "3.13" - numpy: "2.3" + numpy: "2.5" - python: "3.14" - numpy: "2.3" + numpy: "2.5" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2.3" + numpy: "2.5" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" @@ -96,6 +96,7 @@ jobs: conda build \ "${TEST[@]}" \ + --error-overlinking \ "${VERSIONS[@]}" \ "${CHANNELS[@]}" \ conda-recipe-cf @@ -222,17 +223,17 @@ jobs: - python: "3.10" numpy: "2.2" - python: "3.11" - numpy: "2.3" + numpy: "2.4" - python: "3.12" - numpy: "2.3" + numpy: "2.5" - python: "3.13" - numpy: "2.3" + numpy: "2.5" - python: "3.14" - numpy: "2.3" + numpy: "2.5" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2.3" + numpy: "2.5" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" @@ -286,7 +287,7 @@ jobs: - name: Build conda package run: | conda activate - conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c conda-forge --override-channels conda-recipe-cf + conda build --no-test --error-overlinking --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c conda-forge --override-channels conda-recipe-cf - name: Upload artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/conda-recipe-cf/conda_build_config.yaml b/conda-recipe-cf/conda_build_config.yaml index 2862ddf3..0b0a39ee 100644 --- a/conda-recipe-cf/conda_build_config.yaml +++ b/conda-recipe-cf/conda_build_config.yaml @@ -1,11 +1,11 @@ -numpy: - - '1.26.4' c_compiler: # [linux] - gcc # [linux] +c_compiler_version: # [linux] + - '15' # [linux] cxx_compiler: # [linux] - gxx # [linux] cxx_compiler_version: # [linux] - - '14' # [linux] + - '15' # [linux] c_stdlib: # [linux] - sysroot # [linux] c_stdlib_version: # [linux] diff --git a/conda-recipe-cf/meta.yaml b/conda-recipe-cf/meta.yaml index 115a357d..0979f95e 100644 --- a/conda-recipe-cf/meta.yaml +++ b/conda-recipe-cf/meta.yaml @@ -10,10 +10,12 @@ source: build: number: {{ buildnumber }} + ignore_run_exports_from: + - {{ compiler('dpcpp') }} # [linux] ignore_run_exports: - blas - - numpy - - llvm-openmp + missing_dso_whitelist: + - $RPATH/mkl_umath_loops.dll # [win] requirements: build: @@ -29,14 +31,12 @@ requirements: - cython >=3.1.0 - python - mkl-devel + - intel-cmplr-lib-rt # [not osx] - numpy - llvm-openmp - pip run: - python - - {{ pin_compatible('mkl') }} - - {{ pin_compatible('numpy') }} - - {{ pin_compatible('intel-cmplr-lib-rt') }} test: requires: From 1111c312bba33b3b874a880118ea64e8fd776c02 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Fri, 16 Oct 2026 18:35:03 +0200 Subject: [PATCH 2/2] Require NumPy 2 at runtime and default conda-recipe-cf builds to NumPy 2 mkl_umath decides between its NumPy 1 and NumPy 2 loops at compile time (USE_NUMPY_2 in mkl_umath_loops.c.src). numpy's run_exports alone allow NumPy >=1.25,<3 for a build against NumPy 2.5, but with NumPy 1.x such a build returns NumPy 2 results for complex sign, and on Windows NumPy 1.x has no int64 ldexp loops for the patcher to replace. Add numpy >=2 to the run requirements; run_exports still provide the <3 upper bound. Set numpy: '2' in conda_build_config.yaml, as in conda-forge's global pinning. CI overrides it with --numpy, but a plain local conda build otherwise falls back to conda-build's built-in NumPy 1.26 default, which yields a NumPy-1-only package and cannot be solved for Python >= 3.13. --- conda-recipe-cf/conda_build_config.yaml | 2 ++ conda-recipe-cf/meta.yaml | 3 +++ 2 files changed, 5 insertions(+) diff --git a/conda-recipe-cf/conda_build_config.yaml b/conda-recipe-cf/conda_build_config.yaml index 0b0a39ee..6e19b3ef 100644 --- a/conda-recipe-cf/conda_build_config.yaml +++ b/conda-recipe-cf/conda_build_config.yaml @@ -1,3 +1,5 @@ +numpy: # as in conda-forge's global pinning; CI overrides it with --numpy + - '2' c_compiler: # [linux] - gcc # [linux] c_compiler_version: # [linux] diff --git a/conda-recipe-cf/meta.yaml b/conda-recipe-cf/meta.yaml index 0979f95e..673551a2 100644 --- a/conda-recipe-cf/meta.yaml +++ b/conda-recipe-cf/meta.yaml @@ -37,6 +37,9 @@ requirements: - pip run: - python + # NumPy 1 vs 2 loops are chosen at compile time (USE_NUMPY_2), so a build + # against NumPy 2 must not run on NumPy 1.x; run_exports add the upper bound + - numpy >=2 test: requires: