When rnnoise USE flag is enabled, and media-libs/rnnoise is presend, building Mumble fails with the following error: AudioInput.cpp: In constructor ‘AudioInput::AudioInput()’: AudioInput.cpp:109:32: error: too few arguments to function ‘DenoiseState* rnnoise_create(RNNModel*)’ 109 | denoiseState = rnnoise_create(); | ^ In file included from AudioInput.cpp:25: /usr/include/rnnoise.h:80:30: note: declared here 80 | RNNOISE_EXPORT DenoiseState *rnnoise_create(RNNModel *model); Mumble actually has rnnoise bundled. But it prefers the system version when building, which has a different API. Reproducible: Always Steps to Reproduce: 1. emerge rnnoise 2. Enable rnnoise USE flag for media-sound/mumble 3. emerge mumble Actual Results: ERROR: media-sound/mumble-1.3.4::gentoo failed (compile phase) Expected Results: >>> media-sound/mumble-1.3.4 merged. Workaround: temporary unmerge media-libs/rnnoise when building Mumble. Portage 3.0.20 (python 3.9.5-final-0, default/linux/amd64/17.1/systemd, gcc-10.3.0, glibc-2.33-r1, 5.10.37-gentoo x86_64) ================================================================= System Settings ================================================================= System uname: Linux-5.10.37-gentoo-x86_64-AMD_Ryzen_9_3900XT_12-Core_Processor-with-glibc2.33 KiB Mem: 131841412 total, 66739308 free KiB Swap: 0 total, 0 free Timestamp of repository gentoo: Sun, 11 Jul 2021 22:15:01 +0000 Head commit of repository gentoo: 8868c2c69c29e6e05b16301bb1698dac673679ff Timestamp of repository pentoo: Sun, 11 Jul 2021 09:37:09 +0000 Head commit of repository pentoo: b9a87bf5c4bd54c9e9ded0c980e74e5fd45eb20c Timestamp of repository qownnotes-overlay: Fri, 09 Jul 2021 02:08:13 +0000 Head commit of repository qownnotes-overlay: eac8311cf08f66d00ca32c49505210f41699e58b Timestamp of repository sage-on-gentoo: Sat, 10 Jul 2021 21:52:35 +0000 Head commit of repository sage-on-gentoo: 24505dd601453c1d60f2ded78db4f32f05e9794d Timestamp of repository steam-overlay: Sat, 10 Jul 2021 21:52:35 +0000 Head commit of repository steam-overlay: 1a4b8d61985fd4e90abb96d2596cb88ad215b427 sh bash 5.1_p8 ld GNU ld (Gentoo 2.35.2 p1) 2.35.2 distcc 3.4 x86_64-pc-linux-gnu [disabled] app-shells/bash: 5.1_p8::gentoo dev-java/java-config: 2.3.1::gentoo dev-lang/perl: 5.32.1::gentoo dev-lang/python: 2.7.18_p10::gentoo, 3.9.5_p2::gentoo dev-lang/rust: 1.52.1::gentoo dev-util/cmake: 3.18.5::gentoo sys-apps/baselayout: 2.7::gentoo sys-apps/sandbox: 2.24::gentoo sys-devel/autoconf: 2.13-r1::gentoo, 2.69-r5::gentoo sys-devel/automake: 1.16.3-r1::gentoo sys-devel/binutils: 2.35.2::gentoo sys-devel/gcc: 10.3.0-r1::gentoo sys-devel/gcc-config: 2.4::gentoo sys-devel/libtool: 2.4.6-r6::gentoo sys-devel/make: 4.3::gentoo sys-kernel/linux-headers: 5.10::gentoo (virtual/os-headers) sys-libs/glibc: 2.33-r1::gentoo Repositories: gentoo location: /var/db/repos/gentoo sync-type: rsync sync-uri: rsync://rsync2.ru.gentoo.org/gentoo-portage/ priority: -1000 sync-rsync-verify-max-age: 24 sync-rsync-verify-jobs: 1 sync-rsync-verify-metamanifest: yes sync-rsync-extra-opts: localrepo location: /var/db/repos/localrepo masters: gentoo pentoo location: /var/db/repos/pentoo sync-type: git sync-uri: https://github.com/gentoo-mirror/pentoo.git masters: gentoo qownnotes-overlay location: /var/db/repos/qownnotes-overlay sync-type: git sync-uri: https://github.com/gentoo-mirror/qownnotes-overlay.git masters: gentoo sage-on-gentoo location: /var/db/repos/sage-on-gentoo sync-type: git sync-uri: https://github.com/gentoo-mirror/sage-on-gentoo.git masters: gentoo steam-overlay location: /var/db/repos/steam-overlay sync-type: git sync-uri: https://github.com/gentoo-mirror/steam-overlay.git masters: gentoo Installed sets: @steam, @wgh-wayland ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="@FREE" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=native -O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.8/conf" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-march=native -O2 -pipe" DISTDIR="/var/cache/distfiles" ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR" FCFLAGS="-march=native -O2 -pipe" FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-march=native -O2 -pipe" GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/" LANG="C.UTF8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j24" PKGDIR="/var/cache/binpkgs" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" PORTAGE_TMPDIR="/var/tmp" RUSTFLAGS="-C target-cpu=native" USE="acl amd64 bindist bzip2 cli crypt dri fortran gdbm iconv ipv6 libglvnd libtirpc multilib ncurses nls nptl openmp pam pcre readline seccomp split-usr ssl systemd tcpd udev unicode xattr zlib" ABI_X86="64" ADA_TARGET="gnat_2018" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 aes avx avx2 f16c fma3 pclmul popcnt rdrand sha sse3 sse4_1 sse4_2 sse4a ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-3 php7-4" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_9" PYTHON_TARGETS="python3_9" RUBY_TARGETS="ruby26" USERLAND="GNU" VIDEO_CARDS="amdgpu radeonsi" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq proto steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS ================================================================= Package Settings ================================================================= media-sound/mumble-1.3.4::gentoo was built with the following: USE="alsa dbus opus pulseaudio rnnoise zeroconf -debug -g15 -jack -oss -pch -portaudio -speech" ABI_X86="(64) -32 (-x32)" CFLAGS="-march=native -O2 -pipe -ggdb" CXXFLAGS="-march=native -O2 -pipe -ggdb" FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs compressdebug config-protect-if-modified distlocks ebuild-locks fail-clean fixlafiles installsources ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
Could you attach the build.log too please?
Created attachment 723643 [details] build.log
The Mumble developers use an obsolete version of rrnoise from before this change: https://github.com/xiph/rnnoise/commit/231b9c02d14a74cb449a98004cb7a2cf1bdeca2f#diff-ae66f826a5706e3486383dfe0615c89b2acd78c90f3042e8b53ed92c03077e67 As WGH has already found out, the workaround is to use the bundled rnnoise. Simply replace the line: $(myuse rnnoise) with the following line: $(usex rnnoise bundled-rnnoise) in the ebuild; usex tests for rnnoise; if the result is positive, emits the bundled-rnnoise configuration string, which gets added to the requested configuration, or an empty string, if the result is negative.
@WGH: May I ask why you closed the mumble issue about system-rnnoise? IMHO they should still fix this.
Hmm, frankly. I'm not really experienced in packaging stuff, so I'm not sure who's supposed to fix this. The problems indeed stem from the rnnoise library itself: it is not stable, has no releases, sonames, etc. Given this circumstances, maybe it's Mumble that should prefer the bundled one by default? Or maybe it's Gentoo's fault to even attempt to package such unstable library as a shared package? The bottom line, I dunno :)
(In reply to WGH from comment #5) > Hmm, frankly. I'm not really experienced in packaging stuff, so I'm not sure > who's supposed to fix this. > > The problems indeed stem from the rnnoise library itself: it is not stable, > has no releases, sonames, etc. That's unfortunate but IMHO mumble upstrem should be made aware of this. It's a different matter if they decide to no longer support latest rnnoise. > Given this circumstances, maybe it's Mumble that should prefer the bundled > one by default? Or simply fix their code so users can still use latest rnnoise. > Or maybe it's Gentoo's fault to even attempt to package such unstable > library as a shared package? Gentoo simply tries to avoid using bundled libs: https://wiki.gentoo.org/wiki/Why_not_bundle_dependencies > The bottom line, I dunno :)
> > Given this circumstances, maybe it's Mumble that should prefer the bundled > > one by default? > > Or simply fix their code so users can still use latest rnnoise. They already did, it's just the new Mumble version hasn't been released yet.
https://github.com/mumble-voip/mumble/pull/4850 (sorry for double-posting)
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b03ebcac8f15911f39103f371187bb199e03e15f commit b03ebcac8f15911f39103f371187bb199e03e15f Author: WGH <wgh@torlan.ru> AuthorDate: 2021-07-12 23:10:14 +0000 Commit: Lars Wendler <polynomial-c@gentoo.org> CommitDate: 2021-08-16 09:31:45 +0000 media-sound/mumble: Prefer bundled rnnoise rnnoise library doesn't have proper versioning, and its API is unstable. The rnnoise currently present in Gentoo is incompatible with Mumble, so ask it to prefer the bundled one. Closes: https://bugs.gentoo.org/801961 Signed-off-by: Maxim Plotnikov <wgh@torlan.ru> Closes: https://github.com/gentoo/gentoo/pull/21621 Signed-off-by: Lars Wendler <polynomial-c@gentoo.org> media-sound/mumble/mumble-1.3.4.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
And, FYI, it seems in Mumble 1.4.x it will be always bundled.