On Wed, Oct 20, 2021 at 5:22 PM Thomas Goirand zigo@debian.org wrote:
On 10/18/21 2:18 PM, Jeremy Stanley wrote:
On 2021-10-18 11:22:11 +0800 (+0800), 高瀚翔 wrote:
Skyline-apiserver is a pure Python code project, following the Python wheel packaging standard, using pip for installation, and the dependency management of the project using poetry[1]
Skyline-console uses npm for dependency management, development and testing. During the packaging and distribution process, webpack will be used to process the source code and dependent library code first, and output the packaged static resource files. These static resource files will be stored in an empty Python module[2].
[...]
GNU/Linux distributions like Debian are going to want to separately package the original source code for all of these Web components and their dependencies, and recreate them at the time the distro's binary packages are built. I believe the concerns are making it easy for them to find the source for all of it, and to attempt to use dependencies which these distributions already package in order to reduce their workload. Further, it helps to make sure the software is capable of using multiple versions of its dependencies when possible, because it's going to be installed into shared environments with other software which may have some of the same dependencies, so may need to be able to agree on common versions they all support.
Hi,
Thanks Jeremy for summing-up things in a better way that I ever would.
Also, using pip is *not* an option for distros. I'm not sure what you mean by "following the Python wheel packaging standard", but to me, we're not there yet. I'd like to have a normal setup.py and setup.cfg file in each Python module so it's easy to call "python3 setup.py install --root $(pwd)/debian/skyline-apiserver --install-layout=deb".
Side note: calling setup.py is essentially deprecated: https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html
I would also expect to see a "normal" requirements.txt and test-requirements.txt like in every other OpenStack project, the use of stestr to run unit tests, and so on.
Right now, when looking at the skyline-apiserver as the Debian OpenStack package maintainer, I'd need a lot of manual work to use pyproject.toml instead of my standard tooling.
PyProject is the universal way forward, you'll (and we'll) need to adopt sooner or later.
Dmitry
As I understand, dependencies are expressed in the pyproject.toml, but then how do I get the Python code installed under debian/skyline-apiserver?
BTW, what made you choose something completely different than the rest of the OpenStack project?
Cheers,
Thomas Goirand (zigo)