Re: Let's do SOVERSION according to traditions and documentation
Jin Liu <[email protected]> Mon, 23 Feb 2026 20:14:28 +0800
| Newsgroups | gmane.comp.kde.devel.core |
|---|---|
| Message-ID | <CAHBr4f-1GCo8=M3KLms4YWBKsrzWPhNKPAL0YzqJRc-O8BStPg@mail.gmail.com> |
--00000000000024a2d3064b7cb706 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Out of curiosity, I ran a similar check (attachment) to Harald's. And yeah, 149 "mismatches" in my machine, of which 25 looks like in KDE: libAppStreamQt.so.3 -> /usr/lib/libAppStreamQt.so.1.1.2 (version: .3, target version: .1.1.2) libdolphinprivate.so.6 -> /usr/lib/libdolphinprivate.so.25.12.2 (version: .6, target version: .25.12.2) libdolphinvcs.so.6 -> /usr/lib/libdolphinvcs.so.25.12.2 (version: .6, target version: .25.12.2) libgwenviewlib.so.5 -> /usr/lib/libgwenviewlib.so.4.97.0 (version: .5, target version: .4.97.0) libkddockwidgets-qt6.so.3 -> /usr/lib/libkddockwidgets-qt6.so.2.4.0 (version: .3, target version: .2.4.0) libkdebugsettingscore.so.6 -> /usr/lib/libkdebugsettingscore.so.25.12.2 (version: .6, target version: .25.12.2) libkdebugsettings.so.6 -> /usr/lib/libkdebugsettings.so.25.12.2 (version: .6, target version: .25.12.2) libkdecorations3private.so.2 -> /usr/lib/libkdecorations3private.so.6.6.0 (version: .2, target version: .6.6.0) libKExiv2Qt6.so.0 -> /usr/lib/libKExiv2Qt6.so.5.1.0 (version: .0, target version: .5.1.0) libKF6BalooWidgets.so.6 -> /usr/lib/libKF6BalooWidgets.so.25.12.2 (version: .6, target version: .25.12.2) libKF6FileMetaData.so.3 -> /usr/lib/libKF6FileMetaData.so.6.23.0 (version: .3, target version: .6.23.0) libKF6PulseAudioQt.so.5 -> /usr/lib/libKF6PulseAudioQt.so.1.7.0 (version: .5, target version: .1.7.0) libKF6ScreenDpms.so.8 -> /usr/lib/libKF6ScreenDpms.so.6.6.0 (version: .8, target version: .6.6.0) libKF6Screen.so.8 -> /usr/lib/libKF6Screen.so.6.6.0 (version: .8, target version: .6.6.0) libKGlobalAccelD.so.0 -> /usr/lib/libKGlobalAccelD.so.6.6.0 (version: .0, target version: .6.6.0) libKirigamiAddonsStatefulApp.so.6 -> /usr/lib/libKirigamiAddonsStatefulApp.so.1.11.0 (version: .6, target version: .1.11.0) libKirigamiApp.so.6 -> /usr/lib/libKirigamiApp.so.1.11.0 (version: .6, target version: .1.11.0) libkjournald.so.0 -> /usr/lib/libkjournald.so.25.12.2 (version: .0, target version: .25.12.2) libKNightTime.so.0 -> /usr/lib/libKNightTime.so.6.6.0 (version: .0, target version: .6.6.0) libkpmcore.so.13 -> /usr/lib/libkpmcore.so.25.12.2 (version: .13, target version: .25.12.2) libkquickcontrolsprivate.so.0 -> /usr/lib/libkquickcontrolsprivate.so.6.23.0 (version: .0, target version: .6.23.0) libKQuickImageEditor.so.1 -> /usr/lib/libKQuickImageEditor.so.0.6.0 (version: .1, target version: .0.6.0) libkrdccore.so.5 -> /usr/lib/libkrdccore.so.25.12.2 (version: .5, target version: .25.12.2) libKSaneCore6.so.1 -> /usr/lib/libKSaneCore6.so.25.12.2 (version: .1, target version: .25.12.2) libKSaneWidgets6.so.6 -> /usr/lib/libKSaneWidgets6.so.25.12.2 (version: .6, target version: .25.12.2) libKSysGuardFormatter.so.2 -> /usr/lib/libKSysGuardFormatter.so.6.6.0 (version: .2, target version: .6.6.0) libKSysGuardSensorFaces.so.2 -> /usr/lib/libKSysGuardSensorFaces.so.6.6.0 (version: .2, target version: .6.6.0) libKSysGuardSensors.so.2 -> /usr/lib/libKSysGuardSensors.so.6.6.0 (version: .2, target version: .6.6.0) libKSysGuardSystemStats.so.2 -> /usr/lib/libKSysGuardSystemStats.so.6.6.0 (version: .2, target version: .6.6.0) libPlasmaActivities.so.7 -> /usr/lib/libPlasmaActivities.so.6.6.0 (version: .7, target version: .6.6.0) libPlasmaActivitiesStats.so.1 -> /usr/lib/libPlasmaActivitiesStats.so.6.6.0 (version: .1, target version: .6.6.0) libpowerdevilcore.so.2 -> /usr/lib/libpowerdevilcore.so.6.6.0 (version: .2, target version: .6.6.0) Neal Gompa <[email protected]> =E4=BA=8E2026=E5=B9=B42=E6=9C=8823=E6=97=A5= =E5=91=A8=E4=B8=80 19:54=E5=86=99=E9=81=93=EF=BC=9A > Actually, it's fairly rare that soversions match software versions in > Unix. To give you a deeply Unixy example: rpm itself doesn't link the > version to soversion[0] and uses soversion 10 for rpm 6.0. Libraries > like libtukit, libjpeg, libusb, libudev, libc (glibc), libbtrfsutil, > and libvirt are other examples where these don't match. > > The historical convention is that there is zero relationship between > the software version and the ABI version, and libtool (which is the > progenitor of the ABI versioning convention everyone follows) has some > rules about this[1]. > > Plasma *mostly* follows these rules for its libraries. > > [0]: https://github.com/rpm-software-management/rpm/blob/rpm-6.0.1-releas= e/CMakeLists.txt#L47-L54 > [1]: https://www.gnu.org/software/libtool/manual/html_node/Libtool-versio= ning.html --00000000000024a2d3064b7cb706 Content-Type: text/x-python; charset="US-ASCII"; name="soname_mismatch.py" Content-Disposition: attachment; filename="soname_mismatch.py" Content-Transfer-Encoding: base64 Content-ID: <f_mlz4vnti0> X-Attachment-Id: f_mlz4vnti0 IyEvdXNyL2Jpbi9weXRob24zCgppbXBvcnQgb3MKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmlt cG9ydCByZQoKUEFUVEVSTiA9IHJlLmNvbXBpbGUocidcLnNvKChcLlxkKykqKSQnKQpmb3IgKHJv b3QsZGlycyxmaWxlcykgaW4gb3Mud2FsaygnLicsdG9wZG93bj1UcnVlKToKICAgIGZvciBpIGlu IGZpbGVzOgogICAgICAgIGxpbmsgPSBQYXRoKHJvb3QpIC8gaQogICAgICAgIGlmIGxpbmsuaXNf c3ltbGluaygpOgogICAgICAgICAgICBtYXRjaCA9IFBBVFRFUk4uc2VhcmNoKGxpbmsubmFtZSkK ICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIG1hdGNoLmdyb3VwKDEpOgogICAgICAgICAgICAgICAg c29fdmVyc2lvbiA9IG1hdGNoLmdyb3VwKDEpCiAgICAgICAgICAgICAgICB0YXJnZXQgPSBsaW5r LnJlc29sdmUoKQogICAgICAgICAgICAgICAgbWF0Y2gyID0gUEFUVEVSTi5zZWFyY2godGFyZ2V0 Lm5hbWUpCiAgICAgICAgICAgICAgICBpZiBtYXRjaDIgYW5kIG1hdGNoMi5ncm91cCgxKToKICAg ICAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IG1hdGNoMi5ncm91cCgxKQogICAgICAg ICAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfdmVyc2lvbi5zdGFydHN3aXRoKHNvX3ZlcnNpb24p OgogICAgICAgICAgICAgICAgICAgICAgICBwcmludChmJ3tsaW5rfSAtPiB7dGFyZ2V0fSAodmVy c2lvbjoge3NvX3ZlcnNpb259LCB0YXJnZXQgdmVyc2lvbjoge3RhcmdldF92ZXJzaW9ufSknKQo= --00000000000024a2d3064b7cb706--