PSA: some SO versions suddenly turning 0 with ECM 5.110

Friedrich W. H. Kossebau kossebau at kde.org
Fri Sep 22 22:55:11 BST 2023


Hi,

A recent fix in ECMSetupVersion, released two weeks ago with ECM 5.110, is 
turning out to uncover a few unintended usages, resulting now in sudden SO 
version changes on a plain package rebuild (so potentially breaking linking of 
libraries by other packages)

Seems there are not too many affected, and possibly only non-"central" ones, 
with few external linkages or just application-internal.


ACTION REQUESTED

Still, might cause breakages perhaps for some. Reverting the change in ECM 
might be too late now, so let's instead for now just collect a list of known 
affected packages, so binary distributions can double-check dependencies and 
possibly fix things by rebuilding those as needed.

Please amend this list (and check as your packages as needed):
* fcitx5-configtool
* libime-jyutping
* kjournald


BREAKAGE TO NOTICE

A plain rebuild of a package with now ECM 5.110 will suddenly turn the SO 
version of libraries into "0", instead of "5" or similar (typically the 
project major version number).


CAUSE

While the docs state

    <prefix>_SOVERSION - <soversion>, or <major> if SOVERSION was not given

(https://api.kde.org/ecm/module/ECMSetupVersion.html?highlight=SOVERSION)
by a bug instead when passing "0" as SO version
 
    ecm_setup_version(${some_version}
        // [...]  
        SOVERSION 0
    )

this was treated as if the argument was not given. 

This behaviour was fixed for ECM 5.110 in
https://invent.kde.org/frameworks/extra-cmake-modules/-/merge_requests/378
so now also "0" is treated accordingly as normal SO version number

Sadly it had not been assumed that actually "0" has beeng used in some places 
already, and those projects just might not have been aware of the mismatch (or 
maybe even had not read the docs and assumed the behaviour as "normal", 
despite "0" being actually common value).

Luckily some projects like kasync or kimap2 also have "0" as major version 
number, so no effect seen with those.

Other libraries are application internal, not linked externally, so might 
break only with non-globbed package manifests, but not other packages.


Sorry for stirring up some things by what was intended just a fix,

Cheers
Friedrich




More information about the Distributions mailing list