Bug 2345985 - pipewire-jack-audio-connection-kit-libs selected by dnf to provide libjack.so.0, ld.so.conf not included
Summary: pipewire-jack-audio-connection-kit-libs selected by dnf to provide libjack.so...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: pipewire
Version: 42
Hardware: All
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Wim Taymans
QA Contact: Fedora Extras Quality Assurance
URL: http://koji.fedoraproject.org/koji/t...
Whiteboard:
: 2263486 (view as bug list)
Depends On:
Blocks: F42BetaBlocker
TreeView+ depends on / blocked
 
Reported: 2025-02-16 12:48 UTC by Otto Liljalaakso
Modified: 2025-03-07 13:47 UTC (History)
10 users (show)

Fixed In Version: pipewire-1.4.0-2.fc43
Clone Of:
Environment:
Last Closed: 2025-03-07 13:47:55 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Otto Liljalaakso 2025-02-16 12:48:21 UTC
Recently, dosbox-staging went FTBFS in Rawhide. Failure happens when building the statically linked parts, due to not finding libjack.so.0. Previously, that library came from package jack-audio-connection-kit, but for the failing build, dnf has switched into resolving that dependency with pipewire-jack-audio-connection-kit-libs.

The reason for not finding the shared object is that the pipewire variant puts the shared object under /usr/lib64/pipewire/jack/, which is not searched by default. There is a ld.so.conf file to add it to search path, but that is in another subpackage pipewire-jack-audio-connection-kit, which is not included when dnf automatically resolves the shared object dependency.

Please make it so that when dnf pulls in both shared object and the needed ld.so.conf file.

Reproducible: Always

Steps to Reproduce:
Run 'fedpkg mockbuild' for dosbox-staging.
Actual Results:  
Build fails with errors like:

FAILED: dosbox 
g++  -o dosbox dosbox.p/src_main.cpp.o dosbox.p/src_dosbox.cpp.o dosbox.p/src_libs_ghc_fs_std_impl.cpp.o -Wl,--as-needed -Wl,--no-undefined -Wl,-Map,dosbox.map -Wl,--Map,dosbox.map -rdynamic -Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wl,--start-group src/misc/libmisc.a src/libs/loguru/libloguru.a src/libs/whereami/libwhereami.a src/capture/libcapture.a src/libs/zmbv/libzmbv.a src/cpu/libcpu.a src/dos/libdos.a src/libs/decoders/libdecoders.a src/fpu/libfpu.a src/gui/libgui.a src/hardware/libhardware.a src/libs/ESFMu/libesfmu.a src/libs/nuked/libnuked.a src/libs/residfp/libresidfp.a src/libs/YM7128B_emu/libym7128bemu.a src/ints/libints.a src/midi/libmidi.a src/shell/libshell.a src/libs/tal-chorus/libtalchorus.a src/libs/manymouse/libmanymouse.a -latomic -lstdc++fs /usr/lib64/libSDL2.so -pthread /usr/lib64/libiir.so /usr/lib64/libslirp.so /usr/lib64/libglib-2.0.so -lstdc++fs -ldl /usr/lib64/libpng16.so /usr/lib64/libz.so /usr/lib64/libSDL2_net.so /usr/lib64/libopusfile.so /usr/lib64/libGL.so /usr/lib64/libspeexdsp.so /usr/lib64/libfluidsynth.so /usr/lib64/libmt32emu.so /usr/lib64/libasound.so /usr/lib64/libXi.so -Wl,--end-group
/usr/bin/ld: warning: libjack.so.0, needed by /usr/lib64/libfluidsynth.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_set_buffer_size_callback'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_activate'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_port_get_buffer'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_port_register'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_set_process_callback'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_on_shutdown'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_client_close'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_set_port_registration_callback'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_get_sample_rate'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_get_ports'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_client_open'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_free'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_port_name'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_connect'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_set_sample_rate_callback'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_midi_event_get'
/usr/bin/ld: /usr/lib64/libfluidsynth.so: undefined reference to `jack_midi_get_event_count'
collect2: error: ld returned 1 exit status

Expected Results:  
Build succeeds

Failing build: http://koji.fedoraproject.org/koji/taskinfo?taskID=129180906
Koschei's view on changed dependency resolution: http://koschei.fedoraproject.org/package/dosbox-staging?collection=f43

Comment 1 Nils Philippsen 2025-02-17 00:20:48 UTC
I experience the same issue with ardour8 failing to build, see here: http://src.fedoraproject.org/rpms/ardour8/pull-request/1

I can confirm that with the ld.so.conf file present, the package builds.

Comment 2 Robert-André Mauchin 🐧 2025-02-18 02:07:16 UTC
http://src.fedoraproject.org/rpms/pipewire/pull-request/30

Comment 3 Neal Gompa 2025-03-04 16:45:27 UTC
I've made adjustments and submitted PRs for this across all affected Fedora releases:

- rawhide: http://src.fedoraproject.org/rpms/pipewire/pull-request/31
- f42: http://src.fedoraproject.org/rpms/pipewire/pull-request/32
- f41: http://src.fedoraproject.org/rpms/pipewire/pull-request/33
- f40: http://src.fedoraproject.org/rpms/pipewire/pull-request/34

This needs to land asap because it's breaking KDE too.

Comment 4 Fedora Blocker Bugs Application 2025-03-04 16:46:30 UTC
Proposed as a Blocker for 42-beta by Fedora user ngompa using the blocker tracking app because:

 This is breaking builds and creating incoherent runtime issues with packages that link to libjack.

Comment 5 Neal Gompa 2025-03-06 13:42:57 UTC
*** Bug 2263486 has been marked as a duplicate of this bug. ***

Comment 6 Neal Gompa 2025-03-06 14:06:25 UTC
I've updated my PRs to install libjack to the default library location to just eliminate this wonkiness.

Comment 7 Fedora Update System 2025-03-07 12:12:15 UTC
FEDORA-2025-1da71d2444 (pipewire-1.4.0-2.fc43) has been submitted as an update to Fedora 43.
http://bodhi.fedoraproject.org/updates/FEDORA-2025-1da71d2444

Comment 8 Wim Taymans 2025-03-07 12:16:05 UTC
JACK2 and pipewire-jack need to be installable at the same time or else a required feature
of having jack2 as a pipewire backend can't be done anymore. This excludes having the same
libjack.so location.

The only solution then is to always install the ld.so.conf file when the -libs are pulled
in. I'm making a build with the ld.so.conf moved to the -libs package but I probably prefer
to just install the pipewire-jack-audio-connection-kit package as a Requires, like the patch
from Robert-Andre.

Doing this breaks the ability to choose where to run a jack application in case JACK2 is
installed as well (using pw-jack to send it to pipewire, otherwise it goes to JACK2). I think
this is an acceptable breakage, I don't know anyone who does or wants to do that. We could
eventually fix this again if we allow swapping between jack2 for
pipewire-jack-audio-connection-kit (like we do for the pulseaudio server), but I don't want to
spend much time thinking about that niche case.

Comment 9 Fedora Update System 2025-03-07 13:47:55 UTC
FEDORA-2025-1da71d2444 (pipewire-1.4.0-2.fc43) has been pushed to the Fedora 43 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.