From d6d44d2ebf78ca7a7eaf69fd6df7d07590cbdb73 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Thu, 22 Oct 2026 14:36:51 +0200 Subject: [PATCH 1/3] Align conda-forge recipe and workflow with the feedstock - Require numpy >=1.26.4 at runtime instead of pin_compatible, as in pyproject.toml and the feedstock - Take mkl from the mkl-devel run_exports - Require meson >=1.8.3, as meson.build does - Move cmake and ninja to build requirements and drop wheel - Drop compiler version pins and use the feedstock's stdlib pins (sysroot 2.17, macOS 11.0) - Note in build scripts why MKLROOT must not be set - Build against the latest numpy 2.x and drop Python 3.10 from the conda-forge workflow matrix --- .github/workflows/conda-package-cf.yml | 84 +++++++++++-------------- conda-recipe-cf/bld.bat | 4 ++ conda-recipe-cf/build.sh | 4 ++ conda-recipe-cf/conda_build_config.yaml | 6 +- conda-recipe-cf/meta.yaml | 10 ++- 5 files changed, 51 insertions(+), 57 deletions(-) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 4deacc14..76acdc2c 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -21,24 +21,22 @@ jobs: strategy: matrix: include: - - python: "3.10" - numpy: "2.2" - python: "3.11" - numpy: "2.3" + numpy: "2" - python: "3.12" - numpy: "2.3" + numpy: "2" - python: "3.13" - numpy: "2.3" + numpy: "2" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2.5" + numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -101,24 +99,22 @@ jobs: strategy: matrix: include: - - python: "3.10" - numpy: "2.2" - python: "3.11" - numpy: "2.3" + numpy: "2" - python: "3.12" - numpy: "2.3" + numpy: "2" - python: "3.13" - numpy: "2.3" + numpy: "2" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2.5" + numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -181,24 +177,22 @@ jobs: strategy: matrix: include: - - python: "3.10" - numpy: "2.2" - python: "3.11" - numpy: "2.3" + numpy: "2" - python: "3.12" - numpy: "2.3" + numpy: "2" - python: "3.13" - numpy: "2.3" + numpy: "2" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2.5" + numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -275,24 +269,22 @@ jobs: strategy: matrix: include: - - python: "3.10" - numpy: "2.2" - python: "3.11" - numpy: "2.3" + numpy: "2" - python: "3.12" - numpy: "2.3" + numpy: "2" - python: "3.13" - numpy: "2.3" + numpy: "2" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2.5" + numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -371,24 +363,22 @@ jobs: strategy: matrix: include: - - python: "3.10" - numpy: "2.2" - python: "3.11" - numpy: "2.3" + numpy: "2" - python: "3.12" - numpy: "2.3" + numpy: "2" - python: "3.13" - numpy: "2.3" + numpy: "2" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2.5" + numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -458,24 +448,22 @@ jobs: strategy: matrix: include: - - python: "3.10" - numpy: "2.2" - python: "3.11" - numpy: "2.3" + numpy: "2" - python: "3.12" - numpy: "2.3" + numpy: "2" - python: "3.13" - numpy: "2.3" + numpy: "2" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2.3" + numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2.5" + numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" diff --git a/conda-recipe-cf/bld.bat b/conda-recipe-cf/bld.bat index a08c27bb..28cc5082 100644 --- a/conda-recipe-cf/bld.bat +++ b/conda-recipe-cf/bld.bat @@ -1,2 +1,6 @@ +:: MKL is found through %LIBRARY_PREFIX%\lib\cmake\mkl, which is on +:: CMAKE_PREFIX_PATH via the vs2022 activation script. Setting MKLROOT here +:: would break the build: MKLConfig.cmake looks for %MKLROOT%\include with +:: NO_DEFAULT_PATH and %PREFIX%\include holds no MKL headers. %PYTHON% -m pip install --no-build-isolation --no-deps . if errorlevel 1 exit 1 diff --git a/conda-recipe-cf/build.sh b/conda-recipe-cf/build.sh index 72e5e4e6..65ecd921 100644 --- a/conda-recipe-cf/build.sh +++ b/conda-recipe-cf/build.sh @@ -1,3 +1,7 @@ #!/bin/bash -ex +# meson locates MKL via find_package(MKL CONFIG) -> $PREFIX/lib/cmake/mkl, +# which is on CMAKE_PREFIX_PATH thanks to the compiler activation scripts. +# Do not export MKLROOT: MKLConfig.cmake then searches $MKLROOT/include with +# NO_DEFAULT_PATH and hard-errors if mkl_version.h is not there. $PYTHON -m pip install --no-build-isolation --no-deps . diff --git a/conda-recipe-cf/conda_build_config.yaml b/conda-recipe-cf/conda_build_config.yaml index a830d0aa..918f0dac 100644 --- a/conda-recipe-cf/conda_build_config.yaml +++ b/conda-recipe-cf/conda_build_config.yaml @@ -2,18 +2,18 @@ c_compiler: # [linux] - gcc # [linux] cxx_compiler: # [linux] - gxx # [linux] -cxx_compiler_version: # [linux] - - '14' # [linux] c_stdlib: # [linux] - sysroot # [linux] c_stdlib_version: # [linux] - - '2.28' # [linux] + - '2.17' # [linux] c_compiler: # [osx] - clang # [osx] cxx_compiler: # [osx] - clangxx # [osx] c_stdlib: # [osx] - macosx_deployment_target # [osx] +c_stdlib_version: # [osx] + - '11.0' # [osx] c_stdlib: # [win] - vs # [win] cxx_compiler: # [win] diff --git a/conda-recipe-cf/meta.yaml b/conda-recipe-cf/meta.yaml index 96b019f5..6035d0a9 100644 --- a/conda-recipe-cf/meta.yaml +++ b/conda-recipe-cf/meta.yaml @@ -9,27 +9,25 @@ build: number: {{ GIT_DESCRIBE_NUMBER }} ignore_run_exports: - blas - - numpy requirements: build: - {{ compiler('c') }} - {{ compiler('cxx') }} - {{ stdlib('c') }} - host: - - meson-python >=0.16.0 - cmake - ninja + host: + - meson-python >=0.16.0 + - meson >=1.8.3 - python - mkl-devel - cython >=3.1.0 - numpy - pip - - wheel >=0.41.3 run: - python - - {{ pin_compatible('numpy', min_pin="x.x", max_pin="x") }} - - {{ pin_compatible('mkl', min_pin="x.x", max_pin="x") }} + - numpy >=1.26.4 test: commands: From 6dec1eaa50d060636eaef67716e41eeb9ce77ec8 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Thu, 22 Oct 2026 18:49:05 +0200 Subject: [PATCH 2/3] Pin numpy in the build config instead of the workflow matrix conda build --numpy 2 turns the pin into the version "2.", which libmamba fails to parse. Set numpy: '2' in conda_build_config.yaml, as the feedstock does, and drop numpy from the workflow matrix: the test environments get the newest numpy 2.x without a pin. --- .github/workflows/conda-package-cf.yml | 54 +++++-------------------- conda-recipe-cf/conda_build_config.yaml | 2 + 2 files changed, 11 insertions(+), 45 deletions(-) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 76acdc2c..683b94c7 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -22,21 +22,15 @@ jobs: matrix: include: - python: "3.11" - numpy: "2" - python: "3.12" - numpy: "2" - python: "3.13" - numpy: "2" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -76,7 +70,7 @@ jobs: - name: Build conda package run: | CHANNELS=(-c conda-forge --override-channels) - VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}" --numpy "${{ matrix.numpy }}") + VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}") TEST=(--no-test) conda build \ @@ -100,21 +94,15 @@ jobs: matrix: include: - python: "3.11" - numpy: "2" - python: "3.12" - numpy: "2" - python: "3.13" - numpy: "2" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -162,7 +150,7 @@ jobs: conda list -n base - name: Build conda package - run: conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c conda-forge --override-channels conda-recipe-cf + run: conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" -c conda-forge --override-channels conda-recipe-cf - name: Upload artifact uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 @@ -178,21 +166,15 @@ jobs: matrix: include: - python: "3.11" - numpy: "2" - python: "3.12" - numpy: "2" - python: "3.13" - numpy: "2" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -226,7 +208,7 @@ jobs: . "$CONDA/etc/profile.d/conda.sh" PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels --only-deps --dry-run > lockfile + conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels --only-deps --dry-run > lockfile cat lockfile - name: Set pkgs_dirs @@ -250,7 +232,7 @@ jobs: . "$CONDA/etc/profile.d/conda.sh" PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python_spec || matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels + conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python_spec || matrix.python }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels # Test installed packages conda list @@ -270,21 +252,15 @@ jobs: matrix: include: - python: "3.11" - numpy: "2" - python: "3.12" - numpy: "2" - python: "3.13" - numpy: "2" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -326,7 +302,7 @@ jobs: FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO ( SET PACKAGE_VERSION=%%F ) - conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% "python=${{ matrix.python_spec || matrix.python }}" numpy=${{ matrix.numpy }} -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} --only-deps --dry-run > lockfile + conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% "python=${{ matrix.python_spec || matrix.python }}" -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} --only-deps --dry-run > lockfile - name: Cache conda packages uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 @@ -349,7 +325,7 @@ jobs: FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO ( SET PACKAGE_VERSION=%%F ) - conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% pytest "python=${{ matrix.python_spec || matrix.python }}" numpy=${{ matrix.numpy }} -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} + conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% pytest "python=${{ matrix.python_spec || matrix.python }}" -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} # Test installed packages conda list @@ -364,21 +340,15 @@ jobs: matrix: include: - python: "3.11" - numpy: "2" - python: "3.12" - numpy: "2" - python: "3.13" - numpy: "2" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -427,7 +397,7 @@ jobs: shell: bash -el {0} run: | CHANNELS=(-c conda-forge --override-channels) - VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}" --numpy "${{ matrix.numpy }}") + VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}") TEST=(--no-test) conda build \ @@ -449,21 +419,15 @@ jobs: matrix: include: - python: "3.11" - numpy: "2" - python: "3.12" - numpy: "2" - python: "3.13" - numpy: "2" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314" python_tag: "3.14" - python: "3.14" - numpy: "2" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" - python: "3.15" - numpy: "2" python_spec: "3.15.* *_cp315" python_tag: "3.15" @@ -499,7 +463,7 @@ jobs: run: | PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels --only-deps --dry-run > lockfile + conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels --only-deps --dry-run > lockfile cat lockfile - name: Cache conda packages @@ -519,7 +483,7 @@ jobs: run: | PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python_spec || matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels + conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python_spec || matrix.python }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels # Test installed packages conda list -n "${{ env.TEST_ENV_NAME }}" diff --git a/conda-recipe-cf/conda_build_config.yaml b/conda-recipe-cf/conda_build_config.yaml index 918f0dac..dce869b5 100644 --- a/conda-recipe-cf/conda_build_config.yaml +++ b/conda-recipe-cf/conda_build_config.yaml @@ -20,3 +20,5 @@ cxx_compiler: # [win] - vs2022 # [win] c_compiler: # [win] - vs2022 # [win] +numpy: + - '2' From 3763e178745bc000874d91fd04513a9deb209840 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Thu, 22 Oct 2026 19:02:13 +0200 Subject: [PATCH 3/3] Run the recipe tests with conda build --test Test the built package with the test section of conda-recipe-cf, as the feedstock does: the imports, pip check and pytest. The test jobs stay separate from the build jobs. --- .github/workflows/conda-package-cf.yml | 49 ++++---------------------- 1 file changed, 7 insertions(+), 42 deletions(-) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 683b94c7..188f4ef5 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -227,20 +227,9 @@ jobs: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - name: Install mkl_random - run: | - . "$CONDA/etc/profile.d/conda.sh" - PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" - export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python_spec || matrix.python }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels - # Test installed packages - conda list - - name: Run tests run: | - . "$CONDA/etc/profile.d/conda.sh" - conda activate "${{ env.TEST_ENV_NAME }}" - pytest -vv --pyargs ${{ env.MODULE_NAME }} + conda build --test "$GITHUB_WORKSPACE"/channel/linux-64/"${PACKAGE_NAME}"-*.conda -c conda-forge --override-channels test_windows: needs: build_windows @@ -279,9 +268,9 @@ jobs: channels: conda-forge activate-environment: base - - name: Install conda-index + - name: Install conda-build run: | - conda install conda-index + conda install conda-build - name: Create conda channel run: | @@ -316,23 +305,9 @@ jobs: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - name: Install mkl_random - shell: cmd - run: | - @ECHO ON - copy /Y ${{ env.GITHUB_WORKSPACE }}\ver.json . - set "SCRIPT=%VER_SCRIPT1% %VER_SCRIPT2%" - FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO ( - SET PACKAGE_VERSION=%%F - ) - conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% pytest "python=${{ matrix.python_spec || matrix.python }}" -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} - # Test installed packages - conda list - - name: Run tests run: | - conda activate ${{ env.TEST_ENV_NAME }} - pytest -v --pyargs ${{ env.MODULE_NAME }} + conda build --test ${{ env.GITHUB_WORKSPACE }}\channel\win-64\${{ env.PACKAGE_NAME }}-*.conda -c conda-forge --override-channels build_osx: runs-on: macos-26-intel @@ -443,9 +418,9 @@ jobs: channels: conda-forge activate-environment: base - - name: Install conda-index + - name: Install conda-build shell: bash -el {0} - run: conda install -n base -y conda-index + run: conda install -n base -y conda-build - name: Create conda channel shell: bash -el {0} @@ -478,17 +453,7 @@ jobs: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - name: Install mkl_random - shell: bash -el {0} - run: | - PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" - export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python_spec || matrix.python }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels - # Test installed packages - conda list -n "${{ env.TEST_ENV_NAME }}" - - name: Run tests shell: bash -el {0} run: | - conda activate ${{ env.TEST_ENV_NAME }} - pytest -vv --pyargs ${{ env.MODULE_NAME }} + conda build --test "$GITHUB_WORKSPACE"/channel/osx-64/"${PACKAGE_NAME}"-*.conda -c conda-forge --override-channels