Bug 274111 - audio/pulseaudio: fix build with lld 17
Summary: audio/pulseaudio: fix build with lld 17
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-desktop (Team)
URL:
Keywords:
Depends on:
Blocks: 273753
  Show dependency treegraph
 
Reported: 2023-09-26 18:59 UTC by Dimitry Andric
Modified: 2023-10-06 17:56 UTC (History)
0 users

See Also:
bugzilla: maintainer-feedback? (desktop)


Attachments
audio/pulseaudio: fix build with lld 17 (788 bytes, patch)
2023-09-26 19:00 UTC, Dimitry Andric
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Dimitry Andric freebsd_committer freebsd_triage 2023-09-26 18:59:45 UTC
Building audio/pulseaudio with lld 17 results in the following link errors:

cc  -o src/pulse/libpulse.so.0.24.2 src/pulse/libpulse.so.0.24.2.p/channelmap.c.o src/pulse/libpulse.so.0.24.2.p/context.c.o src/pulse/libpulse.so.0.24.2.p/direction.c.o src/pulse/libpulse.so.0.24.2.p/error.c.o src/pulse/libpulse.so.0.24.2.p/ext-device-manager.c.o src/pulse/libpulse.so.0.24.2.p/ext-device-restore.c.o src/pulse/libpulse.so.0.24.2.p/ext-stream-restore.c.o src/pulse/libpulse.so.0.24.2.p/format.c.o src/pulse/libpulse.so.0.24.2.p/introspect.c.o src/pulse/libpulse.so.0.24.2.p/mainloop-api.c.o src/pulse/libpulse.so.0.24.2.p/mainloop-signal.c.o src/pulse/libpulse.so.0.24.2.p/mainloop.c.o src/pulse/libpulse.so.0.24.2.p/operation.c.o src/pulse/libpulse.so.0.24.2.p/proplist.c.o src/pulse/libpulse.so.0.24.2.p/rtclock.c.o src/pulse/libpulse.so.0.24.2.p/sample.c.o src/pulse/libpulse.so.0.24.2.p/scache.c.o src/pulse/libpulse.so.0.24.2.p/stream.c.o src/pulse/libpulse.so.0.24.2.p/subscribe.c.o src/pulse/libpulse.so.0.24.2.p/thread-mainloop.c.o src/pulse/libpulse.so.0.24.2.p/timeval.c.o src/pulse/libpulse.so.0.24.2.p/utf8.c.o src/pulse/libpulse.so.0.24.2.p/util.c.o src/pulse/libpulse.so.0.24.2.p/volume.c.o src/pulse/libpulse.so.0.24.2.p/xmalloc.c.o -L/usr/local/lib -Wl,--as-needed -Wl,--allow-shlib-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,libpulse.so.0 -fstack-protector-strong -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -DLIBICONV_PLUG -isystem /usr/local/include '-Wl,-rpath,$ORIGIN/..:/usr/local/lib' -Wl,-rpath-link,/wrkdirs/share/dim/ports/audio/pulseaudio/work/pulseaudio-16.1/_build/src -Wl,-rpath-link,/usr/local/lib src/libpulsecommon-16.1.so -Wl,-z,nodelete -Wl,-version-script=/wrkdirs/share/dim/ports/audio/pulseaudio/work/pulseaudio-16.1/src/pulse/map-file -lm -pthread /usr/local/lib/libdbus-1.so -ldl -lintl -Wl,--end-group
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_free' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_get_api' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_new' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_drain' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_flush' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_free' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_get_latency' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_new' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_read' failed: symbol not defined
ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_write' failed: symbol not defined
cc: error: linker command failed with exit code 1 (use -v to see invocation)

This is because lld 17 defaults to errors when undefined symbols are referenced in linker version scripts. Since pulseaudio uses the same linker version script for both the regular libpulse.so, and the other variants, libpulse-mainloop-glib.so and libpulse-simple.so, some of the symbols are expected to be undefined, so suppress the errors by adding -Wl,--undefined-version to LDFLAGS.
Comment 1 Dimitry Andric freebsd_committer freebsd_triage 2023-09-26 19:00:03 UTC
Created attachment 245259 [details]
audio/pulseaudio: fix build with lld 17
Comment 2 commit-hook freebsd_committer freebsd_triage 2023-10-06 17:51:59 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=86f04dd9a2c58f159b050b6043b919da2d120e6f

commit 86f04dd9a2c58f159b050b6043b919da2d120e6f
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-09-26 18:54:05 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-10-06 17:48:54 +0000

    audio/pulseaudio: fix build with lld 17

    Building audio/pulseaudio with lld 17 results in the following link
    errors:

      cc  -o src/pulse/libpulse.so.0.24.2 src/pulse/libpulse.so.0.24.2.p/channelmap.c.o src/pulse/libpulse.so.0.24.2.p/context.c.o src/pulse/libpulse.so.0.24.2.p/direction.c.o src/pulse/libpulse.so.0.24.2.p/error.c.o src/pulse/libpulse.so.0.24.2.p/ext-device-manager.c.o src/pulse/libpulse.so.0.24.2.p/ext-device-restore.c.o src/pulse/libpulse.so.0.24.2.p/ext-stream-restore.c.o src/pulse/libpulse.so.0.24.2.p/format.c.o src/pulse/libpulse.so.0.24.2.p/introspect.c.o src/pulse/libpulse.so.0.24.2.p/mainloop-api.c.o src/pulse/libpulse.so.0.24.2.p/mainloop-signal.c.o src/pulse/libpulse.so.0.24.2.p/mainloop.c.o src/pulse/libpulse.so.0.24.2.p/operation.c.o src/pulse/libpulse.so.0.24.2.p/proplist.c.o src/pulse/libpulse.so.0.24.2.p/rtclock.c.o src/pulse/libpulse.so.0.24.2.p/sample.c.o src/pulse/libpulse.so.0.24.2.p/scache.c.o src/pulse/libpulse.so.0.24.2.p/stream.c.o src/pulse/libpulse.so.0.24.2.p/subscribe.c.o src/pulse/libpulse.so.0.24.2.p/thread-mainloop.c.o src/pulse/libpulse.so.0.24.2.p/tim
 eval.c.o src/pulse/libpulse.so.0.24.2.p/utf8.c.o src/pulse/libpulse.so.0.24.2.p/util.c.o src/pulse/libpulse.so.0.24.2.p/volume.c.o src/pulse/libpulse.so.0.24.2.p/xmalloc.c.o -L/usr/local/lib -Wl,--as-needed -Wl,--allow-shlib-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,libpulse.so.0 -fstack-protector-strong -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -DLIBICONV_PLUG -isystem /usr/local/include '-Wl,-rpath,$ORIGIN/..:/usr/local/lib' -Wl,-rpath-link,/wrkdirs/share/dim/ports/audio/pulseaudio/work/pulseaudio-16.1/_build/src -Wl,-rpath-link,/usr/local/lib src/libpulsecommon-16.1.so -Wl,-z,nodelete -Wl,-version-script=/wrkdirs/share/dim/ports/audio/pulseaudio/work/pulseaudio-16.1/src/pulse/map-file -lm -pthread /usr/local/lib/libdbus-1.so -ldl -lintl -Wl,--end-group
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_free' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_get_api' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_new' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_drain' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_flush' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_free' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_get_latency' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_new' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_read' failed: symbol not defined
      ld: error: version script assignment of 'PULSE_0' to symbol 'pa_simple_write' failed: symbol not defined
      cc: error: linker command failed with exit code 1 (use -v to see invocation)

    This is because lld 17 defaults to errors when undefined symbols are
    referenced in linker version scripts. Since pulseaudio uses the same
    linker version script for both the regular libpulse.so, and the other
    variants, libpulse-mainloop-glib.so and libpulse-simple.so, some of the
    symbols are expected to be undefined, so suppress the errors by adding
    -Wl,--undefined-version to LDFLAGS.

    PR:             274111
    Approved by:    blanket (for desktop and kde)
    MFH:            2023Q4

 audio/pulseaudio/Makefile | 5 +++++
 1 file changed, 5 insertions(+)