Source: qwt 
Version: 6.3.0-1
Severity: serious
Justification: Policy 8.1
Control: affects -1 src:ovito

qwt 6.3.0-1 generates binary packages libqwt-qt6-dev and libqwt-qt6-6.3

The problem is that qwt previously generated libqwt-qt6-6.2, and both
libqwt-qt6-6.2 and libqwt-qt6-6.3 provide
/usr/lib/x86_64-linux-gnu/libqwt-qt6.so.6
linking from the major version .6.
Hence there is an (undeclared) conflict between libqwt-qt6-6.2 and
libqwt-qt6-6.3.

This is a problem for ovito, which got built against libqwt-qt6-6.2
and now fails to start rebuilding (if already installed) against
libqwt-qt6-6.3 because of the file conflict (libqwt-qt6-6.2 and
libqwt-qt6-6.3 cannot be installed at the same time).

Linking the library from the major .6 version implies the soname is .6,
independent of the minor version. In this case the binary package
would want to be simply libqwt-qt6-6 not libqwt-qt6-6.3

But the soname of the library really has declared as libqwt-qt6.so.6.3,
including the minor version:

$ objdump -p /usr/lib/x86_64-linux-gnu/libqwt-qt6.so.6 | grep SONAME
  SONAME               libqwt-qt6.so.6.3

In this case the binary package (libqwt-qt6-6.3) has been correctly
name, but is incorrectly providing a major version link.

If it is correct that 6.2 is ABI incompatible with 6.3, then
libqwt-qt6-dev should provide the unversioned symlink
/usr/lib/x86_64-linux-gnu/libqwt-qt6.so  (which it does)
and libqwt-qt6-6.3 should provide the minor-versioned symlink
/usr/lib/x86_64-linux-gnu/libqwt-qt6.so.6.3 (which it does)
and stop providing the major-version symlink
/usr/lib/x86_64-linux-gnu/libqwt-qt6.so.6  (this is the bug).

If on the other hand 6.2 is ABI compatible with 6.3 after all, then
the bug would be in the soname and binary package name.
And the soname is deliberately set using the minor version in src/src.pro.
So I think the package name is correct. libqwt-qt6-6.3 just needs to
stop providing /usr/lib/x86_64-linux-gnu/libqwt-qt6.so.6
I can't tell if the major-version symlink is generated by the qmake
build system or the debian scripts, but it's easy to instruct
debian/rules to delete it if it was created by qmake.
e.g.
change debian/libqwt-qt6-6.3.install from
  usr/lib/${DEB_HOST_MULTIARCH}/libqwt-qt6.so.6*
to
  usr/lib/${DEB_HOST_MULTIARCH}/libqwt-qt6.so.6.*



I suspect related problem may also lie behind Bug#1101905, although it
addresses a conflict between libqwt-qt5-6.3 and libqwt-qt6-6.3, rather
than libqwt-qt6-6.2 and libqwt-qt6-6.3.

libqwt-qt5-6.2 and libqwt-qt5-6.3 also have the same kind of conflict,
in /usr/lib/x86_64-linux-gnu/libqwt-qt5.so.6
Likely want to change debian/libqwt-qt5-6.3.install from
  usr/lib/${DEB_HOST_MULTIARCH}/libqwt-qt5.so.6*
to
  usr/lib/${DEB_HOST_MULTIARCH}/libqwt-qt5.so.6.*
    


-- System Information:
Debian Release: 13.0
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.12.29-amd64 (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_AU:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Reply via email to