1 |
Hi, |
2 |
|
3 |
Here's v2 following IRC feedback and some rereading. |
4 |
|
5 |
Changes: |
6 |
|
7 |
- pushed the date forward (it will be 2 weeks after publishing the news |
8 |
item) and indicated that it may happen later. |
9 |
|
10 |
- did some more grammar improvements. |
11 |
|
12 |
- switched snippets to use package.use as make.conf breaks IUSE |
13 |
defaults. Also added a little explanation about that to the end but |
14 |
without getting into technical details. |
15 |
|
16 |
- indicated that not all packages support py3.7. |
17 |
|
18 |
- indicated that ~arch users may prefer py3.8. |
19 |
|
20 |
Please review. |
21 |
|
22 |
--- |
23 |
Title: Python 3.7 to become the default target |
24 |
Author: Michał Górny <mgorny@g.o> |
25 |
Posted: 2020-04-21 |
26 |
Revision: 1 |
27 |
News-Item-Format: 2.0 |
28 |
Display-If-Installed: dev-lang/python:3.6 |
29 |
|
30 |
On 2020-05-06 (or later), Python 3.7 will replace Python 3.6 as one |
31 |
of the default Python targets for Gentoo systems. The new default |
32 |
values will be: |
33 |
|
34 |
PYTHON_TARGETS="python2_7 python3_7" |
35 |
PYTHON_SINGLE_TARGET="python3_7" |
36 |
|
37 |
If you have not overriden these variables on your system, then your |
38 |
package manager will switch to the new targets immediately. In order |
39 |
to avoid dependency conflicts, please clean stray packages up |
40 |
and rebuild/upgrade all packages with USE flag changes after the change, |
41 |
e.g.: |
42 |
|
43 |
emerge --depclean |
44 |
emerge -1vUD @world |
45 |
emerge --depclean |
46 |
|
47 |
Please note that during the system upgrade some of the package |
48 |
dependencies may temporarily become missing. While this should not |
49 |
should not affect programs that are already fully loaded, it may cause |
50 |
ImportErrors while starting Python scripts or loading additional |
51 |
modules (only scripts running Python 3.6 are affected). |
52 |
|
53 |
In order to improve stability of the upgrade, you may choose to |
54 |
temporarily enable both targets, i.e. set in /etc/portage/package.use |
55 |
or its equivalent: |
56 |
|
57 |
PYTHON_TARGETS: python3_6 python3_7 |
58 |
PYTHON_SINGLE_TARGET: -* python3_6 |
59 |
|
60 |
This will cause the dependencies to include both Python 3.6 and 3.7 |
61 |
support whenever possible, throughout the next system upgrade. Once all |
62 |
packages are updated, you can restart your scripts, remove the setting |
63 |
and start another upgrade in order to cleanly remove Python 3.6. |
64 |
|
65 |
There are still some Gentoo packages that do not support Python 3.7. |
66 |
We will be pushing updates to these packages as time permits. However, |
67 |
some of them will probably be removed instead. |
68 |
|
69 |
If you would like to postpone the switch to Python 3.7, you can copy |
70 |
the current value of PYTHON_TARGETS and/or PYTHON_SINGLE_TARGET |
71 |
to /etc/portage/package.use or its equivalent: |
72 |
|
73 |
PYTHON_TARGETS: -python3_7 python3_6 |
74 |
PYTHON_SINGLE_TARGET: -* python3_6 |
75 |
|
76 |
If you would like to migrate your systems earlier, you can do |
77 |
the opposite. Note that if you are running ~arch, you may want to go |
78 |
straight for Python 3.8 at this point. |
79 |
|
80 |
Please note that this switch is long overdue. Python 3.6 is no longer |
81 |
receiving bug fixes. Its planned end-of-life is 2021-12-23 but we will |
82 |
probably remove it earlier than that. [1] |
83 |
|
84 |
All above snippets assume using package.use to control USE flags. |
85 |
If you still have make.conf entries for these targets, you need |
86 |
to remove them. While using make.conf is possible, it is strongly |
87 |
discouraged as it does not respect package defaults. The latter |
88 |
can help you keep some of Python 3.6 packages without the need to |
89 |
explicitly toggle flags per-package. |
90 |
|
91 |
[1] https://devguide.python.org/#status-of-python-branches |
92 |
|
93 |
-- |
94 |
Best regards, |
95 |
Michał Górny |