Bug 1222253 - pipewire provides libjack.so
Summary: pipewire provides libjack.so
Status: IN_PROGRESS
Alias: None
Product: openSUSE Distribution
Classification: openSUSE
Component: Basesystem (show other bugs)
Version: Leap 15.6
Hardware: x86-64 Linux
: P3 - Medium : Normal (vote)
Target Milestone: Leap 15.6
Assignee: Antonio Larrosa
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-04-02 18:56 UTC by Olaf Hering
Modified: 2024-06-21 11:45 UTC (History)
6 users (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Olaf Hering 2024-04-02 18:56:24 UTC
as noted in bug#1222195, pipewire provides "libjack.so.0", which feels wrong.
Is it an actual replacement for libjack0.rpm?

zypper search --verbose --details --provides libjack.so

libjack0 SLE-Module-Desktop-Applications15-SP5-Pool
pipewire-libjack-0_3 SLE-Module-Packagehub-Subpackages15-SP5-Updates

Note: pipewire-libjack-0_3 is apparently built from pipewire.src.rpm
Comment 1 Antonio Larrosa 2024-04-05 10:48:04 UTC
If you check the contents of that package, you can see: 

> rpm -ql pipewire-libjack-0_3 
/etc/alternatives/pw-jack
/etc/alternatives/pw-jack.1.gz
/usr/bin/pw-jack
/usr/bin/pw-jack-0.3
/usr/lib64/pipewire-0.3/jack
/usr/lib64/pipewire-0.3/jack/libjack.so.0
/usr/lib64/pipewire-0.3/jack/libjack.so.0.3.1004
/usr/lib64/pipewire-0.3/jack/libjacknet.so.0
/usr/lib64/pipewire-0.3/jack/libjacknet.so.0.3.1004
/usr/lib64/pipewire-0.3/jack/libjackserver.so.0
/usr/lib64/pipewire-0.3/jack/libjackserver.so.0.3.1004
/usr/share/man/man1/pw-jack-0.3.1.gz
/usr/share/man/man1/pw-jack.1.gz
/usr/share/pipewire/jack.conf

So it provides the library, but it's not installed to the same place as the official jack library allowing them to be co-installed. It's actually a replacement that can be used either by running the jack client with pw-jack (for sporadic uses), or by installing the pipewire-jack package (for a more general jack replacement), which installs a file under ld.so.conf.d so the libjack replacement libraries are found for all apps.

This allows jack clients to communicate with the pipewire server transparently.

Also, the PackageHub project in obs (just as Factory) does:
Prefer: -pipewire-libjack-0_3-devel libjack0

So the official implementation is preferred in any case.
Comment 2 Olaf Hering 2024-04-05 11:31:46 UTC
It is wrong for pipewire to do it that way. More than one thing provides X, so libzypp is free to pick either X. It can not know that one of both is simply not in the position to satisfy the requirement X for the consumers of X.
Comment 4 Marcus Rückert 2024-04-19 13:25:12 UTC
yes the libjack in pipewire is supposed to be drop in. why is this a problem?
Comment 5 Olaf Hering 2024-04-19 13:44:10 UTC
reproducer with current Leap:
rpm -e libjack0 || :
zypper in pipewire-libjack-0_3
zypper in ffmpeg-6
ffmpeg -version
Comment 6 Marcus Rückert 2024-04-19 13:56:41 UTC
```
b0af4071691c:/ # ffmpeg -version
ffmpeg version 6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 7 (SUSE Linux)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --enable-version3 --enable-libsmbclient --disable-openssl --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcdio --enable-libdav1d --enable-libdc1394 --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopenh264-dlopen --enable-libopus --enable-libpulse --enable-librav1e --enable-libsvtav1 --enable-libsoxr --enable-libspeex --enable-libssh --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-libmfx --enable-vaapi --enable-vdpau --enable-version3 --enable-libfdk-aac-dlopen --enable-nonfree --enable-libvo-amrwbenc --enable-libx264 --enable-libx265 --enable-libxvid
libavutil      58. 29.100 / 58. 29.100
libavcodec     60. 31.102 / 60. 31.102
libavformat    60. 16.100 / 60. 16.100
libavdevice    60.  3.100 / 60.  3.100
libavfilter     9. 12.100 /  9. 12.100
libswscale      7.  5.100 /  7.  5.100
libswresample   4. 12.100 /  4. 12.100
libpostproc    57.  3.100 / 57.  3.100
b0af4071691c:/ # history
    1  2024-04-19 13:53:56 zypper in pipewire-libjack-0_3
    2  2024-04-19 13:54:46 zypper in ffmpeg-6
    3  2024-04-19 13:55:24 zypper ar https://ftp.halifax.rwth-aachen.de/packman/suse/openSUSE_Leap_15.5/Essentials/ pm
    4  2024-04-19 13:55:27 zypper ref
    5  2024-04-19 13:55:33 zypper in ffmpeg-6
    6  2024-04-19 13:56:02 ffmpeg -version
    7  2024-04-19 13:56:16 history
```

works for me?
Comment 7 Marcus Rückert 2024-04-19 13:59:17 UTC
after moving all PW packages to the PM version no change.
Comment 8 Olaf Hering 2024-04-19 14:00:45 UTC
does it use libjack.so.0 from pipewire, if yes, how?
Comment 9 Marcus Rückert 2024-04-19 14:02:44 UTC
well.

b0af4071691c:/etc/ld.so.conf.d # cat pipewire-jack-x86_64.conf 
/usr/lib64/pipewire-0.3/jack/


the fun question is why does your system doesnt have this file?

rpm -qf $PWD/pipewire-jack-x86_64.conf 
pipewire-libjack-0_3-0.3.64-150500.3.5.2.x86_64
Comment 10 Olaf Hering 2024-04-19 14:06:00 UTC
pipewire-libjack-0_3-1.0.4-150600.1.2.x86_64 does not have it.
Comment 11 Marcus Rückert 2024-04-19 14:08:39 UTC
on TW we might really have an issue.

pipewire-jack now contains the /etc/ld.so.conf.d/pipewire-jack-x86_64.conf
but pipewire-libjack-0_3 does not require this package.

do you by any chance use the pipewire devel package on Leap 15.5?

oh 15.6. then yes you have the TW bug. and we should really fix that instead of doing the workaround in the jack package.
Comment 12 Antonio Larrosa 2024-04-19 16:07:53 UTC
pipewire-libjack-0_3 should only be installed if you know what you're doing, to redirect specific jack clients to pipewire manually. That's the reason that they can be installed at the same time as the official jack. So by default all jack clients will connect to the real jack and only when you use `pw-jack` to start an application, only that application will use the PW jack libraries and will be redirected to pipewire.

If you want PW to replace jack for all clients by default, just install pipewire-jack. Installing that package will remove the official jack and install everything needed so every jack client goes to pipewire.

Would it help if I put a message in the package description of pipewire-libjack-0_3 along the lines of "You most probably don't want to install this package on its own, if you're looking to replace jack with pipewire you should install pipewire-jack" ?

Btw, thanks to this bug report, I noticed that there was a related problem in Leap 15.6/SLE15 SP6 where pipewire-libjack-0_3 was being installed by default in Leap/SLE due to the PW jack spa plugin (which goes the other way around, making pipewire send its output to jack) which was included in the general pipewire-spa-plugins-0_2 package. So that's the reason I fixed PW to now create a separate package (pipewire-spa-plugins-0_2-jack) that should only be installed manually, so the pipewire-libjack-0_3 package is not pulled in anymore by any package that's installed by default.
Comment 17 Radoslav Tzvetkov 2024-05-23 09:10:29 UTC
This bug was mentioned in SR, which integrated the build 92.1 of SLE15 SP6.
Please set the bug as resolved if you think the work is done
Comment 18 Olaf Hering 2024-05-23 18:51:38 UTC
whatever is in SCC today, comment#0 remains valid.
More than one package provides X. zypper continues to pick any X.
"zypper in ffmpeg-6" picks the wrong X.
Not sure what else I have to say to explain what the bug is.
Perhaps someone else must rephrase it.
Comment 19 OBSbugzilla Bot 2024-06-21 11:45:02 UTC
This is an autogenerated message for OBS integration:
This bug (1222253) was mentioned in
https://build.opensuse.org/request/show/1182459 Factory / pipewire