On 22. 09. 24 1:00, Adam Williamson wrote:
So, arguably, the error here is in the package: clang18 should explicitly conflict with clang < 19, compiler-rt18 should explicitly conflict with compiler-rt < 19, libomp should explicitly conflict with libomp18 < 18.1.7-4 . (currently compiler-rt18 has an explicit conflicts with 'compiler-rt = 18', but that definitely seems wrong; I don't think that could ever be satisfied.)
I think the conflict in clang18 should actually be (clang >= 18 with clang < 19~~).
Anyway, we don't have such conflict in Pythons, we have Obsoletes.
- python3 version 3.13 has an unversioned Obsoletes for python3.13 - python3 version 3.12 has an unversioned Obsoletes for python3.12
Same for various subpackages, such as -libs or -devel.
---
The Obsoletes exists to upgrade python3.13 to python3 version 3.13 cleanly. Surely, this is desired in clang as well?
How do the Obsoletes behave in the case your describe:
When I have python3 version 3.12 installed (from before we upgraded Python to 3.13) and I run `dnf install python3.12-devel` (when the Python 3.13 upgrade is already in the repos), I get a clean, well-behaved transaction.
To reproduce, I tried this:
On Fedora 40 (e.g. in a container):
1. (optional) replace dnf with dnf5 to avoid dnf being dependent on Python 2. (optional) dnf5 remove python3-libs 3. dnf5 install python3 (installs python3 3.12.6-1.fc40) 4. dnf --releasever 41 install python3.12-devel
In both cases of doing 1-2 and not doing it, the transaction ends up as expected:
- python3 3.12 is upgraded to python3 3.13 - python3-libs 3.12 is upgraded to python3-libs 3.13 - python3.12-devel is installed - python3.12 and python3.12-libs are installed as dependencies
No transaction errors.
packaging@lists.fedoraproject.org