I work with Ubuntu 14.04.5 and faced troubles with rebuilding PulseAudio from source. PulseAudio here is 4.0-0ubuntu11.1, but I need to rebuild it and include recent patch https://patchwork.freedesktop.org/patch/65100/ which improves echo-cancel
module.
I tried to rebuild PA following instructions from Ubuntu community docs https://help.ubuntu.com/community/UpdatingADeb . I.e. apt-get build-dep ...
, apt-get source ...
, patch ...
, debchange -i
, dpkg-source --commit
, debuild -us -uc -i -I
. Built was successful, only one error - "pulseaudio: postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/pulseaudio", but I think it should be ignored. Then I installed built packages using debi
, tried to launch PA and get following error:
$ pulseaudio -vvv
<...>
D: [pulseaudio] module-systemd-login.c: Added new session c2
I: [pulseaudio] module.c: Loaded "module-systemd-login" (index: #14; argument: "").
I: [pulseaudio] module.c: Loaded "module-position-event-sounds" (index: #15; argument: "").
I: [pulseaudio] module.c: Loaded "module-filter-heuristics" (index: #16; argument: "").
I: [pulseaudio] module.c: Loaded "module-filter-apply" (index: #17; argument: "").
Inconsistency detected by ld.so: dl-open.c: 689: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!
The moment when launch fails is exact the moment when echo-cancel
module should start. Furthermore, even if I rebuild PA without any significant changes - I get same error. If I use PA from officical Ubuntu repo - it starts without any error and launchs echo-cancel
module successfully.
This is how I enable echo-cancel
, these lines I added to the end of /etc/pulse/default.pa
:
load-module module-echo-cancel source_name=noechosource sink_name=noechosink
set-default-source noechosource
set-default-sink noechosink
Could anybody suggest how can I solve this problem with rebuilding PA? Maybe the way I rebuild package is wrong in some point. As I said, the problem is not even with rebuilding modified PA, but with simple rebuilding it without any changes, so seems that the problem is with build process itself.
Figured it out, at least in the main:
It is a specific deb building problem, not related to PulseAudio itself:
RT_CONSISTENT
assertion failure was caused by the missing dependency ofmodule-echo-cancel.so
:ldd
on this module showslibwebrtc-util.so => not found
and according todebuild
log this file was built, but not packaged to deb and so was not installed to the systemtrusty
PA package is built without support of WebRTC AEC (and that's why you don't need and don't installlibwebrtc-util.so
).libwebrtc-audio-processing-dev
package before rebuilding the PA. These WebRTC libs were caught by the PA configure script and the PA was built with WebRTC support, but during post-built steps not all required files were packaged to deb.libwebrtc-util.so
to its desired location. Later I'll find out how to fix building scripts to handle this case correctly and come back and update this answer.