Investigate and eventually replace waf build system
Recent discussion around the waf build system yielded a deprecation notion.
Discuss / decide / triage here if:
- replacement / modernization is required at all
- compare possible replacement candidates
- decide and implement, if any
Nice to have: (and also open for discussion)
- packaging helpers (like .deb, rpm, .tar.gz, flatpak, snap, appimage, ...)
- simplify e.g. arch packaging with $DESTDIR and the like
- support for installing dbus service files, icons and desktop files
- conversion of *.in files before packaging
- github actionability
See also https://github.com/projecthamster/hamster/issues/399 for previous discussion (yay, found the issue again :-p)
Well, note that I'm not a Python developer and so, not a credible source :) But, I've been involved in a number of Python packaging for distros recently. Migrating to pyproject.toml style building seems to be a standard, so I think using it is a must. Then, the question will be the build backend. I'm completely clueless here, but I've seen people started using hatch recently. But, if you are fan of meson, it seems that there is also this meson python thing which can be used.
I'm not sure about meson python, but using a more common build backend like hatch/hatchling or others (newer setuptools versions or maybe PDM or...) is probably supported by many distros out of the box.
Using pyproject.toml with a common build backend will most likely mean effortless packaging in popular distros; as you probably don't need to edit the default template much.
If we can make things work with pyproject.toml and a build backend, that would be awesome! I'm not sure if all of the build backend stuff will work (we might need to install things out of the regular boundaries of a python package, but maybe the build backend API allows for that), but if so, all the better.
Well, from a brief look, I've got a feeling that it is possible. I hope I'm not wrong :)
Maintainer of Hatch here! The build backend Hatchling I think would definitely satisfy your constraints as there is plugin functionality allowing for custom build hooks if desired.