Skip to content

Move build system to meson-python#174

Open
ndgrigorian wants to merge 9 commits intomasterfrom
use-meson-build
Open

Move build system to meson-python#174
ndgrigorian wants to merge 9 commits intomasterfrom
use-meson-build

Conversation

@ndgrigorian
Copy link
Copy Markdown
Collaborator

@ndgrigorian ndgrigorian commented Apr 8, 2026

This PR proposes moving from setuptools to meson-python as the mkl-service build system

meson-python is already used by NumPy and allows setup.py to be removed (with its logic moved into the meson.build script)

Also adds mkl as a dependency

@ndgrigorian ndgrigorian marked this pull request as draft April 8, 2026 03:59
@ndgrigorian ndgrigorian force-pushed the use-meson-build branch 4 times, most recently from 1f7006a to e209e46 Compare April 8, 2026 06:35
@ndgrigorian ndgrigorian marked this pull request as ready for review April 8, 2026 06:51
Base automatically changed from drop-removed-cbwr-constants to master April 8, 2026 17:17
Copilot AI review requested due to automatic review settings April 8, 2026 18:20
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates mkl-service from a setuptools/setup.py-driven build to a meson-python build, updating conda recipes and CI workflows accordingly, and adding an mkl runtime dependency.

Changes:

  • Remove setup.py and define extension builds/install layout in meson.build (C + Cython extensions, Python sources, tests).
  • Switch pyproject.toml build backend to mesonpy and add mkl to runtime dependencies.
  • Update conda recipes and GitHub Actions workflows to build/install via pip/python -m build instead of setup.py.

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
setup.py Removed legacy setuptools build script.
pyproject.toml Switched build backend to mesonpy, updated build requirements and runtime deps.
meson.build Added Meson build definition for C/Cython extensions and installation layout.
mkl/_py_mkl_service.pyx Added/introduced Cython wrapper implementation used by the public API.
conda-recipe/meta.yaml Updated conda build requirements for Meson-based builds.
conda-recipe/build.sh Updated wheel build/install flow (no setup.py).
conda-recipe/bld.bat Removed setup.py clean step and MKLROOT usage.
conda-recipe-cf/meta.yaml Updated conda-forge recipe host requirements for Meson-based builds.
conda-recipe-cf/build.sh Switched to pip install . build/install flow.
conda-recipe-cf/bld.bat Switched to pip install . build/install flow.
.github/workflows/build-with-standard-clang.yml New CI job building with system clang.
.github/workflows/build-with-clang.yml Updated IntelLLVM clang CI job to Meson-based install.
.github/workflows/build_pip.yml New CI job testing editable install + (pre-)release NumPy in conda env.

'mkl-service',
['c', 'cython'],
version: run_command(
'python', '-c',
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

run_command('python', ...) hardcodes the interpreter, which may not match Meson’s discovered Python (virtualenv/pyenv/Windows). Use the py installation found by import('python').find_installation() when computing the version to avoid mismatched interpreters.

Suggested change
'python', '-c',
import('python').find_installation(pure: false), '-c',

Copilot uses AI. Check for mistakes.

thread_dep = dependency('threads')

cc = meson.get_compiler('c')
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc = meson.get_compiler('c') is unused. Removing it avoids dead code and potential lint/warning noise during Meson configure.

Suggested change
cc = meson.get_compiler('c')

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mkl_random broke without this. Leaving it in. Might document it.

strategy:
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
numpy_version: ["numpy'>=2'"]
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The matrix value numpy_version: ["numpy'>=2'"] includes embedded quotes and will be passed verbatim to pip install, which is not a valid requirement specifier. Use something like numpy>=2 (or just install numpy and control pre-releases separately).

Suggested change
numpy_version: ["numpy'>=2'"]
numpy_version: ["numpy>=2"]

Copilot uses AI. Check for mistakes.
strategy:
matrix:
python: ["3.10", "3.11", "3.12", "3.13"]
numpy_version: ["numpy'>=2'"]
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The matrix value numpy_version: ["numpy'>=2'"] includes embedded quotes and will be passed verbatim to pip install, which is not a valid requirement specifier. Use something like numpy>=2.

Suggested change
numpy_version: ["numpy'>=2'"]
numpy_version: ["numpy>=2"]

Copilot uses AI. Check for mistakes.
@ndgrigorian ndgrigorian force-pushed the use-meson-build branch 2 times, most recently from 4a2979d to b3cd7c9 Compare April 10, 2026 00:33
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.

2 participants