On Sat, Oct 12, 2024, 14:03 Michał Górny <mgo...@gentoo.org> wrote:

> On Sat, 2024-10-12 at 10:12 +0200, Michał Górny wrote:
> > This naturally means that only the specific version requested (e.g. via
> > targets) would be installed, and no cross-slot autoupgrades would
> > happen.  Ideally, I'd like to start doing that with Python 3.14 whose
> > first alpha is expected next week.  Depending on how they handle
> > freethreading, we'd end up having the first or both of:
> >
> >   dev-lang/python3_14
> >   dev-lang/python3_14t
> >
> > (Alternatives: python-3_14, python-freethreading-3_14? Though I think
> > following PYTHON_TARGETS is cleaner here.)
> >
> > As a side notice, the existing versions would probably remain as-is
> > until removal, since there's really no gain in splitting them, given
> > we'd have to retain compatibility with existing depstrings.
> >
> > Comments?
>
> Given all the opposition, I retract this.


I hope my questions weren't interpreted as opposition. I'm mostly neutral,
perhaps leaning a bit in favor.

When someone complains that Portage suddenly installs Python 3.13
> freethreading or Python 3.14 on their systems, it's on you.
>
> --
> Best regards,
> Michał Górny


I like slots for saying "these are different versions of the same
fundamental package, which you might want to install simultaneously,
because dependent packages may or may not need a specific version.", so
yes, on paper I agree that slots feel correct for different Python
versions. However, if there's another aspect of compatibility
(freethreading vs. non-freethreading), then I understand that slots don't
handle that well, and neither do USE flags.

I would _love_ to have something in between slots and USE flags -- perhaps
call them VARIANT flags, where differing combinations of VARIANT flags can
be installed simultaneously, but without carrying any implication of one
VARIANT combination being "newer" than another. This would be fantastic for
multilib systems that want different USE flags for x86 and amd64 builds (my
64-bit software stack GREATLY inflates my otherwise-minimal 32-bit stack).
As another example, sci-chemistry/gromacs offers MPI support for clustering
capabilities, but this actually impairs performance when running on a
single machine, so there's good reason to desire installing both
simultaneously (the ebuild already handles simultaneous single-precision
and double-precision builds).

This would be a major change to Portage, however, and I imagine we still
need a short-term solution even if the VARIANT idea is embraced and
implemented rapidly.

Perhaps a pair of USE flags could control the compiling/installation of
freethreading and non-freethreading builds, with a REQUIRED_USE mandating
at least one of them? If not, I think separate packages might be the best
(interim) solution unless/until a new Portage feature is implemented to
handle it all more elegantly.

-MD

Reply via email to