https://bugzilla.redhat.com/show_bug.cgi?id=1111691
--- Comment #16 from David Nichols david@qore.org --- (In reply to David Nichols from comment #15)
(In reply to Michael Schwendt from comment #14)
obsolete-not-provided
First of all, while you can put anything in an Obsoletes tag, only package names (with/without a version-release range) will actually result in the specified package(s) getting replaced with another package (or multiple ones).
Further, anything declared as obsolete breaks existing dependencies on it. Unless there is a corresponding "Provides" for the obsolete thing.
Obsoletes: libqore5 < 0.8.12
If there's a "Requires: libqore5 …" anywhere, there would be a broken dependency, regardless of whether "libqore5" is a physical package %name, a virtual package name, or something else as a "Provides" tag.
http://fedoraproject.org/wiki/Packaging:Guidelines#Renaming. 2FReplacing_Existing_Packages
Obsoletes: qore-module-api-0.18
Same here. This capability will be "gone", "hidden" from the depsolver, and anything that still depends on it will cause a broken dependency. The package that contains this Obsoletes tag does not implicitly "Provides" the obsolete thing.
OK, I tried to read about this stuff, but I did not see this covered in any of the RPM or packaging guides. I think that I understand now.
So then I will do this instead:
Provides: qore-module(abi) = 0.18 Provides: libqore5 = 0.8.11 Obsoletes: libqore5 < 0.8.12 # provided for backwards-compatibility with unversioned capabilities and will be removed when the ABI drops backwards-compatibility Provides: qore-module-api-0.18 Provides: qore-module-api-0.17 Provides: qore-module-api-0.16 Provides: qore-module-api-0.15 Provides: qore-module-api-0.14 Provides: qore-module-api-0.13 Provides: qore-module-api-0.12 Provides: qore-module-api-0.11 Provides: qore-module-api-0.10 Provides: qore-module-api-0.9 Provides: qore-module-api-0.8 Provides: qore-module-api-0.7 Provides: qore-module-api-0.6 Provides: qore-module-api-0.5
This did not work because libqore then provides a capability that it's obsoleting.
Therefore I will update the version to 0.8.11.1 and then do the following:
Provides: qore-module(abi) = 0.18 Provides: libqore5 = %{version} Obsoletes: libqore5 < %{version} # provided for backwards-compatibility with unversioned capabilities and will be removed when the ABI drops backwards-compatibility Provides: qore-module-api-0.18 Provides: qore-module-api-0.17 Provides: qore-module-api-0.16 Provides: qore-module-api-0.15 Provides: qore-module-api-0.14 Provides: qore-module-api-0.13 Provides: qore-module-api-0.12 Provides: qore-module-api-0.11 Provides: qore-module-api-0.10 Provides: qore-module-api-0.9 Provides: qore-module-api-0.8 Provides: qore-module-api-0.7 Provides: qore-module-api-0.6
I can also remove the unversioned Provides if it's a problem, I just would like to keep backwards compatibility with existing installed modules if possible, but if it's not acceptable for Fedora, then I will remove the lines.
I should have the new release ready in a few minutes.