* [gentoo-user] Fragile python update is wedged.
@ 2025-05-02 17:07 Alan Mackenzie
2025-05-02 17:22 ` Pramod V U
` (2 more replies)
0 siblings, 3 replies; 32+ messages in thread
From: Alan Mackenzie @ 2025-05-02 17:07 UTC (permalink / raw
To: gentoo-user
Hello, Gentoo.
I've just been trying the update for python 3.13. It went well on my
new machine (well, after unmerging app-portage/unsymlink-lib, which was
debris from some 2019 update).
On my old machine, however, there was a seg fault while merging rust.
This is a known problem in certain first generation Ryzen processors.
However, this left the build wedged: emerge says that there's a circular
dependency from rust to itself. More precisely, the error message looks
like:
#########################################################################
[ebuild NS ] dev-lang/rust-1.85.1:1.85.1::gentoo [1.81.0-r100:1.81.0::gentoo, 1.82.0-r101:1.82.0::gentoo, 1.83.0-r2:1.83.0::gentoo, 1.84.1-r1:1.84.1::gentoo] USE="(-big-endian) -clippy -debug -dist -doc (-llvm-libunwind) -lto -rust-analyzer -rust-src -rustfmt (-system-llvm) -test -verify-sig -wasm (-miri%) (-nightly%) (-parallel-compiler%)" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" LLVM_SLOT="(19)" LLVM_TARGETS="(X86) -AArch64 -AMDGPU -ARC -ARM -AVR -BPF -CSKY -DirectX -Hexagon -Lanai -LoongArch -M68k -MSP430 -Mips -NVPTX -PowerPC -RISCV -SPIRV -Sparc -SystemZ -VE -WebAssembly -XCore -Xtensa" 0 KiB
Total: 1 package (1 in new slot), Size of downloads: 0 KiB
* Error: circular dependencies:
(dev-lang/rust-1.85.1:1.85.1/1.85.1::gentoo, ebuild scheduled for merge) depends on
(dev-lang/rust-1.85.1:1.85.1/1.85.1::gentoo, ebuild scheduled for merge) (buildtime)
* Note that circular dependencies can often be avoided by temporarily
* disabling USE flags that trigger optional dependencies.
!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:
dev-python/gpep517:0
#########################################################################
(and so on).
This would appear to be a bug in the rust ebuild - it has set itself as a
builtime dependency before it had been built - or something like that.
How do I best recover from this?
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-02 17:07 [gentoo-user] Fragile python update is wedged Alan Mackenzie
@ 2025-05-02 17:22 ` Pramod V U
2025-05-02 17:47 ` [gentoo-user] Fragile rust update is wedged. (Was: Fragile python update is wedged.) Eli Schwartz
2025-05-11 11:54 ` [gentoo-user] Fragile python " Wol
2 siblings, 0 replies; 32+ messages in thread
From: Pramod V U @ 2025-05-02 17:22 UTC (permalink / raw
To: gentoo-user
You need a rust compiler to compile rust's own rust compiler.
You either need dev-lang/rust-bin, a package with binaries... Either just use it or compile the main rust package for use.
If that's a problem. dev-lang/mrustc is another compiler for rust, written in C/C++. It has been written specifically for this purpose of compiling rust's own rust compiler.
Kind regards,
Pramod
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile rust update is wedged. (Was: Fragile python update is wedged.)
2025-05-02 17:07 [gentoo-user] Fragile python update is wedged Alan Mackenzie
2025-05-02 17:22 ` Pramod V U
@ 2025-05-02 17:47 ` Eli Schwartz
2025-05-02 19:07 ` [gentoo-user] Fragile rust update is wedged Alan Mackenzie
2025-05-11 11:54 ` [gentoo-user] Fragile python " Wol
2 siblings, 1 reply; 32+ messages in thread
From: Eli Schwartz @ 2025-05-02 17:47 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 2025 bytes --]
On 5/2/25 1:07 PM, Alan Mackenzie wrote:
> Hello, Gentoo.
>
> I've just been trying the update for python 3.13. It went well on my
> new machine (well, after unmerging app-portage/unsymlink-lib, which was
> debris from some 2019 update).
>
> On my old machine, however, there was a seg fault while merging rust.
> This is a known problem in certain first generation Ryzen processors.
>
> However, this left the build wedged: emerge says that there's a circular
> dependency from rust to itself. More precisely, the error message looks
> like:
This is clearly not a python update, then.
> This would appear to be a bug in the rust ebuild - it has set itself as a
> builtime dependency before it had been built - or something like that.
>
> How do I best recover from this?
It is not a bug in the rust ebuild -- the rust ebuild has always,
always, always depended on itself. In the past, the rust ebuild silently
downloaded a temporary copy of dev-lang/rust-bin to work around this.
This was changed in November 2024.
The rust compiler is written in the rust programming language, using
bleeding-edge features of the most recent version of rust. They are
aware that this is a bootstrap problem and don't consider it a problem,
because rust is officially installed by downloading prebuilt binaries
into $HOME.
Compiling rust officially requires building the pre 1.0 version of rust,
itself written in ocaml, and then building *every* version of rust since
then, one by one, in turn, without skipping a single one. That is over
80 different versions of rust, you need to compile all of them in order
to get to the current one.
On amd64, you can use the unofficial dev-lang/mrustc (third-party
reimplementation of rust written in C++) which allows you to skip all
the way to rust 1.74, and from there it is "only" 13 or so versions to
build.
Or, you may use rust-bin. Alternatively, you may use:
```
emerge --getbinpkg dev-lang/rust
```
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile rust update is wedged.
2025-05-02 17:47 ` [gentoo-user] Fragile rust update is wedged. (Was: Fragile python update is wedged.) Eli Schwartz
@ 2025-05-02 19:07 ` Alan Mackenzie
2025-05-02 20:07 ` Eli Schwartz
2025-05-03 4:07 ` [gentoo-user] Fragile rust update is wedged Nate Eldredge
0 siblings, 2 replies; 32+ messages in thread
From: Alan Mackenzie @ 2025-05-02 19:07 UTC (permalink / raw
To: gentoo-user
Hello, Eli.
On Fri, May 02, 2025 at 13:47:02 -0400, Eli Schwartz wrote:
> On 5/2/25 1:07 PM, Alan Mackenzie wrote:
> > Hello, Gentoo.
> > I've just been trying the update for python 3.13. It went well on my
> > new machine (well, after unmerging app-portage/unsymlink-lib, which was
> > debris from some 2019 update).
> > On my old machine, however, there was a seg fault while merging rust.
> > This is a known problem in certain first generation Ryzen processors.
> > However, this left the build wedged: emerge says that there's a circular
> > dependency from rust to itself. More precisely, the error message looks
> > like:
> This is clearly not a python update, then.
Well, it was. ;-)
> > This would appear to be a bug in the rust ebuild - it has set itself as a
> > builtime dependency before it had been built - or something like that.
> > How do I best recover from this?
> It is not a bug in the rust ebuild -- the rust ebuild has always,
> always, always depended on itself. In the past, the rust ebuild silently
> downloaded a temporary copy of dev-lang/rust-bin to work around this.
I disagree. By attempting this emerging of rust, and failing, some
persistent information indicating this dependency has been created. This
persistent information, wherever it is, should not have been created, or
it should have been removed on the emerge failure.
> This was changed in November 2024.
Hmmm... OK.
> The rust compiler is written in the rust programming language, using
> bleeding-edge features of the most recent version of rust. They are
> aware that this is a bootstrap problem and don't consider it a problem,
> because rust is officially installed by downloading prebuilt binaries
> into $HOME.
This sounds bad, but how is it different from C and C++ in GCC?
> Compiling rust officially requires building the pre 1.0 version of rust,
> itself written in ocaml, and then building *every* version of rust since
> then, one by one, in turn, without skipping a single one. That is over
> 80 different versions of rust, you need to compile all of them in order
> to get to the current one.
No thanks! There's only so much time left before the Sun becomes a red
giant. But this attitude must limit the portability of rust to different
processors, such as are found in embedded systems.
> On amd64, you can use the unofficial dev-lang/mrustc (third-party
> reimplementation of rust written in C++) which allows you to skip all
> the way to rust 1.74, and from there it is "only" 13 or so versions to
> build.
Doesn't sound much like a solution.
> Or, you may use rust-bin. Alternatively, you may use:
> ```
> emerge --getbinpkg dev-lang/rust
> ```
I think I'll be going for rust-bin. This is quite new in Gentoo (in the
last few years, at any rate), but I couldn't find the news item about it
I vaguely remember reading.
Hopefully there's nothing tricky about moving from package foo to
foo-bin.
And then I can, hopefully, finish the update of the python stuff. Though
I would classify it as a design bug that all python programs need to be
rebuilt just because there's a minor version update in python itself. We
don't need to do this when a new version of GCC comes out.
> --
> Eli Schwartz
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile rust update is wedged.
2025-05-02 19:07 ` [gentoo-user] Fragile rust update is wedged Alan Mackenzie
@ 2025-05-02 20:07 ` Eli Schwartz
2025-05-02 21:15 ` [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged] Alan Mackenzie
2025-05-03 4:07 ` [gentoo-user] Fragile rust update is wedged Nate Eldredge
1 sibling, 1 reply; 32+ messages in thread
From: Eli Schwartz @ 2025-05-02 20:07 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 5234 bytes --]
On 5/2/25 3:07 PM, Alan Mackenzie wrote:
> Hello, Eli.
>
> On Fri, May 02, 2025 at 13:47:02 -0400, Eli Schwartz wrote:
>> On 5/2/25 1:07 PM, Alan Mackenzie wrote:
>>> Hello, Gentoo.
>
>>> I've just been trying the update for python 3.13. It went well on my
>>> new machine (well, after unmerging app-portage/unsymlink-lib, which was
>>> debris from some 2019 update).
>
>>> On my old machine, however, there was a seg fault while merging rust.
>>> This is a known problem in certain first generation Ryzen processors.
>
>>> However, this left the build wedged: emerge says that there's a circular
>>> dependency from rust to itself. More precisely, the error message looks
>>> like:
>
>
>> This is clearly not a python update, then.
>
> Well, it was. ;-)
Your saying that it was, doesn't make it the case. So you can repeat a
false claim if you want -- or explain why you think it is true.
>>> This would appear to be a bug in the rust ebuild - it has set itself as a
>>> builtime dependency before it had been built - or something like that.
>
>>> How do I best recover from this?
>
>
>> It is not a bug in the rust ebuild -- the rust ebuild has always,
>> always, always depended on itself. In the past, the rust ebuild silently
>> downloaded a temporary copy of dev-lang/rust-bin to work around this.
>
> I disagree. By attempting this emerging of rust, and failing, some
> persistent information indicating this dependency has been created. This
> persistent information, wherever it is, should not have been created, or
> it should have been removed on the emerge failure.
Since you do not know what this "persistent information" is, I assert in
response that it doesn't exist, therefore it hasn't been created.
If you are nonetheless certain that it exists, you are welcome to
explain what "it" is and where I can find it.
>> This was changed in November 2024.
>
> Hmmm... OK.
>
>> The rust compiler is written in the rust programming language, using
>> bleeding-edge features of the most recent version of rust. They are
>> aware that this is a bootstrap problem and don't consider it a problem,
>> because rust is officially installed by downloading prebuilt binaries
>> into $HOME.
>
> This sounds bad, but how is it different from C and C++ in GCC?
Because:
- GCC 15 can be compiled with GCC 5.4
- GCC 11 - 14 can be compiled with GCC 4.8.3
- GCC 4.8 - 10 can be compiled with a C++98 compiler
- GCC 4.7 can be compiled with a C compiler
The bootstrappable.org project uses TinyCC to build GCC 2.95.0, which
then builds GCC 4.7.4, which gives you a very nearly C++11 compiler.
It takes you 4 hops from TinyCC to GCC 15, which is a quarter of a
decade of technology.
For rust, the best bootstrap we have is unofficial -- mrustc -- and
relies on first bootstrapping GCC with 4 hops, then compiling 13
versions of Rust released between December 2023 and today. And that's
our hack to avoid building 80 versions released over the course of 10
years (rust 1.0 was released on May 15, 2015).
>> Compiling rust officially requires building the pre 1.0 version of rust,
>> itself written in ocaml, and then building *every* version of rust since
>> then, one by one, in turn, without skipping a single one. That is over
>> 80 different versions of rust, you need to compile all of them in order
>> to get to the current one.
>
> No thanks! There's only so much time left before the Sun becomes a red
> giant. But this attitude must limit the portability of rust to different
> processors, such as are found in embedded systems.
>
>> On amd64, you can use the unofficial dev-lang/mrustc (third-party
>> reimplementation of rust written in C++) which allows you to skip all
>> the way to rust 1.74, and from there it is "only" 13 or so versions to
>> build.
>
> Doesn't sound much like a solution.
You're entirely correct. The upstream rust developers imposed this
constraint.
>> Or, you may use rust-bin. Alternatively, you may use:
>
>> ```
>> emerge --getbinpkg dev-lang/rust
>> ```
>
> I think I'll be going for rust-bin. This is quite new in Gentoo (in the
> last few years, at any rate), but I couldn't find the news item about it
> I vaguely remember reading.
>
> Hopefully there's nothing tricky about moving from package foo to
> foo-bin.
>
> And then I can, hopefully, finish the update of the python stuff. Though
> I would classify it as a design bug that all python programs need to be
> rebuilt just because there's a minor version update in python itself. We
> don't need to do this when a new version of GCC comes out.
It's not a minor version update in python itself. Python doesn't really
use semver.
GCC, and in general, C/C++, tend to take this sort of compatibility a
lot more serious than other languages. e.g. rust and golang simply
statically compile, and that's why @rust-rebuild and @golang-rebuild
exist. Ruby has to be rebuilt on version updates just like python. Zig
software only ever supports a single version of the compiler, and has to
be rewritten in tandem with the compiler upgrade.
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-02 20:07 ` Eli Schwartz
@ 2025-05-02 21:15 ` Alan Mackenzie
2025-05-02 21:35 ` Wol
` (3 more replies)
0 siblings, 4 replies; 32+ messages in thread
From: Alan Mackenzie @ 2025-05-02 21:15 UTC (permalink / raw
To: gentoo-user
Hello, Eli.
On Fri, May 02, 2025 at 16:07:17 -0400, Eli Schwartz wrote:
> On 5/2/25 3:07 PM, Alan Mackenzie wrote:
> > On Fri, May 02, 2025 at 13:47:02 -0400, Eli Schwartz wrote:
> >> On 5/2/25 1:07 PM, Alan Mackenzie wrote:
> >>> I've just been trying the update for python 3.13. It went well on my
> >>> new machine (well, after unmerging app-portage/unsymlink-lib, which was
> >>> debris from some 2019 update).
> >>> On my old machine, however, there was a seg fault while merging rust.
> >>> This is a known problem in certain first generation Ryzen processors.
> >>> However, this left the build wedged: emerge says that there's a circular
> >>> dependency from rust to itself. More precisely, the error message looks
> >>> like:
> >> This is clearly not a python update, then.
> > Well, it was. ;-)
> Your saying that it was, doesn't make it the case. So you can repeat a
> false claim if you want -- or explain why you think it is true.
It was an update. It was for the purpose of replacing python 3.12 with
python 3.13. Thus it was a python update.
> >>> This would appear to be a bug in the rust ebuild - it has set itself as a
> >>> builtime dependency before it had been built - or something like that.
> >>> How do I best recover from this?
> >> It is not a bug in the rust ebuild -- the rust ebuild has always,
> >> always, always depended on itself. In the past, the rust ebuild silently
> >> downloaded a temporary copy of dev-lang/rust-bin to work around this.
> > I disagree. By attempting this emerging of rust, and failing, some
> > persistent information indicating this dependency has been created. This
> > persistent information, wherever it is, should not have been created, or
> > it should have been removed on the emerge failure.
> Since you do not know what this "persistent information" is, I assert in
> response that it doesn't exist, therefore it hasn't been created.
Well, thanks for being so generous and understanding.
At the start of this python update, I was able to start emerge, which
carried on until the seg fault part way through emerging rust.
On attempting to restart the python update, portage reported a "circular
dependency" in rust and failed to build any packages.
Some persistent information thus clearly differed between these two
attempts. I don't know what was changed, and I shouldn't have to find
out, being a user of emerge, not a maintainer.
> If you are nonetheless certain that it exists, you are welcome to
> explain what "it" is and where I can find it.
See above.
> >> This was changed in November 2024.
> > Hmmm... OK.
> >> The rust compiler is written in the rust programming language, using
> >> bleeding-edge features of the most recent version of rust. They are
> >> aware that this is a bootstrap problem and don't consider it a problem,
> >> because rust is officially installed by downloading prebuilt binaries
> >> into $HOME.
> > This sounds bad, but how is it different from C and C++ in GCC?
> Because:
> - GCC 15 can be compiled with GCC 5.4
> - GCC 11 - 14 can be compiled with GCC 4.8.3
> - GCC 4.8 - 10 can be compiled with a C++98 compiler
> - GCC 4.7 can be compiled with a C compiler
> The bootstrappable.org project uses TinyCC to build GCC 2.95.0, which
> then builds GCC 4.7.4, which gives you a very nearly C++11 compiler.
> It takes you 4 hops from TinyCC to GCC 15, which is a quarter of a
> decade of technology.
?Quarter of a century, perhaps?
OK, thanks. That was more or less what I suspected. GCC was at the
heart of the GNU project right from the beginning, and having people able
to build it easily was always important. I'm glad that's still the case.
> For rust, the best bootstrap we have is unofficial -- mrustc -- and
> relies on first bootstrapping GCC with 4 hops, then compiling 13
> versions of Rust released between December 2023 and today. And that's
> our hack to avoid building 80 versions released over the course of 10
> years (rust 1.0 was released on May 15, 2015).
Somehow that feels like it's pushing the definition of free software in a
direction it was never intended to go.
> >> Compiling rust officially requires building the pre 1.0 version of rust,
> >> itself written in ocaml, and then building *every* version of rust since
> >> then, one by one, in turn, without skipping a single one. That is over
> >> 80 different versions of rust, you need to compile all of them in order
> >> to get to the current one.
> > No thanks! There's only so much time left before the Sun becomes a red
> > giant. But this attitude must limit the portability of rust to different
> > processors, such as are found in embedded systems.
> >> On amd64, you can use the unofficial dev-lang/mrustc (third-party
> >> reimplementation of rust written in C++) which allows you to skip all
> >> the way to rust 1.74, and from there it is "only" 13 or so versions to
> >> build.
> > Doesn't sound much like a solution.
> You're entirely correct. The upstream rust developers imposed this
> constraint.
If that's the way they see things, it would seem that having a project
dependent on rust should figure high on that project's risk list.
> >> Or, you may use rust-bin. Alternatively, you may use:
> >> ```
> >> emerge --getbinpkg dev-lang/rust
> >> ```
> > I think I'll be going for rust-bin. This is quite new in Gentoo (in the
> > last few years, at any rate), but I couldn't find the news item about it
> > I vaguely remember reading.
> > Hopefully there's nothing tricky about moving from package foo to
> > foo-bin.
> > And then I can, hopefully, finish the update of the python stuff. Though
> > I would classify it as a design bug that all python programs need to be
> > rebuilt just because there's a minor version update in python itself. We
> > don't need to do this when a new version of GCC comes out.
> It's not a minor version update in python itself. Python doesn't really
> use semver.
Use what?
> GCC, and in general, C/C++, tend to take this sort of compatibility a
> lot more serious than other languages. e.g. rust and golang simply
> statically compile, and that's why @rust-rebuild and @golang-rebuild
> exist. Ruby has to be rebuilt on version updates just like python. Zig
> software only ever supports a single version of the compiler, and has to
> be rewritten in tandem with the compiler upgrade.
Thank goodness for C!
Anyhow, my old machine is now in an unusable state. When I repeat the
emerge incantation from the news item, emerge fails with obscure messages
about conflicting package versions. These messages take several hours to
parse and understand, being basically dumps of the internal state of
emerge.
One way or another, I'll get that machine back in working order. But I
can't help thinking it shouldn't be this difficult, even in Gentoo.
I think my first summary of my problem was fair: The python update scheme
is fragile. In particular if the emerge is interrupted for any reason,
it cannot be restarted, and cannot be reverted to a workable state,
without a great deal of time and expert knowledge.
> --
> Eli Schwartz
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-02 21:15 ` [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged] Alan Mackenzie
@ 2025-05-02 21:35 ` Wol
2025-05-02 21:44 ` Jay Faulkner
` (2 subsequent siblings)
3 siblings, 0 replies; 32+ messages in thread
From: Wol @ 2025-05-02 21:35 UTC (permalink / raw
To: gentoo-user
On 02/05/2025 22:15, Alan Mackenzie wrote:
> I think my first summary of my problem was fair: The python update scheme
> is fragile. In particular if the emerge is interrupted for any reason,
> it cannot be restarted, and cannot be reverted to a workable state,
> without a great deal of time and expert knowledge.
Just don't blame that on gentoo. Python is notorious for being a
"dangerous" language. Look at the mess with the Python 2 -> 3 upgrade.
You said a project using Rust should assume that is a serious risk
factor. I suspect any project using Python should assume that is an even
bigger risk factor ... the fact that emerge is written in Python should
be seen as very risky!
Cheers,
Wol
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-02 21:15 ` [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged] Alan Mackenzie
2025-05-02 21:35 ` Wol
@ 2025-05-02 21:44 ` Jay Faulkner
2025-05-02 22:17 ` Alan Mackenzie
2025-05-02 21:56 ` Eli Schwartz
2025-05-03 3:14 ` [gentoo-user] " Grant Edwards
3 siblings, 1 reply; 32+ messages in thread
From: Jay Faulkner @ 2025-05-02 21:44 UTC (permalink / raw
To: gentoo-user
On 5/2/25 2:15 PM, Alan Mackenzie wrote:
> If that's the way they see things, it would seem that having a project
> dependent on rust should figure high on that project's risk list.
This is ... a non-actionable take, regardless of if I agree with it or not.
Do you expect Gentoo to replace Firefox? pycryptography? a heavily used
SVG library? kernel drivers for interesting (really, mac) hardware?
There's only so much that the downstream distribution has control over,
and I appreciate that Gentoo, generally, has accepted that the state of
the world is that rust can't easily be avoided.
There are a bunch of volunteers keeping the lights on, navigating some
of these pitfalls -- even though they themselves might actually agree
with you -- because they represent the reality of the OSS landscape.
...but complaining about it here is unlikely to actually change
anything, and only dishearten the folks who are trying to keep it all
working. It's nicer to focus our mental energy and time on changes that
are achievable as a project -- or specific, fixable technical issues,
like the wedged install this started with (and the reply with direct
information on how to fix it).
My $.02,
JayF
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-02 21:15 ` [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged] Alan Mackenzie
2025-05-02 21:35 ` Wol
2025-05-02 21:44 ` Jay Faulkner
@ 2025-05-02 21:56 ` Eli Schwartz
2025-05-04 16:41 ` Alan Mackenzie
2025-05-03 3:14 ` [gentoo-user] " Grant Edwards
3 siblings, 1 reply; 32+ messages in thread
From: Eli Schwartz @ 2025-05-02 21:56 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 4348 bytes --]
On 5/2/25 5:15 PM, Alan Mackenzie wrote:
>>>> This is clearly not a python update, then.
>
>>> Well, it was. ;-)
>
>> Your saying that it was, doesn't make it the case. So you can repeat a
>> false claim if you want -- or explain why you think it is true.
>
> It was an update. It was for the purpose of replacing python 3.12 with
> python 3.13. Thus it was a python update.
I am quite certain that at least once before in your life, while using
Gentoo, you have encountered a system update that had two different
updates for unrelated software, which were both ready at the same time.
https://en.wikipedia.org/wiki/Correlation_does_not_imply_causation
>> The bootstrappable.org project uses TinyCC to build GCC 2.95.0, which
>> then builds GCC 4.7.4, which gives you a very nearly C++11 compiler.
>
>> It takes you 4 hops from TinyCC to GCC 15, which is a quarter of a
>> decade of technology.
>
> ?Quarter of a century, perhaps?
Oops, typo. :)
> OK, thanks. That was more or less what I suspected. GCC was at the
> heart of the GNU project right from the beginning, and having people able
> to build it easily was always important. I'm glad that's still the case.
>
>> For rust, the best bootstrap we have is unofficial -- mrustc -- and
>> relies on first bootstrapping GCC with 4 hops, then compiling 13
>> versions of Rust released between December 2023 and today. And that's
>> our hack to avoid building 80 versions released over the course of 10
>> years (rust 1.0 was released on May 15, 2015).
>
> Somehow that feels like it's pushing the definition of free software in a
> direction it was never intended to go.
Well, the rust developers do say that rust itself has "no warranty of
any kind, express or implied, including but not limited to the warranty
of fitness for a particular purpose". :)
So perhaps they are leaning into that -- rust is provided without a
guarantee that it is fit for installing on your system.
>> It's not a minor version update in python itself. Python doesn't really
>> use semver.
>
> Use what?
Semantic Versioning (semver) is the rule that says "version 1.5 and
version 2.0 of software are a major version update. Version 1.5 and
version 1.6 is just a minor update, so not a lot changed probably, and
it should still be compatible".
>> GCC, and in general, C/C++, tend to take this sort of compatibility a
>> lot more serious than other languages. e.g. rust and golang simply
>> statically compile, and that's why @rust-rebuild and @golang-rebuild
>> exist. Ruby has to be rebuilt on version updates just like python. Zig
>> software only ever supports a single version of the compiler, and has to
>> be rewritten in tandem with the compiler upgrade.
>
> Thank goodness for C!
>
> Anyhow, my old machine is now in an unusable state. When I repeat the
> emerge incantation from the news item, emerge fails with obscure messages
> about conflicting package versions. These messages take several hours to
> parse and understand, being basically dumps of the internal state of
> emerge.
>
> One way or another, I'll get that machine back in working order. But I
> can't help thinking it shouldn't be this difficult, even in Gentoo.
>
> I think my first summary of my problem was fair: The python update scheme
> is fragile. In particular if the emerge is interrupted for any reason,
> it cannot be restarted, and cannot be reverted to a workable state,
> without a great deal of time and expert knowledge.
Maybe it would help to know the exact command you used, and the full
output? If it's quite long, include it as an email attachment or use a
pastebin.
I hope you did not use
```
emerge --resume
```
at least. Because that option is far too broken to ever be used, in my
experience, besides for having no useful purpose.
Also note:
"emerge fails with obscure messages about conflicting package versions"
The news item did suggest a "safe" upgrade approach that takes longer
but is, well, safer.
It's also possible to greatly simplify large upgrades using emerge
--getbinpkg, or, it would if not for the fact that the Gentoo Binhost
has been working for two days now to finish building the binaries so it
can publish them. :(
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-02 21:44 ` Jay Faulkner
@ 2025-05-02 22:17 ` Alan Mackenzie
2025-05-02 22:21 ` Jay Faulkner
0 siblings, 1 reply; 32+ messages in thread
From: Alan Mackenzie @ 2025-05-02 22:17 UTC (permalink / raw
To: gentoo-user
Hello, Jay.
On Fri, May 02, 2025 at 14:44:06 -0700, Jay Faulkner wrote:
> On 5/2/25 2:15 PM, Alan Mackenzie wrote:
> > If that's the way they see things, it would seem that having a project
> > dependent on rust should figure high on that project's risk list.
> This is ... a non-actionable take, regardless of if I agree with it or not.
OK.
> Do you expect Gentoo to replace Firefox? pycryptography? a heavily used
> SVG library? kernel drivers for interesting (really, mac) hardware?
> There's only so much that the downstream distribution has control over,
> and I appreciate that Gentoo, generally, has accepted that the state of
> the world is that rust can't easily be avoided.
No, I don't expect any of the above.
I was thinking more as a putative project manager at the start of, say, a
project to design and produce a device with embedded software. The
question would arise as to what language to program it in. Rust would
likely be a contender. But if it were up to me, I'd veto it. The
language isn't stable, doesn't have a standards body (such as ISO)
defining it, there is only one compiler, there aren't that many
competent practitioners, and so on. Add to that the difficulty of
recreating an up to date compiler if the current infrastructure
collapsed for any reason, then I think it fair to say that current users
of rust are courageous.
None of this has anything to do with Gentoo, really, it's just a
tangent.
> There are a bunch of volunteers keeping the lights on, navigating some
> of these pitfalls -- even though they themselves might actually agree
> with you -- because they represent the reality of the OSS landscape.
> ...but complaining about it here is unlikely to actually change
> anything, and only dishearten the folks who are trying to keep it all
> working. It's nicer to focus our mental energy and time on changes that
> are achievable as a project -- or specific, fixable technical issues,
> like the wedged install this started with (and the reply with direct
> information on how to fix it).
I wasn't wanting to dishearten anybody. Apologies for doing so
unintentionally.
> My $.02,
> JayF
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-02 22:17 ` Alan Mackenzie
@ 2025-05-02 22:21 ` Jay Faulkner
0 siblings, 0 replies; 32+ messages in thread
From: Jay Faulkner @ 2025-05-02 22:21 UTC (permalink / raw
To: gentoo-user
On 5/2/25 3:17 PM, Alan Mackenzie wrote:
> None of this has anything to do with Gentoo, really, it's just a
> tangent.
:) Yeah, fair enough for sure! I read that "a project" in the original
email as a backhanded reference to Gentoo itself. I'm friends with a
handful of folks who have been (unfairly, imo) roasted for introducing
python libraries so I am a bit trigger happy on trying to jump in front
of potential flames (so to speak).
-JayF
^ permalink raw reply [flat|nested] 32+ messages in thread
* [gentoo-user] Re: Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-02 21:15 ` [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged] Alan Mackenzie
` (2 preceding siblings ...)
2025-05-02 21:56 ` Eli Schwartz
@ 2025-05-03 3:14 ` Grant Edwards
3 siblings, 0 replies; 32+ messages in thread
From: Grant Edwards @ 2025-05-03 3:14 UTC (permalink / raw
To: gentoo-user
On 2025-05-02, Alan Mackenzie <acm@muc.de> wrote:
> It was an update. It was for the purpose of replacing python 3.12 with
> python 3.13. Thus it was a python update.
Wow. As Kelly Bundy used to say: "The mind wobbles!"
--
Grant
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile rust update is wedged.
2025-05-02 19:07 ` [gentoo-user] Fragile rust update is wedged Alan Mackenzie
2025-05-02 20:07 ` Eli Schwartz
@ 2025-05-03 4:07 ` Nate Eldredge
1 sibling, 0 replies; 32+ messages in thread
From: Nate Eldredge @ 2025-05-03 4:07 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1466 bytes --]
> On May 2, 2025, at 13:07, Alan Mackenzie <acm@muc.de> wrote:
>
> Hello, Eli.
>
> On Fri, May 02, 2025 at 13:47:02 -0400, Eli Schwartz wrote:
>
>> Compiling rust officially requires building the pre 1.0 version of rust,
>> itself written in ocaml, and then building *every* version of rust since
>> then, one by one, in turn, without skipping a single one. That is over
>> 80 different versions of rust, you need to compile all of them in order
>> to get to the current one.
>
> No thanks! There's only so much time left before the Sun becomes a red
> giant. But this attitude must limit the portability of rust to different
> processors, such as are found in embedded systems.
>
For embedded systems, I assume you'd normally be cross-compiling. So all you'd need to get started is a current rust binary package for your build system (let's say x86-64-linux). With that, you can build a cross-compiler x86-64-linux->toaster-none, and build your toaster control software with it. You wouldn't normally want to be running the rust compiler on your toaster at all, but if it somehow has enough memory and storage for that, then you should be able to use your cross-compiler to build a native toaster->toaster rust compiler, and copy it to the toaster. And if you then have the patience to rebuild rust natively on the toaster, at this point you can.
But by no means should you need to build 80 versions of rust on the toaster.
[-- Attachment #2: Type: text/html, Size: 6695 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-02 21:56 ` Eli Schwartz
@ 2025-05-04 16:41 ` Alan Mackenzie
2025-05-04 17:01 ` Eli Schwartz
0 siblings, 1 reply; 32+ messages in thread
From: Alan Mackenzie @ 2025-05-04 16:41 UTC (permalink / raw
To: gentoo-user
Hello, Eli.
[ Added in some hours after writing the main bit below ]
I've managed to solve my problem. In the error output from emerge there
was a message about having to update some configuration files. Normally
this message just means "we advise you to get around to this sometime"
but this time it meant "your emerge will be broken until you do this".
So a quick dispatch-conf later, which inserted an atom spec into some
config file (I've forgotten which), and emerge was able to run. Just
under two hours later it was complete.
So thanks for all the help!
On Fri, May 02, 2025 at 17:56:46 -0400, Eli Schwartz wrote:
> On 5/2/25 5:15 PM, Alan Mackenzie wrote:
[ .... ]
> > Anyhow, my old machine is now in an unusable state. When I repeat the
> > emerge incantation from the news item, emerge fails with obscure messages
> > about conflicting package versions. These messages take several hours to
> > parse and understand, being basically dumps of the internal state of
> > emerge.
> > One way or another, I'll get that machine back in working order. But I
> > can't help thinking it shouldn't be this difficult, even in Gentoo.
> > I think my first summary of my problem was fair: The python update scheme
> > is fragile. In particular if the emerge is interrupted for any reason,
> > it cannot be restarted, and cannot be reverted to a workable state,
> > without a great deal of time and expert knowledge.
> Maybe it would help to know the exact command you used, and the full
> output? If it's quite long, include it as an email attachment or use a
> pastebin.
The command I used was:
# time emerge -1avUD @world
After a lot of error messages (see below), I got the following obscure
message:
!!! All ebuilds that could satisfy ">=dev-python/installer-0.5.0[python_targets_pypy3_11(-)?,python_targets_python3_13t(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?,python_targets_python3_13(-)?]" have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-python/installer-0.7.0::gentoo (masked by: )
(dependency required by "dev-python/gpep517-17::gentoo" [installed])
(dependency required by "dev-python/setuptools-78.1.0::gentoo" [installed])
(dependency required by "dev-python/setuptools-scm-8.2.1::gentoo[-test]" [installed])
For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.
On the line beginning "!!! All ebuilds ..." I do not understand what has
been written. What do the square brackets mean? What does the several
times repeated incantation "(-)?" mean?
I can't parse the "(masked by: )". Is it saying that installer-0.7.0 is
masked by "(dependency required by ...)". What would that even mean?
There are too few finite verbs in this message.
Where is this output documented? It is not documented in the MASKED
PACKAGES section of the emerge man page, or in the Gentoo Handbook, at
least as far as I could find.
It would appear that dev-python/installer-0.7.0 should satisfy the
dependencies. But it doesn't. It is currently installed.
> I hope you did not use
> ```
> emerge --resume
> ```
> at least. Because that option is far too broken to ever be used, in my
> experience, besides for having no useful purpose.
Yes I did indeed use emerge --resume. It usually works for me when an
emerge operation is interrupted by a sporadic seg fault.
> Also note:
> "emerge fails with obscure messages about conflicting package versions"
> The news item did suggest a "safe" upgrade approach that takes longer
> but is, well, safer.
Safer than what? There was no guidance in the news item as to what the
dangers might be, or when the safer upgrade option is recommended.
> It's also possible to greatly simplify large upgrades using emerge
> --getbinpkg, or, it would if not for the fact that the Gentoo Binhost
> has been working for two days now to finish building the binaries so it
> can publish them. :(
Anyhow, here's the full output of the command
# time emerge -1avUD @world > ~acm/rust-bug.20250504b.txt 2>&1:
#########################################################################
[ Removed, due to me having solved the problem. ]
#########################################################################
> --
> Eli Schwartz
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged].
2025-05-04 16:41 ` Alan Mackenzie
@ 2025-05-04 17:01 ` Eli Schwartz
0 siblings, 0 replies; 32+ messages in thread
From: Eli Schwartz @ 2025-05-04 17:01 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 4448 bytes --]
On 5/4/25 12:41 PM, Alan Mackenzie wrote:
> Hello, Eli.
>
> [ Added in some hours after writing the main bit below ]
>
> I've managed to solve my problem. In the error output from emerge there
> was a message about having to update some configuration files. Normally
> this message just means "we advise you to get around to this sometime"
> but this time it meant "your emerge will be broken until you do this".
>
> So a quick dispatch-conf later, which inserted an atom spec into some
> config file (I've forgotten which), and emerge was able to run. Just
> under two hours later it was complete.
>
> So thanks for all the help!
:) that does happen, yes.
>> Maybe it would help to know the exact command you used, and the full
>> output? If it's quite long, include it as an email attachment or use a
>> pastebin.
>
> The command I used was:
>
> # time emerge -1avUD @world
>
> After a lot of error messages (see below), I got the following obscure
> message:
>
> !!! All ebuilds that could satisfy ">=dev-python/installer-0.5.0[python_targets_pypy3_11(-)?,python_targets_python3_13t(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?,python_targets_python3_13(-)?]" have been masked.
> !!! One of the following masked packages is required to complete your request:
> - dev-python/installer-0.7.0::gentoo (masked by: )
>
> (dependency required by "dev-python/gpep517-17::gentoo" [installed])
> (dependency required by "dev-python/setuptools-78.1.0::gentoo" [installed])
> (dependency required by "dev-python/setuptools-scm-8.2.1::gentoo[-test]" [installed])
> For more information, see the MASKED PACKAGES section in the emerge
> man page or refer to the Gentoo Handbook.
>
> On the line beginning "!!! All ebuilds ..." I do not understand what has
> been written. What do the square brackets mean? What does the several
> times repeated incantation "(-)?" mean?
The square brackets mean that it needs the package to be installed with
specific USE flags. The (-) means that if the package does NOT support
that USE flag at all, whether set or unset, then it is equal to having
the USE flag with the "unset" value.
This is the same format used to describe a dependency inside a *.ebuild
file.
See also "man 5 ebuild" under:
- Atom USE
- Atom USE defaults
> I can't parse the "(masked by: )". Is it saying that installer-0.7.0 is
> masked by "(dependency required by ...)". What would that even mean?
> There are too few finite verbs in this message.
I believe this means, masked by the package as required not existing at
all (due to USE flags).
> Where is this output documented? It is not documented in the MASKED
> PACKAGES section of the emerge man page, or in the Gentoo Handbook, at
> least as far as I could find.
Dunno about that, sorry. :)
>> Also note:
>> "emerge fails with obscure messages about conflicting package versions"
>
>> The news item did suggest a "safe" upgrade approach that takes longer
>> but is, well, safer.
>
> Safer than what? There was no guidance in the news item as to what the
> dangers might be, or when the safer upgrade option is recommended.
The upgrade added a USE flag to a large number of packages, and removed
a different USE flag.
If your system is in a state where some packages depend on the removed
USE flag, you can hit issues. Simply adding a USE flag is "safer".
If some packages depend on the removed USE flag, but will be rebuilt by
portage to stop depending on that USE flag, then it's safer to add a USE
flag to all packages, get your system into a consistent state, then
remove the other USE flag from all those packages, since now you have
the new version of all those packages safely installed and the unneeded
bits aren't used by anything anymore.
From the news:
"""
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).
"""
That also includes programs which you aren't running in another window,
but rather, programs which are used to build other packages.
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-02 17:07 [gentoo-user] Fragile python update is wedged Alan Mackenzie
2025-05-02 17:22 ` Pramod V U
2025-05-02 17:47 ` [gentoo-user] Fragile rust update is wedged. (Was: Fragile python update is wedged.) Eli Schwartz
@ 2025-05-11 11:54 ` Wol
2025-05-11 12:42 ` Dale
` (2 more replies)
2 siblings, 3 replies; 32+ messages in thread
From: Wol @ 2025-05-11 11:54 UTC (permalink / raw
To: gentoo-user
On 02/05/2025 18:07, Alan Mackenzie wrote:
> Hello, Gentoo.
>
> I've just been trying the update for python 3.13. It went well on my
> new machine (well, after unmerging app-portage/unsymlink-lib, which was
> debris from some 2019 update).
I'm now trying to update my system. And it's not even fragile or wedged,
it just won't.
I followed the instructions at the end - depclean, -1uVD, and it just
fails completely with "requires just one of 3_11 or 3_12". Including
important stuff like most of kde, systemd-dbus, and so on.
I thought I'd try increasing backtrack like I usually do - to 100 - but
that made no difference.
I missed out the stuff at the start of the news item, sorry, but see
below ...
Giveb that I don't "do" Python, I've got nothing in make.conf that
mentions python. I guess I have nothing in package.use etc unless the
system set it for me ...
So I guess I need to do the "safer" upgrade, but it gives me two lines
that look like comments, and says "use these to blah blah", How do I use
them? Where do I put them? I don't "do" python - this is double dutch to me.
Cheers,
Wol
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 11:54 ` [gentoo-user] Fragile python " Wol
@ 2025-05-11 12:42 ` Dale
2025-05-11 13:26 ` Philip Webb
2025-05-11 12:43 ` Frank Schletz
2025-05-11 15:04 ` Eli Schwartz
2 siblings, 1 reply; 32+ messages in thread
From: Dale @ 2025-05-11 12:42 UTC (permalink / raw
To: gentoo-user
Wol wrote:
>
>
> On 02/05/2025 18:07, Alan Mackenzie wrote:
>> Hello, Gentoo.
>>
>> I've just been trying the update for python 3.13. It went well on my
>> new machine (well, after unmerging app-portage/unsymlink-lib, which was
>> debris from some 2019 update).
>
> I'm now trying to update my system. And it's not even fragile or
> wedged, it just won't.
>
> I followed the instructions at the end - depclean, -1uVD, and it just
> fails completely with "requires just one of 3_11 or 3_12". Including
> important stuff like most of kde, systemd-dbus, and so on.
>
> I thought I'd try increasing backtrack like I usually do - to 100 -
> but that made no difference.
>
> I missed out the stuff at the start of the news item, sorry, but see
> below ...
>
> Giveb that I don't "do" Python, I've got nothing in make.conf that
> mentions python. I guess I have nothing in package.use etc unless the
> system set it for me ...
>
> So I guess I need to do the "safer" upgrade, but it gives me two lines
> that look like comments, and says "use these to blah blah", How do I
> use them? Where do I put them? I don't "do" python - this is double
> dutch to me.
>
> Cheers,
> Wol
>
>
I'm going to do this in segments from the news item. I had to read it a
couple times to get the idea myself. Keep in mind, I ran into the same
thing as you and ended up stopping at step two. I have not done a
complete switch yet because several packages still want 3.12.
NEWS ITEM:
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
END NEWS ITEM
Put that in package.use, or some other file you may want to use. I ran
my normal emerge -auDN world. I have some defaults like --with-bdeps y
--backtrack=500 in make.conf. You may or may not want to use those as
well. If you get a clean update from that, nothing fails, then move to
the next step. You only change the second line from 12 to 13 next.
NEWS ITEM:
Then switch PYTHON_SINGLE_TARGET and run the second batch of upgrades:
*/* PYTHON_TARGETS: -* python3_12 python3_13
*/* PYTHON_SINGLE_TARGET: -* python3_13
END NEWS ITEM
If you get a clean update with that, then change to the next step. The
top line changes this time. Just remove the 3.12 bit. Keep in mind, I
haven't got that far yet. I need to try again tho. I forgot during the
update I did this morning.
NEWS ITEM:
Finally, switch to the final version and upgrade:
*/* PYTHON_TARGETS: -* python3_13
*/* PYTHON_SINGLE_TARGET: -* python3_13
END NEWS ITEM
If you lucky, that last part works and you get a clean update. If you
get a long list of packages that won't work, you either have to set it
back to step two and wait until the packages update or make exceptions
for each package in package.use and try to check for updates later so
you can remove all the python stuff in package.use. I've read that
unless you really know what you doing, setting python versions long term
in package.use isn't a good idea. If one forgets, which I do a LOT,
packages can start to fail and cause all sorts of issues that makes
emerge spit out encrypted error messages that most of us can't decode.
I might add, Eli said it is safe to stop at step two if the last step is
just to soon. I have some packages, Kicad and such, that you likely
don't and that is one set that is causing problems for me. Unless you
have a lot of packages that have to have 3.12, it should work. It just
results in compiling the same packages several times.
If nothing else, maybe the above will give you a idea on how you can
adjust the above to fit your needs. Basically, it's a three step
process. I hope you can make it to the end and get a clean update. Oh,
don't forget --depclean too.
Dale
:-) :-)
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 11:54 ` [gentoo-user] Fragile python " Wol
2025-05-11 12:42 ` Dale
@ 2025-05-11 12:43 ` Frank Schletz
2025-05-11 13:37 ` Wol
2025-05-11 15:04 ` Eli Schwartz
2 siblings, 1 reply; 32+ messages in thread
From: Frank Schletz @ 2025-05-11 12:43 UTC (permalink / raw
To: gentoo-user
Am Sun, 11 May 2025 12:54:48 +0100
schrieb Wol <antlists@youngman.org.uk>:
> On 02/05/2025 18:07, Alan Mackenzie wrote:
> > Hello, Gentoo.
> >
> > I've just been trying the update for python 3.13. It went well on my
> > new machine (well, after unmerging app-portage/unsymlink-lib, which was
> > debris from some 2019 update).
>
> I'm now trying to update my system. And it's not even fragile or wedged,
> it just won't.
>
> I followed the instructions at the end - depclean, -1uVD, and it just
> fails completely with "requires just one of 3_11 or 3_12". Including
> important stuff like most of kde, systemd-dbus, and so on.
>
> I thought I'd try increasing backtrack like I usually do - to 100 - but
> that made no difference.
>
> I missed out the stuff at the start of the news item, sorry, but see
> below ...
>
> Giveb that I don't "do" Python, I've got nothing in make.conf that
> mentions python. I guess I have nothing in package.use etc unless the
> system set it for me ...
>
> So I guess I need to do the "safer" upgrade, but it gives me two lines
> that look like comments, and says "use these to blah blah", How do I use
> them? Where do I put them? I don't "do" python - this is double dutch to me.
Hello.
The "Safer upgrade procedure" in
https://www.gentoo.org/support/news-items/2025-03-24-python3-13.html
works for me like a charm.
yes, looks funny for some people, if in
/etc/portage/package.use/python
there is something like
*/* PYTHON_TARGETS: -* python3_12 python3_13
*/* PYTHON_SINGLE_TARGET: -* python3_12
But that is right.
My old file consist of:
*/* PYTHON_TARGETS: -* python3_11 python3_12
*/* PYTHON_SINGLE_TARGET: -* python3_12
so I start as mentioned in the news with
emerge -1vUD @world
emerge -a --depclean (I always take care and in doubt don't delete)
Then change to
*/* PYTHON_TARGETS: -* python3_12 python3_13
*/* PYTHON_SINGLE_TARGET: -* python3_12
and repeat with emerge.
Finally change to
*/* PYTHON_TARGETS: -* python3_13
*/* PYTHON_SINGLE_TARGET: -* python3_13
and repeat.
It works for me and looks very straight forward.
I got a non-systemd system and not that much packages.
Hope you got a clean emerge @world at the beginning.
Frank
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 12:42 ` Dale
@ 2025-05-11 13:26 ` Philip Webb
2025-05-11 14:52 ` Dale
2025-05-11 15:14 ` Eli Schwartz
0 siblings, 2 replies; 32+ messages in thread
From: Philip Webb @ 2025-05-11 13:26 UTC (permalink / raw
To: gentoo-user
I noticed others reporting Python update problems & didn't follow it,
but in my regular Sat update today encountered a big mess.
'setuptools-scm' offered 13 screens of conflicts,
which were reduced to 10 by ' --backtrack=60 '.
I tried a 'quickpkg' + 'emerge -k', but was refused as the ebuild was missing.
Finally, I did a few 'emerge -C' brute-forces on some listed pkgs,
which allowed a straightforward 'emerge' of 18 Python pkgs.
The underlying problem seemed to be a jump to Python 3.13 .
That solution is risky, but it has always worked before + today.
I don't understand why Python can't do it automatically,
but am tired of complaining & remain a strong fan of Gentoo.
PS I've never done 'emerge World' without '-pv' since 2003 :
I always pick/choose which pkgs to update a few at a time.
--
========================,,============================================
SUPPORT ___________//___, Philip Webb
ELECTRIC /] [] [] [] [] []| Cities Centre, University of Toronto
TRANSIT `-O----------O---' purslowatcadotinterdotnet
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 12:43 ` Frank Schletz
@ 2025-05-11 13:37 ` Wol
2025-05-11 14:55 ` Dale
0 siblings, 1 reply; 32+ messages in thread
From: Wol @ 2025-05-11 13:37 UTC (permalink / raw
To: gentoo-user
On 11/05/2025 13:43, Frank Schletz wrote:
> It works for me and looks very straight forward.
> I got a non-systemd system and not that much packages.
>
> Hope you got a clean emerge @world at the beginning.
Yup I always make sure everything's depclean'd at the end.
It's now updating stage 1 fine (approx 250 packages), but my usual
backtrack=100 didn't work - I made it 1000 and it's fine.
Little tip - if you use backtrack I think it comes up with a little
status report - it said something like "backtrack 100/100". I'm guessing
what that means is backtrack was set to 100, and it used 100, which is
why it failed ... useful info if I'm right ... :-)
Cheers,
Wol
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 13:26 ` Philip Webb
@ 2025-05-11 14:52 ` Dale
2025-05-17 7:17 ` Dale
2025-05-11 15:14 ` Eli Schwartz
1 sibling, 1 reply; 32+ messages in thread
From: Dale @ 2025-05-11 14:52 UTC (permalink / raw
To: gentoo-user
Philip Webb wrote:
> I noticed others reporting Python update problems & didn't follow it,
> but in my regular Sat update today encountered a big mess.
> 'setuptools-scm' offered 13 screens of conflicts,
> which were reduced to 10 by ' --backtrack=60 '.
> I tried a 'quickpkg' + 'emerge -k', but was refused as the ebuild was missing.
> Finally, I did a few 'emerge -C' brute-forces on some listed pkgs,
> which allowed a straightforward 'emerge' of 18 Python pkgs.
> The underlying problem seemed to be a jump to Python 3.13 .
>
> That solution is risky, but it has always worked before + today.
> I don't understand why Python can't do it automatically,
> but am tired of complaining & remain a strong fan of Gentoo.
>
> PS I've never done 'emerge World' without '-pv' since 2003 :
> I always pick/choose which pkgs to update a few at a time.
>
I think a lot of it depends on what packages we have installed. For me,
it was Kicad and a couple others, plus all their friends. It became a
lengthy list tho. You may have a completely different set of packages
installed but with the same problem as me, doesn't support 3.13 yet.
I think Eli said that as long as a version of python is installed for
emerge, one can fix most problems if we remove something by mistake. We
just need to make sure emerge stays happy.
I started using Gentoo in about 2003 as well. Over the years, I've put
some options that are always wanted in make.conf and then I put others,
depending on what I'm doing, on the command line. I have backtrack set
to 500. It rarely goes higher than 4 or 5 tho. Still, it has it if it
needs it. I have build deps turned on as well. Over the years tho,
I've found settings and methods that result in a very stable system. I
always sync, do a emerge -auDN world and then look at any USE flag
changes, or any other changes, before letting it go. Sometimes a new
USE flag pops up that I know I need or don't need. I adjust and then
rerun emerge -auDN world. I've found that letting emerge figure it out
is usually the best and most stable. It may result in a little more
compiling but it's rare that anything crashes on my system. That's
important to me.
We all have our own ways tho. If it works, why do it differently???
Oh, tried to do the last step on my main rig, emerge spit out a nice
loud and hard to miss, NO!!!. There's still a lot of packages not ready
for python 3.13 yet. Maybe next week. If I don't forget. Again.
Dale
:-) :-)
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 13:37 ` Wol
@ 2025-05-11 14:55 ` Dale
0 siblings, 0 replies; 32+ messages in thread
From: Dale @ 2025-05-11 14:55 UTC (permalink / raw
To: gentoo-user
Wol wrote:
> On 11/05/2025 13:43, Frank Schletz wrote:
>> It works for me and looks very straight forward.
>> I got a non-systemd system and not that much packages.
>>
>> Hope you got a clean emerge @world at the beginning.
>
> Yup I always make sure everything's depclean'd at the end.
>
> It's now updating stage 1 fine (approx 250 packages), but my usual
> backtrack=100 didn't work - I made it 1000 and it's fine.
>
> Little tip - if you use backtrack I think it comes up with a little
> status report - it said something like "backtrack 100/100". I'm
> guessing what that means is backtrack was set to 100, and it used 100,
> which is why it failed ... useful info if I'm right ... :-)
>
> Cheers,
> Wol
>
>
That's what I think as well. If you set it to a number and it maxes out
and fails, try a higher number. If it fails and didn't reach the limit,
well, you got other problems. The thing to keep in mind, regardless of
setting, it only uses what it needs. Most of the time, mine shows a
status of 1 or 2 and sometimes 3. Rarely goes above that. I just set
mine to 500 because I got tired of it running out of room to think and
having to change the setting and start over again. LOL
Dale
:-) :-)
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 11:54 ` [gentoo-user] Fragile python " Wol
2025-05-11 12:42 ` Dale
2025-05-11 12:43 ` Frank Schletz
@ 2025-05-11 15:04 ` Eli Schwartz
2025-05-11 17:40 ` Wol
2 siblings, 1 reply; 32+ messages in thread
From: Eli Schwartz @ 2025-05-11 15:04 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 2168 bytes --]
On 5/11/25 7:54 AM, Wol wrote:
>
>
> On 02/05/2025 18:07, Alan Mackenzie wrote:
>> Hello, Gentoo.
>>
>> I've just been trying the update for python 3.13. It went well on my
>> new machine (well, after unmerging app-portage/unsymlink-lib, which was
>> debris from some 2019 update).
>
> I'm now trying to update my system. And it's not even fragile or wedged,
> it just won't.
>
> I followed the instructions at the end - depclean, -1uVD, and it just
> fails completely with "requires just one of 3_11 or 3_12". Including
> important stuff like most of kde, systemd-dbus, and so on.
>
> I thought I'd try increasing backtrack like I usually do - to 100 - but
> that made no difference.
You must have done something more than just emerge --sync followed by
emerge -uDU @world.
OR you must have had old package.use entries setting duplicate USE flags
already.
> I missed out the stuff at the start of the news item, sorry, but see
> below ...
>
> Giveb that I don't "do" Python, I've got nothing in make.conf that
> mentions python. I guess I have nothing in package.use etc unless the
> system set it for me ...
>
> So I guess I need to do the "safer" upgrade, but it gives me two lines
> that look like comments, and says "use these to blah blah", How do I use
> them? Where do I put them? I don't "do" python - this is double dutch to
> me.
I'm confused and baffled that, when a news item describes some blocks of
code as "the package.use samples provided below", you are totally lost
and declare that you don't "do" python as it's double dutch to you.
And why on earth would you assume they are comments?
You don't need to know python and aren't expected to either. The news
item describes the fact that:
- a group of packages using the python programming language, are
switching their versioned USE flags, here's the correct way to migrate
the USE
- it involves building many packages for the changed USE. Rebuilding
many packages at the same time can sometimes result in complex issues,
these are a USE_EXPAND and can be migrated in stages, which is safer.
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 13:26 ` Philip Webb
2025-05-11 14:52 ` Dale
@ 2025-05-11 15:14 ` Eli Schwartz
1 sibling, 0 replies; 32+ messages in thread
From: Eli Schwartz @ 2025-05-11 15:14 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 1463 bytes --]
On 5/11/25 9:26 AM, Philip Webb wrote:
> I noticed others reporting Python update problems & didn't follow it,
> but in my regular Sat update today encountered a big mess.
> 'setuptools-scm' offered 13 screens of conflicts,
> which were reduced to 10 by ' --backtrack=60 '.
> I tried a 'quickpkg' + 'emerge -k', but was refused as the ebuild was missing.
> Finally, I did a few 'emerge -C' brute-forces on some listed pkgs,
> which allowed a straightforward 'emerge' of 18 Python pkgs.
> The underlying problem seemed to be a jump to Python 3.13 .
I doubt the problem was that package specifically, as it supports all
python versions already. Probably, it was just set by the default
upgrade changes to 3.13, but some other package was stuck on 3.12. This
in turn prevented updating setuptools-scm at all, which meant other
packages which required setuptools-scm, couldn't be rebuilt for 3.13
The "safe" approach solves that, fwiw. (You may not be able to do the
second stage and remove 3.12, ddepending.)
Please consider emerge -c --with-bdeps=n before something as dangerous
as -C. If the former works, then you're guaranteed a correct system
dependency graph and will just have to freshly emerge build
dependencies, which is a valid and supported scenario, whereas emerge -C
is *not*.
As you say, "that solution is risky"... but -c --with-bdeps=n would mean
you aren't doing risky things at all...
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 15:04 ` Eli Schwartz
@ 2025-05-11 17:40 ` Wol
2025-05-11 18:06 ` Michael
2025-05-11 18:08 ` Eli Schwartz
0 siblings, 2 replies; 32+ messages in thread
From: Wol @ 2025-05-11 17:40 UTC (permalink / raw
To: gentoo-user
On 11/05/2025 16:04, Eli Schwartz wrote:
> On 5/11/25 7:54 AM, Wol wrote:
>>
>>
>> On 02/05/2025 18:07, Alan Mackenzie wrote:
>>> Hello, Gentoo.
>>>
>>> I've just been trying the update for python 3.13. It went well on my
>>> new machine (well, after unmerging app-portage/unsymlink-lib, which was
>>> debris from some 2019 update).
>>
>> I'm now trying to update my system. And it's not even fragile or wedged,
>> it just won't.
>>
>> I followed the instructions at the end - depclean, -1uVD, and it just
>> fails completely with "requires just one of 3_11 or 3_12". Including
>> important stuff like most of kde, systemd-dbus, and so on.
>>
>> I thought I'd try increasing backtrack like I usually do - to 100 - but
>> that made no difference.
>
>
> You must have done something more than just emerge --sync followed by
> emerge -uDU @world.
>
What else would I have done? I ran the sync, read the news, and followed
the instructions at the bottom. The emerge failed with loads of errors.
The only thing else I did was delete avidemux (which I think was broken
anyway), because that was an obvious problem that wouldn't cause
problems if I deleted it.
> OR you must have had old package.use entries setting duplicate USE flags
> already.
>
>
>> I missed out the stuff at the start of the news item, sorry, but see
>> below ...
>>
>> Giveb that I don't "do" Python, I've got nothing in make.conf that
>> mentions python. I guess I have nothing in package.use etc unless the
>> system set it for me ...
>>
>> So I guess I need to do the "safer" upgrade, but it gives me two lines
>> that look like comments, and says "use these to blah blah", How do I use
>> them? Where do I put them? I don't "do" python - this is double dutch to
>> me.
>
>
> I'm confused and baffled that, when a news item describes some blocks of
> code as "the package.use samples provided below", you are totally lost
> and declare that you don't "do" python as it's double dutch to you.
>
Found it. I will investigate, but to the best of my memory I have no
"targets" settings whatsoever. I will take a look, but at the moment I'm
running the emerge. So from what the news item says, it looks like
everything should have "just worked" - except it didn't.
And I can see what happened now. It doesn't help that I didn't have my
glasses, but the news item says:
"At this point, you have a few configuration options to choose from:"
I jumped straight to option 4, so I didn't read option 1 - why should I?
Especially if I'm having difficulty reading.
> And why on earth would you assume they are comments?
Because the news item, as written, led me up the garden path!
"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"
It says "run the upgrade commands - COLON". As I understand English,
that says that what follows is a list of COMMANDS. And "*/*" looks like
a weird comment marker. Why would I assume it's a declaration snippet?
>
> You don't need to know python and aren't expected to either. The news
> item describes the fact that:
That's clear now. But the combination of not reading a paragraph that
clearly appeared to be irrelevant, and the use of non-idiomatic grammar
that read completely differently than intended, meant I completely
failed to understand what I was supposed to do.
Oh - and I've just checked - there is no mention of Python in my
package.use (apart from what I've just created to do the upgrade). So I
don't appear to have any python targets anywhere .
Cheers,
Wol
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 17:40 ` Wol
@ 2025-05-11 18:06 ` Michael
2025-05-11 18:08 ` Eli Schwartz
1 sibling, 0 replies; 32+ messages in thread
From: Michael @ 2025-05-11 18:06 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 2007 bytes --]
On Sunday, 11 May 2025 18:40:44 British Summer Time Wol wrote:
> Found it. I will investigate, but to the best of my memory I have no
> "targets" settings whatsoever. I will take a look, but at the moment I'm
> running the emerge. So from what the news item says, it looks like
> everything should have "just worked" - except it didn't.
This won't help you, but I have updated 4 systems so far and a 4th somewhat
abandoned waiting for my time, with no problems so far whatsoever. I do
understand and it was explained, it is a matter of which packages may be
installed in a system if you may face a failed update.
> And I can see what happened now. It doesn't help that I didn't have my
> glasses, but the news item says:
>
> "At this point, you have a few configuration options to choose from:"
>
> I jumped straight to option 4, so I didn't read option 1 - why should I?
> Especially if I'm having difficulty reading.
Perhaps because a numbered list is meant to be followed in the numbered order?
I started with option 1 and had no problems, but others sooner or later run
aground and had to consider subsequent options depending on their individual
situation.
> 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"
>
> It says "run the upgrade commands - COLON". As I understand English,
> that says that what follows is a list of COMMANDS. And "*/*" looks like
> a weird comment marker. Why would I assume it's a declaration snippet?
Because an asterisk "*" is a special character treated as a wildcard when
parsed by a Unix shell. It will match any number of unknown characters.
The "*/*" statement at the start of a file under /etc/portage/ can be
interpreted as a filter matching:
any category/any package
with the next "-*" statement interpreted as:
disable any python targets and then finally set only the python target(s) that
follow.
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 17:40 ` Wol
2025-05-11 18:06 ` Michael
@ 2025-05-11 18:08 ` Eli Schwartz
2025-05-11 19:10 ` Wol
1 sibling, 1 reply; 32+ messages in thread
From: Eli Schwartz @ 2025-05-11 18:08 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 4350 bytes --]
On 5/11/25 1:40 PM, Wol wrote:
> On 11/05/2025 16:04, Eli Schwartz wrote:
>>> I followed the instructions at the end - depclean, -1uVD, and it just
>>> fails completely with "requires just one of 3_11 or 3_12". Including
>>> important stuff like most of kde, systemd-dbus, and so on.
>>>
>>> I thought I'd try increasing backtrack like I usually do - to 100 - but
>>> that made no difference.
>>
>>
>> You must have done something more than just emerge --sync followed by
>> emerge -uDU @world.
>>
> What else would I have done? I ran the sync, read the news, and followed
> the instructions at the bottom. The emerge failed with loads of errors.
>
> The only thing else I did was delete avidemux (which I think was broken
> anyway), because that was an obvious problem that wouldn't cause
> problems if I deleted it.
You didn't post full output so it's difficult to say for sure. But,
"requires just one of" sounds like this:
$ PYTHON_SINGLE_TARGET='python3_13 python3_12' emerge -1a glib-utils
These are the packages that would be merged, in order:
Calculating dependencies -
!!! Problem resolving dependencies for dev-util/glib-utils
... done!
Dependency resolution took 1.01 s (backtrack: 0/20).
!!! The ebuild selected to satisfy "glib-utils" has unmet requirements.
- dev-util/glib-utils-2.82.5::gentoo USE="" ABI_X86="(64)"
PYTHON_SINGLE_TARGET="python3_12 python3_13 -python3_11"
The following REQUIRED_USE flag constraints are unsatisfied:
exactly-one-of ( python_single_target_python3_11
python_single_target_python3_12 python_single_target_python3_13 )
The "exactly-one-of" means you have set two USE flags for the package
and can only choose one at the same time.
The ::gentoo repository of ebuilds does not set both at the same time.
In order to get both, you must have one somewhere outside of the gentoo
repository...
>> OR you must have had old package.use entries setting duplicate USE flags
>> already.
... which is why I suggested this.
> And I can see what happened now. It doesn't help that I didn't have my
> glasses, but the news item says:
>
> "At this point, you have a few configuration options to choose from:"
>
> I jumped straight to option 4, so I didn't read option 1 - why should I?
> Especially if I'm having difficulty reading.
Sorry? What? This wasn't part of option 1, this was from the paragraph
before "at this point you have a few configuration options".
You jumped straight over the paragraph before the one telling you to
make a choice.
>> And why on earth would you assume they are comments?
>
> Because the news item, as written, led me up the garden path!
>
> "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"
>
> It says "run the upgrade commands - COLON". As I understand English,
> that says that what follows is a list of COMMANDS. And "*/*" looks like
> a weird comment marker. Why would I assume it's a declaration snippet?
First, enable both python 3.12 an python 3.13:
<package.use stuff>
and then run the upgrade commands.
It is not lacking the quality of being idiomatic, to write the colon
after the full sentence rather than splitting the sentence in two. I see
both quite often. But regardless,
it certainly isn't a weird comment marker given:
- it looks EXACTLY like package.use syntax (because it is)
- there are no COMMANDS. No "emerge" either. Did you try to copy/paste
it into a bash shell?
>> You don't need to know python and aren't expected to either. The news
>> item describes the fact that:
>
> That's clear now. But the combination of not reading a paragraph that
> clearly appeared to be irrelevant,
This is not what happened, so the news item is not responsible for your
failure to read the paragraph *before* the one you felt was irrelevant.
Sorry.
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 18:08 ` Eli Schwartz
@ 2025-05-11 19:10 ` Wol
2025-05-11 19:47 ` Eli Schwartz
0 siblings, 1 reply; 32+ messages in thread
From: Wol @ 2025-05-11 19:10 UTC (permalink / raw
To: gentoo-user
On 11/05/2025 19:08, Eli Schwartz wrote:
>> Because the news item, as written, led me up the garden path!
>>
>> "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"
>>
>> It says "run the upgrade commands - COLON". As I understand English,
>> that says that what follows is a list of COMMANDS. And "*/*" looks like
>> a weird comment marker. Why would I assume it's a declaration snippet?
>
> First, enable both python 3.12 an python 3.13:
>
> <package.use stuff>
>
> and then run the upgrade commands.
>
> It is not lacking the quality of being idiomatic, to write the colon
> after the full sentence rather than splitting the sentence in two. I see
> both quite often. But regardless,
The problem is, if I see "commands COLON", that means that what follows
the colon is a list of commands. And it's clearly a list so I assumed it
was commands ...
From his name, I assume Michał Górny is not a native English speaker,
and I have no problem with that. I speak four languages to varying
amounts of ability and the quality of foreigners' English never ceases
to amaze me. But the fact remains I did not understand what this news
item said! It's been explained and it's now clear what was meant,
whether that's what was actually written or not.
And going back a bit - having carefully read the news item to find what
it said about package.use, it's magically changed!?!? I now can't find
any mention of "package.use snippets", which I am sure I found when
carefully reading the item!
But anyway - a bit more - the actual targets ...
> You didn't post full output so it's difficult to say for sure. But,
> "requires just one of" sounds like this:
>
> $ PYTHON_SINGLE_TARGET='python3_13 python3_12' emerge -1a glib-utils
That's basically what I got, except it was demanding python 11 or 12.
Given that I have absolutely no mention that I can find of python, in
either make.conf or package.use (other than the snippet I've just added
to force the upgrade), it looks to me like option 1 should have "just
worked". So why didn't it? Where else would there be stuff that tells my
system that Python 13 is "persona non grata"?
The only thing that feels like it might be a problem (and if Python 13
is now the default that's REALLY weird) is I don't have ~amd64 as
default ... (and my system is systemd/kde, but that also should be
irrelevant).
Cheers,
Wol
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 19:10 ` Wol
@ 2025-05-11 19:47 ` Eli Schwartz
0 siblings, 0 replies; 32+ messages in thread
From: Eli Schwartz @ 2025-05-11 19:47 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 1872 bytes --]
On 5/11/25 3:10 PM, Wol wrote:
> But anyway - a bit more - the actual targets ...
>
>> You didn't post full output so it's difficult to say for sure. But,
>> "requires just one of" sounds like this:
>>
>> $ PYTHON_SINGLE_TARGET='python3_13 python3_12' emerge -1a glib-utils
>
> That's basically what I got, except it was demanding python 11 or 12.
... but you originally said,
"I followed the instructions at the end - depclean, -1uVD, and it just
fails completely with "requires just one of 3_11 or 3_12". Including
important stuff like most of kde, systemd-dbus, and so on."
You should definitely not have only 3.11 and 3.12 as options for "most
of kde, systemd-dbus, and so on".
Here's a list of packages that only have 3.11 and 3.12 support:
https://qa-reports.gentoo.org/output/gpyutils/312-to-313.txt
Courtesy of the dashboard at https://qa-reports.gentoo.org/
A mere 269 packages, out of numerous thousands of packages in gentoo.
And "most of KDE" was certainly ready. A common theme of those that
weren't is that they are usually not well maintained or popular. sci-*/
packages are quite a chunk.
Either way, that goes back to the general discussion about "not all
packages were ready yet", and that is a topic of discussion every single
year. As the news item said, it's possible to take a slower approach and
defer the whole thing.
> Given that I have absolutely no mention that I can find of python, in
> either make.conf or package.use (other than the snippet I've just added
> to force the upgrade), it looks to me like option 1 should have "just
> worked". So why didn't it? Where else would there be stuff that tells my
> system that Python 13 is "persona non grata"?
Full portage output could no doubt shed a light on which package is
missing support for 3.13 entirely.
--
Eli Schwartz
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-11 14:52 ` Dale
@ 2025-05-17 7:17 ` Dale
2025-05-18 12:06 ` Michael
0 siblings, 1 reply; 32+ messages in thread
From: Dale @ 2025-05-17 7:17 UTC (permalink / raw
To: gentoo-user
Dale wrote:
> <<<< SNIP >>>>
> Oh, tried to do the last step on my main rig, emerge spit out a nice
> loud and hard to miss, NO!!!. There's still a lot of packages not ready
> for python 3.13 yet. Maybe next week. If I don't forget. Again.
>
> Dale
>
> :-) :-)
>
Little update. I just went to the third step in the python update news
item, safer method. The only package I have left at 3.12 is
media-libs/avidemux-plugins. It is a lonely package for python 3.12.
Even Kicad is up to 3.13 now.
So, for those still stuck at step 2, may want to give step three a try
and see how close you are to being able to fully switch.
Dale
:-) :-)
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-17 7:17 ` Dale
@ 2025-05-18 12:06 ` Michael
2025-05-18 14:26 ` Dale
0 siblings, 1 reply; 32+ messages in thread
From: Michael @ 2025-05-18 12:06 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 2393 bytes --]
On Saturday, 17 May 2025 08:17:34 British Summer Time Dale wrote:
> Dale wrote:
> > <<<< SNIP >>>>
> > Oh, tried to do the last step on my main rig, emerge spit out a nice
> > loud and hard to miss, NO!!!. There's still a lot of packages not ready
> > for python 3.13 yet. Maybe next week. If I don't forget. Again.
> >
> > Dale
> >
> > :-) :-)
>
> Little update. I just went to the third step in the python update news
> item, safer method. The only package I have left at 3.12 is
> media-libs/avidemux-plugins. It is a lonely package for python 3.12.
> Even Kicad is up to 3.13 now.
>
> So, for those still stuck at step 2, may want to give step three a try
> and see how close you are to being able to fully switch.
>
> Dale
>
> :-) :-)
First, a big thank you to devs and maintainers for making this python upgrade
so seamless and for me at least, painless. Four PCs were updated without any
intervention by me whatsoever.
The fifth upgrade involved an old laptop which had not seen an update for more
than 9 months. I thought this would present some problems and require my
manual intervention, if only because portage and its contents have moved on
some distance over this time.
Emerge added a load of python target related USE flags in zz-autounmask, which
I accepted. Then I added '--backtrack=99' before I let it rip. It took
overnight, emerged close to 900 packages and arrived at a fully working system
and desktop. After a --depclean session I removed the zz-autounmask USE
flags, whereby a number of python related packages were re-emerged and
everything is working as expected.
Finally, another laptop with a very similar collection of packages had an
almost seamless upgrade ... except that I stopped it some way through. When I
restarted emerge a day later there were problems. Packages were asking to be
emerged in a different order. Rust had a circular hissy fit as Alan reported
initially and qt-base and friends were blocking because they didn't like some
of the recently emerged dependencies - or something like that. Anyway, I
emerged rust-bin for now, unmerged qt-base and left the emerge well alone to
proceeded with further issues.
Given this anecdotal experience, I made a mental note for next time to leave
systems complete a major upgrade once I commit to it, rather than interrupt
emerge from doing its thing.
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [gentoo-user] Fragile python update is wedged.
2025-05-18 12:06 ` Michael
@ 2025-05-18 14:26 ` Dale
0 siblings, 0 replies; 32+ messages in thread
From: Dale @ 2025-05-18 14:26 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 4171 bytes --]
Michael wrote:
> On Saturday, 17 May 2025 08:17:34 British Summer Time Dale wrote:
>> Dale wrote:
>>> <<<< SNIP >>>>
>>> Oh, tried to do the last step on my main rig, emerge spit out a nice
>>> loud and hard to miss, NO!!!. There's still a lot of packages not ready
>>> for python 3.13 yet. Maybe next week. If I don't forget. Again.
>>>
>>> Dale
>>>
>>> :-) :-)
>> Little update. I just went to the third step in the python update news
>> item, safer method. The only package I have left at 3.12 is
>> media-libs/avidemux-plugins. It is a lonely package for python 3.12.
>> Even Kicad is up to 3.13 now.
>>
>> So, for those still stuck at step 2, may want to give step three a try
>> and see how close you are to being able to fully switch.
>>
>> Dale
>>
>> :-) :-)
> First, a big thank you to devs and maintainers for making this python upgrade
> so seamless and for me at least, painless. Four PCs were updated without any
> intervention by me whatsoever.
>
> The fifth upgrade involved an old laptop which had not seen an update for more
> than 9 months. I thought this would present some problems and require my
> manual intervention, if only because portage and its contents have moved on
> some distance over this time.
>
> Emerge added a load of python target related USE flags in zz-autounmask, which
> I accepted. Then I added '--backtrack=99' before I let it rip. It took
> overnight, emerged close to 900 packages and arrived at a fully working system
> and desktop. After a --depclean session I removed the zz-autounmask USE
> flags, whereby a number of python related packages were re-emerged and
> everything is working as expected.
>
> Finally, another laptop with a very similar collection of packages had an
> almost seamless upgrade ... except that I stopped it some way through. When I
> restarted emerge a day later there were problems. Packages were asking to be
> emerged in a different order. Rust had a circular hissy fit as Alan reported
> initially and qt-base and friends were blocking because they didn't like some
> of the recently emerged dependencies - or something like that. Anyway, I
> emerged rust-bin for now, unmerged qt-base and left the emerge well alone to
> proceeded with further issues.
>
> Given this anecdotal experience, I made a mental note for next time to leave
> systems complete a major upgrade once I commit to it, rather than interrupt
> emerge from doing its thing.
I agree. The devs did a good job with the safer method. Some of us
just had some packages that were a little behind, for me, Kicad and a
couple other packages that likely not many people use compared to
something like Chrome, Firefox or LOo which was ready. Still, the devs
can't help that some packages lag behind. The important part, they gave
use a upgrade method that works even if it requires us to either delay
some packages or just delay the final step. Once my odd packages caught
up, I was left with one package that still needs the old python. Thing
is, my system remained stable during the whole thing.
I have to say, emerge has come a LONG ways since 2003 when I started
using Gentoo. Someone coming up with the idea of being able to inform
us of changes, with the news items, is also a HUGE help. We get a
notice that something important is changing and might require certain
steps. We not hitting these major changes blindly anymore. I remember
the old days when I would sync and then emerge would puke all over my
keyboard with something most of us couldn't make sense of. Today, we
sync, get a alert of serious changes that require attention and then
tells us how to navigate the change, usually with more than one way to
do it.
Yea, Gentoo has come a long ways. The devs do some awesome work. Wish
I could win the lottery. LOL :-D
Dale
:-) :-)
P. S. I'm still trying to figure out how to redo my drive setup. I got
one large LVM that I want to transfer to a encrypted file system. I'm
trying to figure out how to put the new drives in or move the old drives
to the NAS box for the transfer. Either way requires a lot of work. :/
[-- Attachment #2: Type: text/html, Size: 5399 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2025-05-18 14:27 UTC | newest]
Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-02 17:07 [gentoo-user] Fragile python update is wedged Alan Mackenzie
2025-05-02 17:22 ` Pramod V U
2025-05-02 17:47 ` [gentoo-user] Fragile rust update is wedged. (Was: Fragile python update is wedged.) Eli Schwartz
2025-05-02 19:07 ` [gentoo-user] Fragile rust update is wedged Alan Mackenzie
2025-05-02 20:07 ` Eli Schwartz
2025-05-02 21:15 ` [gentoo-user] Fragile python update is wedged [Was: Fragile rust update is wedged] Alan Mackenzie
2025-05-02 21:35 ` Wol
2025-05-02 21:44 ` Jay Faulkner
2025-05-02 22:17 ` Alan Mackenzie
2025-05-02 22:21 ` Jay Faulkner
2025-05-02 21:56 ` Eli Schwartz
2025-05-04 16:41 ` Alan Mackenzie
2025-05-04 17:01 ` Eli Schwartz
2025-05-03 3:14 ` [gentoo-user] " Grant Edwards
2025-05-03 4:07 ` [gentoo-user] Fragile rust update is wedged Nate Eldredge
2025-05-11 11:54 ` [gentoo-user] Fragile python " Wol
2025-05-11 12:42 ` Dale
2025-05-11 13:26 ` Philip Webb
2025-05-11 14:52 ` Dale
2025-05-17 7:17 ` Dale
2025-05-18 12:06 ` Michael
2025-05-18 14:26 ` Dale
2025-05-11 15:14 ` Eli Schwartz
2025-05-11 12:43 ` Frank Schletz
2025-05-11 13:37 ` Wol
2025-05-11 14:55 ` Dale
2025-05-11 15:04 ` Eli Schwartz
2025-05-11 17:40 ` Wol
2025-05-11 18:06 ` Michael
2025-05-11 18:08 ` Eli Schwartz
2025-05-11 19:10 ` Wol
2025-05-11 19:47 ` Eli Schwartz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox