Hi Sergei,

On Thu, Dec 14, 2023 at 06:22:45PM +0300, Sergei Golovan wrote:
> I'm sorry, I wasn't aware about these implications. Meanwhile, I'm
> setting this bug
> severity to serious and will fix it as soon as possible.

Thank you. I agree that this is surprising at times. Hence, I'm looking
after this. :)

> > I suggest that you temporarily revert this change in unstable to restore
> > the ability to bootstrap Debian from source.
> 
> I'll do that.

Thank you.

> Can someone investigate if blt is really necessary for Python now?

This is a very difficult question I fear. A very common approach for
dropping dependencies is using reproducible builds as a QA tool: If the
package builds and has the same output artifact with a dependency
removed, it probably isn't used during build (but maybe used for
testing). Please keep in mind that any build dependency annotated
<!nocheck> is irrelevant to bootstrapping problems, so this is quite
powerful normally.

Unfortunately, Python is not very reproducible. It embeds the build path
into lots of places. It uses profile guided optimization and even if you
build with DEB_BUILD_OPTIONS=nopgo, you still get lots of variations.

The python$VER package used to contain tk, but since a while we have
python3-stdlib-extensions. It feels fairly natural that python$VER
should no longer need tk and blt. I went a head and tried reproducing
this. On the good side, that build succeeded. The resulting artifacts
still differed a lot from an unmodified build and in particular, the
_uuid.so and _nis.so module went missing. The former probably is due to
something from tk or blt issuing a dependency on uuid-dev and with those
packages removed, uuid-dev was no longer pulled. I have not found a
probably cause for the nis module.

So from the outset it seems that breaking the cycle at Python is
plausible, but it needs more validation work. Possibly, blt is still
being used for testing the build and that's fine as long as it is
annotated <!nocheck>. (Do note that a failure to build from source with
the nocheck profile enabled is considered to be an rc bug since trixie.)

> Again, I'll revert the change shortly, but is there any way I can help
> with untangling Python from blt?

If you are up for doing that work, I definitely appreciate that. As
detailed earlier, this probably involves changing python's Build-Depends
only. Adding uuid-dev and probably other packages that currently are
implied and then dropping or annotating blt-dev and probably also
tk-dev. That validation work is what takes time. At a bare minimum, one
needs to fix a build path and use DEB_BUILD_OPTIONS=nopgo, but I suspect
that even that isn't enough to get variations down to a manageable
level.

I'm all for removing blt from the bootstrap set in general. Though keep
in mind that you won't be removing it from python3-stdlib-extensions and
python3-tk has 500+ build-rdeps, so your luck with being removed from
bootstrap may vary.

Helmut

Reply via email to