[4.5.0.16] Package libxslt does not provide libxslt.so.1

REPRODUCIBILITY: 100%
OS VERSION: 4.5.0.16 (Struven ketju)
HARDWARE: Sony Xperia 10 - Dual SIM (i4113)
UI LANGUAGE: en_GB
REGRESSION: yes

DESCRIPTION:

Trying to install a package which has Requires: libxslt.so.1 fails

PRECONDITIONS:

none

STEPS TO REPRODUCE:

  1. zypper in or pkcon install a package with a dep on libxslt
  2. wait for resolving
  3. observe dependency error

Also:

On a device with SFOS 4.4:

$ rpm -qPp libxslt-1.1.34+git1-1.7.2.jolla.aarch64.rpm
warning: libxslt-1.1.34+git1-1.7.2.jolla.aarch64.rpm: Header V3 RSA/SHA256 Signature, key ID 47394f23: NOKEY
libexslt.so.0()(64bit)
libxslt = 1.1.34+git1-1.7.2.jolla
libxslt(aarch-64) = 1.1.34+git1-1.7.2.jolla
libxslt.so.1()(64bit)
libxslt.so.1(LIBXML2_1.0.11)(64bit)
libxslt.so.1(LIBXML2_1.0.12)(64bit)
libxslt.so.1(LIBXML2_1.0.13)(64bit)
libxslt.so.1(LIBXML2_1.0.16)(64bit)
libxslt.so.1(LIBXML2_1.0.17)(64bit)
libxslt.so.1(LIBXML2_1.0.18)(64bit)
libxslt.so.1(LIBXML2_1.0.22)(64bit)
libxslt.so.1(LIBXML2_1.0.24)(64bit)
libxslt.so.1(LIBXML2_1.0.30)(64bit)
libxslt.so.1(LIBXML2_1.0.32)(64bit)
libxslt.so.1(LIBXML2_1.0.33)(64bit)
libxslt.so.1(LIBXML2_1.1.0)(64bit)
libxslt.so.1(LIBXML2_1.1.1)(64bit)
libxslt.so.1(LIBXML2_1.1.18)(64bit)
libxslt.so.1(LIBXML2_1.1.2)(64bit)
libxslt.so.1(LIBXML2_1.1.20)(64bit)
libxslt.so.1(LIBXML2_1.1.23)(64bit)
libxslt.so.1(LIBXML2_1.1.24)(64bit)
libxslt.so.1(LIBXML2_1.1.25)(64bit)
libxslt.so.1(LIBXML2_1.1.26)(64bit)
libxslt.so.1(LIBXML2_1.1.27)(64bit)
libxslt.so.1(LIBXML2_1.1.3)(64bit)
libxslt.so.1(LIBXML2_1.1.30)(64bit)
libxslt.so.1(LIBXML2_1.1.34)(64bit)
libxslt.so.1(LIBXML2_1.1.5)(64bit)
libxslt.so.1(LIBXML2_1.1.7)(64bit)
libxslt.so.1(LIBXML2_1.1.9)(64bit)
$ rpm -qPp libxslt-1.1.37+git1-1.7.2.jolla.armv7hl.rpm
warning: libxslt-1.1.37+git1-1.7.2.jolla.armv7hl.rpm: Header V3 RSA/SHA256 Signature, key ID 47394f23: NOKEY
libexslt.so.0.8.20
libxslt = 1.1.37+git1-1.7.2.jolla
libxslt(armv7hl-32) = 1.1.37+git1-1.7.2.jolla
libxslt.so.1.1.35

EXPECTED RESULT:

Library package should Provide: its libraries

ACTUAL RESULT:

Problem: nothing provides 'libxslt.so.1' needed by the to be installed ...

MODIFICATIONS:

Lots, but it’s not really relevant.

ADDITIONAL INFORMATION:

Haven’t checked by possibly switching to cmake and a _build dir doesn’t create symlinks in the install phase.

https://github.com/sailfishos/libxslt/blame/master/rpm/libxslt.spec

1 Like

Well, the package does Provide it’s libraries. It’s just that the symlink is missing, so the package naturally does not provide it. Workaround for the dependency is to require via the package name. In any case I’ll file an internal bug report about this.

1 Like

It would appear this goes deeper that I thought:

  objdump -x  libxslt.so.1.1.35   | grep SONAME
  SONAME               libxslt.so.1.1.35

The (cmake) build process doesn’t seem to set a soname, so even though ldconfig tries it’s best, there is no symlink name it could choose.

Looking around how other distros package this, most stay with bad ole autotools, not cmake. Maybe switching to that wasn’t the best move.

Adding this patch, which is (conceptually wrong because soversion is not necessarily majorversion) fixes this.

References:

…aaaand just as I want to do a PR, it is already fixed in master. :wow: :joy:

But it nice to see someone else came up with exactly the same solution.

That was the way it was fixed in libxslt upstream repo, noticed that commit there when looking if there is new release available but no release was available so I just took that one commit from upstream.

This was fixed on 4.5.0.18.

1 Like