Dmitry Shachnev wrote: > I also dislike this change. As Lisandro says, we do not want it in Debian > (because we keep track of versions ourselves in the symbols file, and when > the versions are in the symbols themselves they are just useless noise for > us). And as you say, you do not want distributions Qt builds to be ABI > incompatible with upstream (we also would like to avoid that), so if this > patch gets applied upstream, we will be in a bad situation. > > I wonder what was the reason for OpenSUSE to have this change — I could > not find a relevant changelog entry. Why cannot they just rebuild all > packages using private headers for every Qt release, like we do?
See my replies: RPM tracks symbol versions, but not the actual names, e.g., Qt has auto-Provides like: libQt5Core.so.5()(64bit) libQt5Core.so.5(Qt_5)(64bit) libQt5Core.so.5(Qt_5.0)(64bit) libQt5Core.so.5(Qt_5.1)(64bit) libQt5Core.so.5(Qt_5.2)(64bit) libQt5Core.so.5(Qt_5.3)(64bit) libQt5Core.so.5(Qt_5.4)(64bit) libQt5Core.so.5(Qt_5.5)(64bit) libQt5Core.so.5(Qt_5.6)(64bit) libQt5Core.so.5(Qt_5_PRIVATE_API)(64bit) The auto-Requires correspond. As you can see, the non-private symbols are properly versioned, so if something requires an API introduced in 5.6, it will have an auto-Requires on "libQt5Core.so.5(Qt_5.6)(64bit)", and the dependency solver will know to drag in qt5-qtbase-5.6.0 or newer in a selective update scenario (because the older versions will just not have that Provides). Unfortunately, the private symbols just have a generic "libQt5Core.so.5(Qt_5_PRIVATE_API)(64bit)" version, which is completely useless. (It is versioned as if the ABI were completely immutable, thus effectively unversioned.) So we are left to manually query for stuff requiring Qt_5_PRIVATE_API and/or manually add versioned Requires on the package. If the symbols instead had a version number, e.g.: libQt5Core.so.5(Qt_5_6_2_PRIVATE_API)(64bit) that would automatically ensure the packages drag in Qt 5.6.2 and no other version, without having to manually add a: Requires: qt5-qtbase%{?_isa} = %{_qt5_version} The difference in implementation compared to the Qt_5.x symbol versions would be that the private symbols would of course NOT provide the older symbol versions, only the latest one, making it effectively an = dependency rather than a >= one. RPM explicitly does NOT track individual symbols as Debian tooling apparently does. Kevin Kofler _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development