steam-runtime icon indicating copy to clipboard operation
steam-runtime copied to clipboard

the steam runtime uses system /usr/share directories (x11/alsa...) and not its directories

Open sylware opened this issue 8 years ago • 3 comments

On host system where the "share" directory is not in /usr/share (for instance /share or /usr/local/share), the steam runtime will look into /usr/shared and crash because non existant. The steam runtime should have its libs looking in its "share" steam runtime, or, avoid bundling "share" dirs and perform the necessary checks on host system /usr/share. I found out this thanks to some corner cases of the steam installer/client, but mainly with dota2 which crashes because the loaded steam runtime alsa lib cannot find /usr/share/alsa files, and it's the same for /usr/share/X11.

sylware avatar Aug 14 '17 18:08 sylware

since we cannot override the filesystem location of local configuration files of the steam provided libalsas, libalsa must not be distributed in order to use the system local libalsa which will use the system local configuration. Or libalsa should be patched in order to allow configuration files location override with a environment variable.

sylware avatar Oct 24 '18 12:10 sylware

On host system where the "share" directory is not in /usr/share (for instance /share or /usr/local/share)

What host system does that?

since we cannot override the filesystem location of local configuration files of the steam provided libalsas

The approach taken by some other libraries in the Steam Runtime (although not yet libasound2) is: if the environment variable STEAM_RUNTIME is set to an absolute path, look in $STEAM_RUNTIME/$arch/usr/share, where $arch is either amd64 or i386.

it's the same for /usr/share/X11

What effect does this have? Do Steam or games crash, or does some feature not work?

smcv avatar Jan 11 '19 16:01 smcv

For X11, the problems are the format and location of the xkb layout definition files.

For alsa, easy: no sound or configuration mismatch.

The only right way to "fix" this seems to properly libdl the system libasound (remove the distribution of libasound).

Do the same with x11 client libs: do libdl xcb system libs, and libxkbcommon-x11 for a client xkb state machine (which will know where are the system xbk layout definition files). Same, it means removing the distribution of x11 client libs.

Praise wayland where the code is now static and there is no 493847328 libs, except for the xbk client side state-machine (libxkbcommon withouth the -x11 suffix).

sylware avatar Apr 26 '23 15:04 sylware