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.


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.


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?


Thomas Goirand (zigo)

Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill