When openal-soft is built with JACK support, the following error appears.
ERROR: ld-elf.so.1: /usr/local/lib/libopenal.so.1: Undefined symbol "jack_error_callback"
(In reply to Jack from comment #0)
Thank you for your report. Could you add some additional detail, including:
- uname -a output
- pkg version -v output
- full build log (compressed if necessary)
- config.log output (in WRKSRC directory, compressed if necessary)
FreeBSD upstairs.jack.com 13.0-STABLE FreeBSD 13.0-STABLE #0 stable/13-n246457-1ea187f8a1bf: Sat Jul 24 00:28:11 PDT 2021 firstname.lastname@example.org:/usr/obj/usr/src/amd64.amd64/sys/UPSTAIRS amd64
Created attachment 227032 [details]
pkg version -v output
Created attachment 227033 [details]
compile log with make showconfig
I don't think there is a config.log for cmake?
Created attachment 227058 [details]
Workaround for the missing symbol
I can confirm this. Had to install games/supertux2 though, none of my existing ports actually use OpenAL, despite dependencies.
The new audio/jack version does not export the jack_error_callback symbol anymore, at least not in the client library (libjack.so). This looks intentional to me, as the symbol is marked optional.
My first workaround (and proof of culprit) is attached here. The nullptr argument makes jack use its default handler, which should be fine. And it gets supertux running.
The code in question looks like it tries to check for the presence of the jack_error_callback symbol. That hints to weak symbol references, but the included `jack/jack.h` header does not specify jack_error_callback as weak.
There is actually an additional `jack/weakjack.h` header installed which can be used to achieve that. But when I add it here, other symbols (which are present) provoke a SEGFAULT. There may be a problem with linking order, I didn't investigate any further.