projecthamster / hamster

GNOME time tracker
http://projecthamster.org
GNU General Public License v3.0
1.07k stars 250 forks source link

Investigate and eventually replace waf build system #740

Open aquaherd opened 10 months ago

aquaherd commented 10 months ago

Recent discussion around the waf build system yielded a deprecation notion.

Discuss / decide / triage here if:

Nice to have: (and also open for discussion)

matthijskooijman commented 10 months ago

See also https://github.com/projecthamster/hamster/issues/399 for previous discussion (yay, found the issue again :-p)

hedayat commented 10 months ago

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.

matthijskooijman commented 10 months ago

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.

hedayat commented 10 months ago

Well, from a brief look, I've got a feeling that it is possible. I hope I'm not wrong :)

ofek commented 10 months ago

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.