Hi all,

It's been a few weeks since the previous update, so I thought it made
sense to share how the preparation for the transition is going and
highlight what the most important next steps are.

## Status on building packages against 3.15

By now, the 7k+ packages that were included in my selection of affected
packages have gone through at least one attempt to build. For the last
batch of build failures, rather than trying to write patches to all of
them, Marga helped me with filing bugs with links to the logs and the
errors.

With the python3.15 usertag [1] we can see that there are 149 solved
bugs (thanks everybody who helped with that!), 65 patches that still
need to be applied and uploaded, and 87 bugs that need investigating.

## Issues with dh-python

During the rebuilds I found two issues with dh-python that I've sent MRs
for.

The first one is straightforward to fix: it uses glob1 which is
deprecated. The MR [2] is approved and just needs to be merged. This
won't become a problem until Python 3.15 is the default version, but for
testing purposes it would be good to have it fixed now.

The second one is a bit more tricky but also a lot more urgent, as it
needs to happen before 3.15 is marked as supported: When a package ships
metadata for several Python versions and the files are not all
identical, dh-python leaves a partial, invalid dist-info directory under
the version-specific path. This has been happening for a long time, but
with 3.15 it becomes a problem because Python now raises an exception
for those broken directories [3] and any package that attempts to read
such a directory chokes on it and needs to be patched to handle this
situation.

I've been sending patches to different packages that are affected by
this issue, e.g. setuptools [4], but this is a problem that is caused by
dh-python (i.e. it doesn't happen outside of Debian) and so not all
upstreams are eager to accept such a change.

In other words, we should fix dh-python to stop creating broken
directories in this case, and do so before we start building against
3.15. I've sent two alternative MRs for dealing with this. The first one
[5] merges the files, while the second one [6] leaves the metadata
directories as they are, instead of keeping only the files that differ.
Either solution is fine by me, but what we can't do is keep the current
behavior as it's creating invalid metadata directories, and we will
continue to run into bugs that nobody else sees, because we are creating
this invalid situation in the first place.

## Next steps on moving 3.15 to supported version

After a slight delay in the upstream release, Python 3.15 is now out,
and yesterday Stefano uploaded the 3.15.0-1 package to unstable.

3.15 is not yet listed as a supported version in python3-defaults, so
packages are not building against it yet. As mentioned above, ideally
dh-python should be fixed before this step happens, to avoid creating
broken directories that will bite us in the future.

Once that's done, the next step is to add 3.15 to the supported
versions, coordinate with the release team to actually start the
transition [7]. And then all the python3.15 bugs that are marked as
'important' need to be raised to 'serious' (92 bugs currently in this
category).

Happy Hacking,
Maxy

[1]: 
https://bugs.debian.org/cgi-bin/[email protected]&tag=python3.15
[2]: 
https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/91/diffs
[3]: https://docs.python.org/3.15/whatsnew/3.15.html#importlib-metadata
[4]: https://github.com/pypa/setuptools/pull/5332
[5]: https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/92
[6]: https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/93
[7]: https://release.debian.org/transitions/html/python3.15-add.html

--
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity."
-- Dennis Ritchie
Saludos /\/\ /\ >< `/

Attachment: signature.asc
Description: PGP signature

Reply via email to