Let's do SOVERSION according to traditions and documentation
Sune Vuorela
nospam at vuorela.dk
Mon Feb 23 11:03:39 GMT 2026
Hi people
Historically and conventionally, abi versioning of libraries on
especially unix-like systems, have resulted in
libfoo.so.6 => libfoo.so.6.2.3 for e.g. SONAME libfoo.so.y.
In CMake, you would express this with
set_target_properties(mylib PROPERTIES VERSION 1.2.3 SOVERSION 1)
where the first point of VERSION x.y.z matches what you pass to
SOVERSION.
There is nothing in the machinery than hard enforces this, although it
is documented in the CMake documentation as 'common convention':
With older tooling like libtool, it is not possible to make these
different.
Meson allows making it different, but the the documentation tries hard
to direct the user to not do that.
In https://invent.kde.org/plasma/libplasma/-/merge_requests/1439 Harald
suggests to divert from the long established norm so that we have
libplasma.so.7 => libplasma.so.6.6.1 confusing both humans and scripts,
and wants a discussion on k-c-d wether or not we should follow
historical norms or not.
It is also surprising because one might have libfoo.so.6 =>
libfoo.so.6.6.0 nad libfoo.so.7 => libfoo.so.6.6.0 symlinks in the same
hand compiled sessions.
So, Harald asked me to start a discussion here wether or not we should
divert from expected.
This (the ability to have SONAME and x in x.y.z VERSION diverge) is a
footgun that we should not use.
So, what should we do ?
/Sune
More information about the kde-core-devel
mailing list