Skip to content
Snippets Groups Projects
Simon McVittie's avatar
Simon McVittie authored
An entry in LD_PRELOAD may be a bare SONAME like "libMangoHud.so", or a
path containing special tokens like "/usr/$LIB/libMangoHud.so", or a
literal path. Only literal paths are going to physically exist on disk.

For a path containing special tokens, we can still try to remap it,
for example /usr/$LIB/libMangoHud.so to /run/host/usr/$LIB/libMangoHud.so.
This is imperfect (if the host and container glibc disagree on the
meaning of $LIB, then we won't load it correctly), but it's better than
nothing. A subsequent commit will improve the handling of paths that
contain special tokens.

For a bare SONAME, we just pass it through as-is for now, as though it
was a relative path. This is also imperfect, but better than nothing.

Another reason to want to make this change is that it allows us to
unit-test this function: it's difficult to make assertions about the
behaviour of a function that touches areas of the filesystem that are
not under the control of the unit tests.

Signed-off-by: default avatarSimon McVittie <smcv@collabora.com>
c9731195
History

steam-runtime-tools — Steam Runtime integration for the Steam client

The steam-runtime-tools library provides low-level Unix-specific tools and functionality for the Steam client, including the pressure-vessel tool that runs Steam games in containers.

To support multiple architectures (currently only i386 and x86_64 are supported), you will need to build it once for each architecture and install at least the helper tools in /usr/libexec/steam-runtime-tools-0 (the libsteam-runtime-tools-0-helpers package) for every architecture in parallel.

The helper tools are located relative to the shared library, so it's OK to bundle steam-runtime-tools alongside some other stack in this layout:

anything/
    lib/
        x86_64-linux-gnu/
            libsteam-runtime-tools-0.so.0
    libexec/
        steam-runtime-tools-0/
            i386-linux-gnu-*
            x86_64-linux-gnu-*

as long as the program that is linked to libsteam-runtime-tools-0.so.0 can find it (via a RPATH or RUNPATH or by setting the LD_LIBRARY_PATH environment variable).

pressure-vessel — putting Steam in containers

The pressure-vessel/ subdirectory of this project contains the pressure-vessel utilities, which are used by Steam's Steam Linux Runtime compatibility tool to run games in individual game-specific containers. For background on pressure-vessel and SteamLinuxRuntime, please see: