Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 832952 - media-video/wireplumber-0.4.8 fails to start because of missing shared library
Summary: media-video/wireplumber-0.4.8 fails to start because of missing shared library
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Niklāvs Koļesņikovs
URL: https://gitlab.freedesktop.org/pipewi...
Whiteboard:
Keywords: PullRequest
Depends on:
Blocks:
 
Reported: 2022-02-08 22:14 UTC by Pavel Kalugin
Modified: 2023-12-16 10:27 UTC (History)
3 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pavel Kalugin 2022-02-08 22:14:40 UTC
Failed to open module /usr/lib64/wireplumber-0.4/libwireplumber-module-route-settings-api: /usr/lib64/wireplumber-0.4/libwireplumber-module-route-settings-api.so: cannot open shared object file: No such file or directory
Comment 1 Niklāvs Koļesņikovs 2022-02-09 08:44:09 UTC
It's not actually missing a shared library. Instead you have an old config/script file somewhere on your system which references a module which is no longer present since WirePlumber 0.4.8.

Most obvious places to look for the stale file are these two:
* /etc/wireplumber (does not exist by default right now)
* $HOME/.config/wireplumber (also does not exist by default)

I'll talk to Sam later about having a way to have config_protect working for at least /etc/wireplumber, so that there's one less way for config/scripts to go stale.

Finally thank you for bringing the issue to the forefront, so that it can finally be resolved. And ideally the same solution will be taken with PipeWire, too, which is at the risk of exactly the same general problem of /etc/pipewire not being config_protect'ed.
Comment 2 Pavel Kalugin 2022-02-09 10:51:15 UTC
Yes, the problem was that I've copied `/usr/share/wireplumber` to `~/.config/wireplumber` (because it makes sense, `wireplumber` is started as user, so the config should be modifiable by user). `/usr/share/wireplumber` has been updated, while `~/.config/wireplumber` hasn't. After removing `~/.config/wireplumber` the problem has disappeared.
Is there any chance portage can manage user configs?
Comment 3 Niklāvs Koļesņikovs 2022-02-09 11:31:17 UTC
Not right now and probably it would never be fully reliable - a user that's not logged in may have a missing or encrypted home directory but that's only the most obvious issue. Another one is that currently config_protect works by intercepting overwriting of config files, so a trivial implementation would duplicate those config files in every user's wireplumber config directory.

With that said, Portage could probably be made capable of providing config_protect for <user_home>/.config/{piewire,wireplumber}, if someone wrote it. But it might not be as easy as it seems, because technically $HOME/.config is itself just a default location and there could be a user specific environment variable override that sets an entirely different path, and covering all the possible ways that could be set is probably unrealistic.

Thankfully this may not be that big of a deal in the future, because upstream is working towards splitting scripts from configuration for the most common use cases. Overriding would still work as before and may be necessary for some things but at least the more typical things people want to adjust would be in files containing only config data and hopefully will be robust enough to not break if there's an outdated file somewhere.
Comment 4 Pavel Kalugin 2022-02-09 13:02:06 UTC
I've got a crazy (but probably not too related to this bug) idea: "patch" FUSE filesystem, which contains all files from given source with given patch applied to them. I wonder if that's already implemented somewhere...
Comment 5 Larry the Git Cow gentoo-dev 2022-02-12 05:17:06 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=786a2d71d3bd51fc39dc73c548b7c9d7fa45096e

commit 786a2d71d3bd51fc39dc73c548b7c9d7fa45096e
Author:     Niklāvs Koļesņikovs <89q1r14hd@relay.firefox.com>
AuthorDate: 2022-02-11 19:41:30 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-02-12 05:16:52 +0000

    media-video/wireplumber: backport a fix and enable config protection
    
    WirePlumber 0.4.8 contains a config/script change that, if not present
    in the user modified files, will cause startup failure. This commit
    backports an upstream fix to prevent a crash in addition to also
    implementing a solution to at least keep /etc/wireplumber up to date
    though the usual config_protect mechanism. This is needed because while
    the particular issue has been addressed, it does not solve the general
    problem with there potentially being outdated files in /etc/wireplumber
    directory. The same is true for $HOME/.config/wireplumber, too, however
    there's no reasonable way to help users who decide to copy config files
    to there and then never update them against newer versions.
    
    Closes: https://bugs.gentoo.org/832952
    
    Signed-off-by: Niklāvs Koļesņikovs <89q1r14hd@relay.firefox.com>
    Signed-off-by: Sam James <sam@gentoo.org>

 ...eam-do-not-crash-if-config.properties-is-.patch | 27 ++++++++++++++++++++++
 ...0.4.7-r1.ebuild => wireplumber-0.4.7-r2.ebuild} | 11 +++++++++
 ...er-0.4.8.ebuild => wireplumber-0.4.8-r1.ebuild} | 15 ++++++++++++
 media-video/wireplumber/wireplumber-9999.ebuild    | 11 +++++++++
 4 files changed, 64 insertions(+)
Comment 6 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2023-12-16 10:27:40 UTC
commit fa40a68813842842cae00dac90450cf3e1b979ce
Author: James Calligeros <jcalligeros99@gmail.com>
Date:   Sun Dec 10 10:59:53 2023 +1000

    media-video/wireplumber: don't copy default configs to /etc/

    Wireplumber does not tolerate having its default config split
    across /etc/ and /usr/share/. It has also recently acquired features
    which allow system integrators and other interested third parties
    to ship customised configuration packages to better integrate
    oddball hardware, such as Apple Silicon Macs. These configs naturally
    live in /usr/share/, since they are not user-created. As /etc/ takes
    precedence over /usr/share/, having the OOTB config there prevents
    these custom configs from being loaded properly.

    This commit removes the step which copies the OOTB config to /etc/,
    which matches the behaviour expected (and now arguably required)
    upstream. Users are responsible for adding their own overrides to
    /etc/ should they so choose.

    Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
    Closes: https://github.com/gentoo/gentoo/pull/34207
    Signed-off-by: Sam James <sam@gentoo.org>