* [gentoo-dev] [PATCH gentoo-news] News item for Python 3.13 transition
@ 2025-03-18 13:37 Michał Górny
2025-03-18 13:53 ` [gentoo-dev] " Petr Vaněk
2025-03-20 8:08 ` Anna Vyalkova
0 siblings, 2 replies; 5+ messages in thread
From: Michał Górny @ 2025-03-18 13:37 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
---
.../2025-03-18-python3-13.en.txt | 134 ++++++++++++++++
.../2025-03-18-python3-13.pl.txt | 147 ++++++++++++++++++
2 files changed, 281 insertions(+)
create mode 100644 2025-03-18-python3-13/2025-03-18-python3-13.en.txt
create mode 100644 2025-03-18-python3-13/2025-03-18-python3-13.pl.txt
diff --git a/2025-03-18-python3-13/2025-03-18-python3-13.en.txt b/2025-03-18-python3-13/2025-03-18-python3-13.en.txt
new file mode 100644
index 0000000..6d368ce
--- /dev/null
+++ b/2025-03-18-python3-13/2025-03-18-python3-13.en.txt
@@ -0,0 +1,134 @@
+Title: Python 3.13 to become the default on 2025-05-01
+Author: Michał Górny <mgorny@gentoo.org>
+Posted: 2025-03-18
+Revision: 1
+News-Item-Format: 2.0
+Display-If-Installed: dev-lang/python:3.10
+Display-If-Installed: dev-lang/python:3.11
+Display-If-Installed: dev-lang/python:3.12
+
+We are planning to switch the default Python target of Gentoo systems
+on 2025-05-01, from Python 3.12 to Python 3.13. 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.
+
+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).
+
+
+If you have PYTHON_TARGETS or PYTHON_SINGLE_TARGET declared
+in make.conf, please remove these declarations as they will interfere
+with the package.use samples provided below. Using make.conf for Python
+targets is discouraged as it prevents package defaults from applying
+when necessary. This news item assumes using /etc/portage/package.use
+or your package manager's equivalent file for configuration.
+
+
+At this point, you have a few configuration options to choose from:
+
+1. If you wish Python upgrades to apply automatically, you can remove
+ PYTHON_TARGETS and PYTHON_SINGLE_TARGET declarations. When
+ the defaults change, your package manager should handle the upgrade
+ automatically. However, you may still need to run the update
+ commands if any problems arise.
+
+2. If you wish to defer the upgrade for the time being, you can
+ explicitly set the old values in package.use.
+
+3. If you wish to force the upgrade earlier, you can explicitly set
+ the new values and run the upgrade commands.
+
+4. If you wish to use a safer approach (i.e. less likely to temporarily
+ break packages during the upgrade), you can perform a multi-step
+ upgrade as outlined below.
+
+5. Finally, you can use an arbitrary combination of PYTHON_TARGETS
+ and PYTHON_SINGLE_TARGET.
+
+
+Deferring the upgrade
+=====================
+To defer the upgrade, explicitly set the old targets:
+
+ */* PYTHON_TARGETS: -* python3_12
+ */* PYTHON_SINGLE_TARGET: -* python3_12
+
+This will enforce Python 3.12 and block any future updates. However,
+please note that this is only a temporary solution and you will
+eventually need to perform the migration.
+
+
+Forcing the upgrade
+===================
+To force the upgrade earlier, explicitly select the Python 3.13 targets:
+
+ */* PYTHON_TARGETS: -* python3_13
+ */* PYTHON_SINGLE_TARGET: -* python3_13
+
+However, it is important to remember to remove this after the defaults
+change, as it will interfere with the automatic switch to the next
+Python version in the future.
+
+
+Safer upgrade procedure
+=======================
+A safer approach is to add Python 3.13 support to your system first,
+and only then remove Python 3.12. However, note that this involves two
+rebuilds of all the affected packages, so it will take noticeably
+longer.
+
+First, enable both Python 3.12 and Python 3.13, and then run the upgrade
+commands:
+
+ */* PYTHON_TARGETS: -* python3_12 python3_13
+ */* PYTHON_SINGLE_TARGET: -* python3_12
+
+Then switch PYTHON_SINGLE_TARGET and run the second batch of upgrades:
+
+ */* PYTHON_TARGETS: -* python3_12 python3_13
+ */* PYTHON_SINGLE_TARGET: -* python3_13
+
+Finally, switch to the final version and upgrade:
+
+ */* PYTHON_TARGETS: -* python3_13
+ */* PYTHON_SINGLE_TARGET: -* python3_13
+
+You may wish to remove the target overrides after the defaults switch.
+Alternatively, you can keep them to block the next automatic upgrade
+to Python 3.14, and upgrade manually then.
+
+
+Upgrade commands
+================
+The Python 3.12 cleanup requires that Python 3.12 is removed from
+the 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
+
+
+Other Python implementations
+============================
+At the same time, we are also going to remove the target support
+for Python 3.10 (python3_10) and PyPy 3.10 (pypy3). If you were using
+the pypy3 target before, now you will need to explicitly enable
+per-version targets, such as:
+
+ */* PYTHON_TARGETS: pypy3_11
+
+Note that PyPy support is available only for systems accepting ~arch
+keywords.
diff --git a/2025-03-18-python3-13/2025-03-18-python3-13.pl.txt b/2025-03-18-python3-13/2025-03-18-python3-13.pl.txt
new file mode 100644
index 0000000..b77b980
--- /dev/null
+++ b/2025-03-18-python3-13/2025-03-18-python3-13.pl.txt
@@ -0,0 +1,147 @@
+Title: Python 3.13 stanie się domyślną wersją począwszy od 2025-05-01
+Author: Michał Górny <mgorny@gentoo.org>
+Translator: Michał Górny <mgorny@gentoo.org>
+Posted: 2025-03-18
+Revision: 1
+News-Item-Format: 2.0
+Display-If-Installed: dev-lang/python:3.10
+Display-If-Installed: dev-lang/python:3.11
+Display-If-Installed: dev-lang/python:3.12
+
+Gentoo planuje zmienić domyślną wersję Pythona z 3.12 na 3.13 w dniu
+1. maja 2025 r. Użytkownicy, którzy nie zmieniali wartości flag
+PYTHON_TARGETS oraz PYTHON_SINGLE_TARGET nie muszą nic robić. Menadżer
+pakietów automatycznie zaktualizuje wsparcie Pythona do nowej wersji
+przy kolejnej aktualizacji systemu po tej zmianie.
+
+Informacje zawarte w tej wiadomości przeznaczone są dla użytkowników,
+którzy zmieniali preferowaną wersję Pythona bądź chcą przeprowadzić
+aktualizację w bezpieczniejszy sposób.
+
+Uwaga: standardowa metoda aktualizacji podmienia obsługiwaną wersję
+Pythona w poszczególnych pakietach w miarę ich aktualizacji.
+Oznacza to, że aktualizacja systemu możliwa będzie wyłącznie, jeżeli
+wszystkie zainstalowane pakiety obsługują nową wersję. W trakcie
+aktualizacji zależności poszczególnych zainstalowanych programów mogą
+stać się tymczasowo niedostępne, nie powinno to jednak mieć wpływu
+na działanie już uruchomionych aplikacji.
+
+
+Użytkownicy, którzy wykorzystują plik make.conf do ustawienia wartości
+zmiennych PYTHON_TARGETS lub PYTHON_SINGLE_TARGET powinni usunąć
+te wartości, gdyż będą one kolidowały z przykładami package.use
+przedstawionymi w tej wiadomości. Wykorzystywanie pliku make.conf
+do konfiguracji tych zmiennych jest niewskazane, gdyż ustawienia te
+nadpisują domyślne wartości flag zawarte w poszczególnych pakietach.
+Dalszy ciąg tej wiadomości zakłada wykorzystywanie package.use
+lub równoważnego pliku konfiguracyjnego.
+
+
+Dostępne są następujące możliwości aktualizacji:
+
+1. Automatyczna aktualizacja wersji Pythona. Aby skorzystać z tej
+ opcji, należy usunąć zmienne PYTHON_TARGETS
+ oraz PYTHON_SINGLE_TARGET. Wówczas menadżer pakietów automatycznie
+ przeprowadzi aktualizację ilekroć zmieni się domyślna wersja Pythona
+ w Gentoo. Niemniej, może zaistnieć konieczność ręcznej aktualizacji
+ w przypadku wystąpienia problemów.
+
+2. Odroczenie aktualizacji poprzez wymuszenie poprzedniej wersji
+ w pliku package.use.
+
+3. Wymuszenie wcześniejszej aktualizacji poprzez podanie nowej wersji
+ i dokonanie aktualizacji systemu.
+
+4. Zastosowanie bezpiecznego podejścia (tj. zmniejszającego ryzyko
+ niesprawnych programów w trakcie aktualizacji) poprzez wykonanie
+ aktualizacji w kilku krokach. Proces ten jest szczegółowo opisany
+ w dalszej części wiadomości.
+
+5. Zastosowanie dowolnej kombinacji zmiennych PYTHON_TARGETS
+ oraz PYTHON_SINGLE_TARGET.
+
+
+Odroczenie aktualizacji
+=======================
+Aby odroczyć aktualizację do późniejszego terminu, należy wymusić
+poprzednią wersję Pythona:
+
+ */* PYTHON_TARGETS: -* python3_12
+ */* PYTHON_SINGLE_TARGET: -* python3_12
+
+W ten sposób Python 3.12 zostanie wymuszony na stałe i przyszłe
+aktualizacje zostaną zablokowane. Należy jednak pamiętać, że jest
+to rozwiązanie tymczasowe i w przyszłości aktualizacja stanie się
+konieczna.
+
+
+Wymuszenie aktualizacji
+=======================
+Aby wymusić aktualizację wcześniej, należy wybrać Pythona 3.13:
+
+ */* PYTHON_TARGETS: -* python3_13
+ */* PYTHON_SINGLE_TARGET: -* python3_13
+
+Zalecane jest jednak usunięcie tych ustawień po podanym wyżej terminie,
+aby nie kolidowały w przyszłości z kolejną zmianą domyślnej wersji
+Pythona.
+
+
+Bezpieczna procedura aktualizacji
+=================================
+Bezpieczniejszą alternatywą do standardowego procesu jest wprowadzenie
+wsparcia Pythona 3.13 w pierwszym kroku, a następnie usunięcie Pythona
+3.12. Należy jednak pamiętać, że będzie wymagało to dwukrotnego
+przebudowania wszystkich pakietów używających Pythona, tak więc łączny
+czas aktualizacji zostanie wydłużony.
+
+Najpierw załączyć należy obydwie wersje Pythona i przeprowadzić
+aktualizację systemu:
+
+ */* PYTHON_TARGETS: -* python3_12 python3_13
+ */* PYTHON_SINGLE_TARGET: -* python3_12
+
+Następnie przełączyć należy wartość PYTHON_SINGLE_TARGET i przebudować
+pakiety używające tych flag:
+
+ */* PYTHON_TARGETS: -* python3_12 python3_13
+ */* PYTHON_SINGLE_TARGET: -* python3_13
+
+W ostatnim kroku należy wyłączyć poprzednią wersję i przeprowadzić
+kolejną aktualizację:
+
+ */* PYTHON_TARGETS: -* python3_13
+ */* PYTHON_SINGLE_TARGET: -* python3_13
+
+Po terminie zmiany domyślnych wartości, konfigurację tę można usunąć.
+Alternatywnie, pozostawienie jej zablokuje przyszłą aktualizację
+do Pythona 3.14 i pozwoli na ręczne przeprowadzenie bezpieczniej
+aktualizacji.
+
+
+Proces aktualizacji
+===================
+Usunięcie Pythona 3.12 wymaga, by odpowiednie flagi zostały jednocześnie
+wyłączone w całym drzewie zależności. Jeżeli niektóre z zainstalowanych
+pakietów nie zostaną uwzględnione w planowanej aktualizacji, mogą one
+zablokować ten proces. Dlatego też istotne jest przeprowadzenie
+aktualizacji przy pomocy parametrów `--deep --changed-use @world` bądź
+równoważnych, jak również wcześniejsze usunięcie niepotrzebnych
+pakietów. Można tego dokonać używając poleceń:
+
+ emerge --depclean
+ emerge -1vUD @world
+ emerge --depclean
+
+
+Inne implementacje Pythona
+==========================
+W tym samym czasie, Gentoo usunie wsparcie flag dla Pythona 3.10
+(flaga python3_10) oraz PyPy 3.10 (flaga pypy3). Konfiguracja systemów,
+które korzystały wcześniej z flagi pypy3 musi zostać zaktualizowana
+do flag, odpowiadających poszczególnym wersjom PyPy, jak:
+
+ */* PYTHON_TARGETS: pypy3_11
+
+Zwracamy uwagę, że wsparcie PyPy dostępne jest jedynie dla systemów,
+akceptujących paczki ~arch.
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [gentoo-dev] Re: [PATCH gentoo-news] News item for Python 3.13 transition
2025-03-18 13:37 [gentoo-dev] [PATCH gentoo-news] News item for Python 3.13 transition Michał Górny
@ 2025-03-18 13:53 ` Petr Vaněk
2025-03-18 14:06 ` Michał Górny
2025-03-20 8:08 ` Anna Vyalkova
1 sibling, 1 reply; 5+ messages in thread
From: Petr Vaněk @ 2025-03-18 13:53 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
On Tue, Mar 18, 2025 at 02:37:24PM +0100, Michał Górny wrote:
> ---
> .../2025-03-18-python3-13.en.txt | 134 ++++++++++++++++
> .../2025-03-18-python3-13.pl.txt | 147 ++++++++++++++++++
> 2 files changed, 281 insertions(+)
> create mode 100644 2025-03-18-python3-13/2025-03-18-python3-13.en.txt
> create mode 100644 2025-03-18-python3-13/2025-03-18-python3-13.pl.txt
>
> diff --git a/2025-03-18-python3-13/2025-03-18-python3-13.en.txt b/2025-03-18-python3-13/2025-03-18-python3-13.en.txt
> new file mode 100644
> index 0000000..6d368ce
> --- /dev/null
> +++ b/2025-03-18-python3-13/2025-03-18-python3-13.en.txt
> @@ -0,0 +1,134 @@
> +Title: Python 3.13 to become the default on 2025-05-01
> +Author: Michał Górny <mgorny@gentoo.org>
> +Posted: 2025-03-18
> +Revision: 1
> +News-Item-Format: 2.0
> +Display-If-Installed: dev-lang/python:3.10
> +Display-If-Installed: dev-lang/python:3.11
> +Display-If-Installed: dev-lang/python:3.12
I think we should also add
Display-If-Installed: dev-lang/pypy:3.10
with respect to the last section. Otherwise LGTM (en version).
Petr
> +Other Python implementations
> +============================
> +At the same time, we are also going to remove the target support
> +for Python 3.10 (python3_10) and PyPy 3.10 (pypy3). If you were using
> +the pypy3 target before, now you will need to explicitly enable
> +per-version targets, such as:
> +
> + */* PYTHON_TARGETS: pypy3_11
> +
> +Note that PyPy support is available only for systems accepting ~arch
> +keywords.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-dev] Re: [PATCH gentoo-news] News item for Python 3.13 transition
2025-03-18 13:53 ` [gentoo-dev] " Petr Vaněk
@ 2025-03-18 14:06 ` Michał Górny
0 siblings, 0 replies; 5+ messages in thread
From: Michał Górny @ 2025-03-18 14:06 UTC (permalink / raw
To: gentoo-dev
[-- Attachment #1: Type: text/plain, Size: 1311 bytes --]
On Tue, 2025-03-18 at 14:53 +0100, Petr Vaněk wrote:
> On Tue, Mar 18, 2025 at 02:37:24PM +0100, Michał Górny wrote:
> > ---
> > .../2025-03-18-python3-13.en.txt | 134 ++++++++++++++++
> > .../2025-03-18-python3-13.pl.txt | 147 ++++++++++++++++++
> > 2 files changed, 281 insertions(+)
> > create mode 100644 2025-03-18-python3-13/2025-03-18-python3-13.en.txt
> > create mode 100644 2025-03-18-python3-13/2025-03-18-python3-13.pl.txt
> >
> > diff --git a/2025-03-18-python3-13/2025-03-18-python3-13.en.txt b/2025-03-18-python3-13/2025-03-18-python3-13.en.txt
> > new file mode 100644
> > index 0000000..6d368ce
> > --- /dev/null
> > +++ b/2025-03-18-python3-13/2025-03-18-python3-13.en.txt
> > @@ -0,0 +1,134 @@
> > +Title: Python 3.13 to become the default on 2025-05-01
> > +Author: Michał Górny <mgorny@gentoo.org>
> > +Posted: 2025-03-18
> > +Revision: 1
> > +News-Item-Format: 2.0
> > +Display-If-Installed: dev-lang/python:3.10
> > +Display-If-Installed: dev-lang/python:3.11
> > +Display-If-Installed: dev-lang/python:3.12
>
> I think we should also add
>
> Display-If-Installed: dev-lang/pypy:3.10
>
> with respect to the last section. Otherwise LGTM (en version).
>
Good idea, thanks!
--
Best regards,
Michał Górny
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 512 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* [gentoo-dev] Re: [PATCH gentoo-news] News item for Python 3.13 transition
2025-03-18 13:37 [gentoo-dev] [PATCH gentoo-news] News item for Python 3.13 transition Michał Górny
2025-03-18 13:53 ` [gentoo-dev] " Petr Vaněk
@ 2025-03-20 8:08 ` Anna Vyalkova
2025-03-20 12:51 ` Michał Górny
1 sibling, 1 reply; 5+ messages in thread
From: Anna Vyalkova @ 2025-03-20 8:08 UTC (permalink / raw
To: gentoo-dev
On 2025-03-18, Michał Górny wrote:
> +Other Python implementations
> +============================
> +At the same time, we are also going to remove the target support
> +for Python 3.10 (python3_10) and PyPy 3.10 (pypy3). If you were using
> +the pypy3 target before, now you will need to explicitly enable
> +per-version targets, such as:
> +
> + */* PYTHON_TARGETS: pypy3_11
> +
> +Note that PyPy support is available only for systems accepting ~arch
> +keywords.
Do I understand correctly that PyPy will stay without stable keywords
going forward?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-dev] Re: [PATCH gentoo-news] News item for Python 3.13 transition
2025-03-20 8:08 ` Anna Vyalkova
@ 2025-03-20 12:51 ` Michał Górny
0 siblings, 0 replies; 5+ messages in thread
From: Michał Górny @ 2025-03-20 12:51 UTC (permalink / raw
To: gentoo-dev
[-- Attachment #1: Type: text/plain, Size: 807 bytes --]
On Thu, 2025-03-20 at 13:08 +0500, Anna Vyalkova wrote:
> On 2025-03-18, Michał Górny wrote:
> > +Other Python implementations
> > +============================
> > +At the same time, we are also going to remove the target support
> > +for Python 3.10 (python3_10) and PyPy 3.10 (pypy3). If you were using
> > +the pypy3 target before, now you will need to explicitly enable
> > +per-version targets, such as:
> > +
> > + */* PYTHON_TARGETS: pypy3_11
> > +
> > +Note that PyPy support is available only for systems accepting ~arch
> > +keywords.
>
> Do I understand correctly that PyPy will stay without stable keywords
> going forward?
I'll probably stabilize the interpreter. However, the targets will be
stable-masked as they are now.
--
Best regards,
Michał Górny
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 512 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-03-20 12:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-18 13:37 [gentoo-dev] [PATCH gentoo-news] News item for Python 3.13 transition Michał Górny
2025-03-18 13:53 ` [gentoo-dev] " Petr Vaněk
2025-03-18 14:06 ` Michał Górny
2025-03-20 8:08 ` Anna Vyalkova
2025-03-20 12:51 ` Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox