On 12/10/22 07:59, Andrei Borzenkov wrote:
As far as I know, ABI version numbers are normally single digit so that your package should be indeed named "libopeniscsiusr0" and not "libopeniscsiusr0_2_0".
Wrong. Package name must match library SONAME which can be anything.
Using a single-digit is the commonly used mechanism, quoting [1]:
So it doesn't really matter for the parts of the shared library that aren't part of the SONAME. The libtool convention and the semantic versioning convention both make the first integer after the .so portion of the name the version for incompatible changes, which both do the same thing. Since that's the portion that's usually in the SONAME, they're equivalent for this purpose.
I mentioned that some shared libraries do different things. For example, OpenSSL has libssl.so.1.1 and libcrypto.so.1.1 as the shared library SONAMEs it uses. While this is not the recommended convention, it happens to work. They're changing to semantic versioning in future versions, though, because people find this confusing.
In Lee's case, adding additional functions does not break the ABI and hence a bump of the SOVERSION is not necessary. See "3.6. Incompatible Libraries" [2].
I don't remember having seen any library package that has a non-single-digit version number in its name.
https://build.opensuse.org/package/view_file/openSUSE:Factory/open-iscsi/ope...
%package -n libopeniscsiusr0_2_0
Well, that's Lee's package we are currently talking about.
I have no idea why it fails on SUSE internal server.
Because it's using stricter rules for it's packaging sanity checks. Adrian
[1] https://stackoverflow.com/questions/7553184/how-to-do-versioning-of-shared-l... [2] https://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html