please warn about b-d on python3-all-dev and package not building for all supported python versions. Not sure if that's implementable, because you can only warn about that when there are currently multiple supported python3 versions (like in python3-defaults in experimental). Or can you reference the buildinfo file for that? Examples which I found so far: jsonnet ldb apparmor libkdtree++
see https://launchpadlibrarian.net/447355407/buildlog_ubuntu-focal-amd64.jsonnet_0.14.0+ds-1build1_BUILDING.txt.gz the build system doesn't loop over the python3 versions, it just builds for the default, and not for python3.8.
severity 942673 wishlist thanks Matthias Klose wrote: Can you clarify what you mean here regarding "not building for all supported Python versions"? I'm looking at src:jsonnet and do not immediately see what is wrong. Regards,
Hi Matthias, Thanks for the link. I don't immediately see how Lintian can statically check for this lack of "looping" though. Can you help? Regards,
My idea would be to look at the .buildinfo file, seeing python3-all-dev, and then python3.7-dev and python3.8-dev. I don't think that analyzing the rules file is the way to go. I'm not sure how you would be able to do without the .buildinfo file. Matthias
Matthias Klose wrote: I'm still not 100% clear what you mean, particularly on the "seeing python3.7-dev and python3.8-dev"? Perhaps if you could provide some concrete good and bad examples that would be the most efficient way to move forward from here. Regards,
The failures I want to catch are:
- build-depends on python3-all-dev, but only builds
for the default python3 version.
- build-depends on python3-all-dev, builds for all
supported python3 versions, but then somehow fails
to include the extensions for all python3 versions.
This seems to happen with 3.8, because the m modifier
in file and directory names was dropped.
The error should trigger,
- if the .buildinfo lists more than one python3.X-dev,
(this is usually only the case when python3-all-dev
pulls in more than one python3 version, like currently
in experimental).
- if the binary package python3-* has at least extensions
built for one python version,
- but not for all python versions you find in the .buildinfo.
The expected result would be an extension built for all
supported python3 versions.
this is a succeeding build which fails to package the 3.8 extensions:
https://launchpad.net/ubuntu/+source/python-crypto/2.6.1-10ubuntu1
https://launchpad.net/ubuntu/+source/python-crypto/2.6.1-10ubuntu1/+build/17935886
this is a fixed build:
https://launchpad.net/ubuntu/+source/python-crypto/2.6.1-10ubuntu2
https://launchpad.net/ubuntu/+source/python-crypto/2.6.1-10ubuntu2/+build/17938600
These are package which currently just bulld for the default but depend on
python3-all-dev:
ldb
apparmor
libkdtree++
zbar
Hi again Matthias, Ah, I guess this the crux of my question; how might Lintian check this statically? From the list of filenames in the binary package? Is there some binary package field I am missing...? Using the .buildinfo in Lintian is a little problematic as most processes, tools and scripts pass the .changes, so if we could weaken this to source packages that Build-Depend on python-all-dev then that would actually catch a lot more instances. Best wishes,