◐ Shell
clean mode source ↗

Adopt pyproject.toml and Meson to build Python extension by hongquan · Pull Request #148 · systemd/python-systemd

Motivation

I have a Django web project, which targets Linux server but some team members use MacOS for development. We use uv as Python package manager. In the "dependency resolution" phase, uv tried to find systemd-python metadata but couldn't get what it wanted from the setup.py file. It had to build systemd-python wheel to get the metadata, then failed on MacOS machines.

What this PR does

Adopt new pyproject.toml file, in place of setup.py. For building C code, I adopt Meson, which has meson-python as a build backend so that pip or any other modern Python package manager can know how to build the C-based extensions.

Because this new build process is done in an isolated environment and leave no *.so files, the Makefile is also updated to work with this new build method.

This is the rework of #147, but split to smaller steps.

At this step, I only make these 4 jobs work:

  • Building project.
  • Install project.
  • Generate docs.
  • Running test.

I don't move the other jobs from Makefile to Meson.

I also move the "systemd" folder (containing C & Py sources) to src folder, to prevent importing by accident when standing at the top-level folder. This is also a common practice for many other Python projects.