On Fri, 2021-04-30 at 01:50 +0100, Sam James wrote: > > > On 29 Apr 2021, at 22:01, Michał Górny <mgo...@gentoo.org> wrote: > > > > Signed-off-by: Michał Górny <mgo...@gentoo.org> > > --- > > .../2021-04-29-python3-9.en.txt | 93 +++++++++++++++++++ > > 1 file changed, 93 insertions(+) > > create mode 100644 2021-04-29-python3-9/2021-04-29-python3-9.en.txt > > > > diff --git a/2021-04-29-python3-9/2021-04-29-python3-9.en.txt > > b/2021-04-29-python3-9/2021-04-29-python3-9.en.txt > > new file mode 100644 > > index 0000000..3075d72 > > --- /dev/null > > +++ b/2021-04-29-python3-9/2021-04-29-python3-9.en.txt > > @@ -0,0 +1,93 @@ > > +Title: Python 3.9 to become the default on 2021-06-01 > > > > Thanks for working on this. I kept meaning to do one for 3.8 and then 3.9 got > so close > that I felt a bit daft doing it. > > > + > > +We are planning to switch the default Python target of Gentoo systems > > +on 2021-06-01, from Python 3.8 to Python 3.9. If you have not changed > > +the values of PYTHON_TARGETS or PYTHON_SINGLE_TARGET, the change will > > +have immediate effect on your system and the package manager will try > > +to switch automatically on the next upgrade following the change. > > (Add a new line here). > > > +If you did change the values, prefer a safer approach or have problems > > +with the update, read on. > > + > > +Please note that the default upgrade method switches packages to the new > > +Python versions as they are rebuilt. This means that all interdependent > > +packages have to support the new version for the upgrade to proceed, > > +and that some programs may temporarily fail to find their dependencies > > +throughout the upgrade (although programs that are already started > > +are unlikely to be affected). > > + > > + > > I’d consider numbering or marking with a bullet point or ‘-‘ each of > the possible options, in order of likely usefulness. So, we’d do e.g. > > 1) If you’ve not set anything, just upgrade as normal and then depclean. > > 2) In order to have both Python implementations enabled temporarily for > safety ,… > > […] > > But this isn’t required. It’s just about making it easier for people to see > what they need to do, and not misread it and then do silly things because > they just copied and pasted the stuff which looked right (it happens). > > Let’s put all of the key information at the beginning, then the > configurability/tweaking can be later on. > > > +If you wish to avoid changing Python targets at this moment, you can > > +force the old targets by setting your /etc/portage/package.use to e.g.: > > + > > + */* PYTHON_TARGETS: -* python3_8 > > + */* PYTHON_SINGLE_TARGET: -* python3_8 > > + > > +This will enforce Python 3.8 as the current target choice and block > > +any future updates. However, please note that this solution will only > > +be suitable for a few more months and you will eventually need to > > +perform the migration. > > + > > + > > +If you wish to use a safer approach to the migration and temporarily > > +preserve the support for Python 3.8 and Python 3.9 simultaneously, > > +set /etc/portage/package.use to: > > + > > + */* PYTHON_TARGETS: -* python3_8 python3_9 > > + */* PYTHON_SINGLE_TARGET: -* python3_8 > > + > > +Afterwards, rebuild your system with emerge's --changed-use option or > > +equivalent. This will cause your packages to gain Python 3.9 support > > +while preserving Python 3.8 support whenever possible. Then, change > > +the second line to: > > + > > + */* PYTHON_SINGLE_TARGET: -* python3_9 > > + > > +This will switch packages that can not support two Python versions > > +simultaneously, to use Python 3.9. Rebuild again. Finally, switch > > +the first line to the final version: > > + > > + */* PYTHON_TARGETS: -* python3_9 > > + > > +The next --changed-use rebuild will remove Python 3.8 support from your > > +packages. > > + > > + > > +You can also switch to Python 3.9 earlier by setting: > > + > > + */* PYTHON_TARGETS: -* python3_9 > > + */* PYTHON_SINGLE_TARGET: -* python3_9 > > + > > +If you choose to follow this or the previous approach, you may want to > > +remove the package.use overrides after the switch or just leave them > > +in place to protect your system from the next automatic upgrade > > +of Python. > > + > > “It is especially important you do not forget IF you choose to add this, > because it interferes with the natural rolling-with-the-defaults." > > > + > > +The Python 3.8 cleanup requires that Python 3.8 is removed from complete > > +dependency trees in batch. If some of the installed packages using > > +an older Python version are not triaged for the upgrade, the package > > +manager will throw dependency conflicts. This makes it important that > > +the upgrade is carried via a --deep --changed-use @world upgrade, > > +as well as that any stray packages are removed prior to it, e.g.: > > + > > + emerge --depclean > > + emerge -1vUD @world > > + emerge --depclean > > + > > Let’s put this right at the beginning. > > > + > > +By the time of the switch, it is quite probable that Python 3.10 will > > +already be available in ~arch Gentoo. Users wishing a more bleeding > > +edge experience may wish to switch to python3_10 target instead. > > +However, this is currently discouraged on stable as it will require > > +unmasking multiple ~arch packages as they gain Python 3.10 support. > > I was in two minds about keeping this, but it’s useful to give people an idea > of what’s coming in the future. > > > + > > +If you have PYTHON_TARGETS or PYTHON_SINGLE_TARGET declared > > +in make.conf, it is strongly recommended to remove the declarations > > +and use package.use as presented above. Use of make.conf to set flags > > +is discouraged as it does not respect package defaults. > > Let’s put this towards the beginning and also note that people should, in > general, > not really need to set any PYTHON_TARGETS at all, other than for where > packages > are lagging for having their support updated. >
I've applied most of your suggestions... and feel like this still needs more work. I'll try to make it clearer what all options are, and how to use them. -- Best regards, Michał Górny