#942673 warn about b-d on python3-all-dev and package not building for all supported python versions

#942673#5
Date:
2019-10-19 21:29:15 UTC
From:
To:
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++

#942673#12
Date:
2019-10-20 17:05:07 UTC
From:
To:
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.

#942673#17
Date:
2019-10-20 16:57:03 UTC
From:
To:
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,

#942673#22
Date:
2019-10-20 21:17:04 UTC
From:
To:
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,

#942673#27
Date:
2019-10-20 21:37:24 UTC
From:
To:
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

#942673#32
Date:
2019-10-21 16:57:08 UTC
From:
To:
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,

#942673#37
Date:
2019-10-21 18:14:49 UTC
From:
To:
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

#942673#42
Date:
2019-10-21 21:17:06 UTC
From:
To:
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,