Bugzilla – Bug 1222253
pipewire provides libjack.so
Last modified: 2024-06-21 11:45:02 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
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.
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.
yes the libjack in pipewire is supposed to be drop in. why is this a problem?
reproducer with current Leap: rpm -e libjack0 || : zypper in pipewire-libjack-0_3 zypper in ffmpeg-6 ffmpeg -version
``` 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?
after moving all PW packages to the PM version no change.
does it use libjack.so.0 from pipewire, if yes, how?
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
pipewire-libjack-0_3-1.0.4-150600.1.2.x86_64 does not have it.
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.
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.
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
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.
This is an autogenerated message for OBS integration: This bug (1222253) was mentioned in https://build.opensuse.org/request/show/1182459 Factory / pipewire