Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 801961 - media-sound/mumble-1.3.4[rnnoise] fails to build when media-libs/rnnoise is emerged: too few arguments to function ‘DenoiseState* rnnoise_create(RNNModel*)’
Summary: media-sound/mumble-1.3.4[rnnoise] fails to build when media-libs/rnnoise is e...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Lars Wendler (Polynomial-C) (RETIRED)
URL:
Whiteboard:
Keywords: PullRequest
Depends on:
Blocks:
 
Reported: 2021-07-12 22:30 UTC by WGH
Modified: 2021-08-16 09:44 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log (build.log,216.92 KB, text/x-log)
2021-07-12 22:32 UTC, WGH
Details

Note You need to log in before you can comment on or make changes to this bug.
Description WGH 2021-07-12 22:30:51 UTC
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"
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-07-12 22:31:20 UTC
Could you attach the build.log too please?
Comment 2 WGH 2021-07-12 22:32:49 UTC
Created attachment 723643 [details]
build.log
Comment 3 Martin Rapavý 2021-08-15 16:29:28 UTC
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.
Comment 4 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2021-08-16 07:41:35 UTC
@WGH: May I ask why you closed the mumble issue about system-rnnoise? IMHO they should still fix this.
Comment 5 WGH 2021-08-16 08:01:00 UTC
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 :)
Comment 6 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2021-08-16 08:50:15 UTC
(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 :)
Comment 7 WGH 2021-08-16 09:10:23 UTC
> > 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.
Comment 8 WGH 2021-08-16 09:11:20 UTC
https://github.com/mumble-voip/mumble/pull/4850
(sorry for double-posting)
Comment 9 Larry the Git Cow gentoo-dev 2021-08-16 09:33:44 UTC
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(-)
Comment 10 WGH 2021-08-16 09:44:26 UTC
And, FYI, it seems in Mumble 1.4.x it will be always bundled.