|
Bugzilla – Full Text Bug Listing |
| Summary: | pipewire provides libjack.so | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE Distribution | Reporter: | Olaf Hering <ohering> |
| Component: | Basesystem | Assignee: | Antonio Larrosa <alarrosa> |
| Status: | IN_PROGRESS --- | QA Contact: | E-mail List <qa-bugs> |
| Severity: | Normal | ||
| Priority: | P3 - Medium | CC: | alarrosa, davejplater, gnome-bugs, mrueckert, rtsvetkov, yfjiang |
| Version: | Leap 15.6 | ||
| Target Milestone: | Leap 15.6 | ||
| Hardware: | x86-64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
|
Description
Olaf Hering
2024-04-02 18:56:24 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.
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 |