Skip to content
Snippets Groups Projects
Simon McVittie's avatar
Simon McVittie authored
Some development libraries follow this pattern, and we already delete
those without needing to use libelf to load the library and find out
its SONAME:

    libfcitx-config.so -> libfcitx-config.so.4
    libfcitx-config.so.4 -> libfcitx-config.so.4.1
    libfcitx-config.so.4.1

However, other libraries follow this pattern, which results in the code
that uses libelf to find the SONAME being the only way we can figure out
that the .so symlink needs removing:

    libdbus-glib-1.so -> libdbus-glib-1.so.2.2.2
    libdbus-glib-1.so.2 -> libdbus-glib-1.so.2.2.2
    libdbus-glib-1.so.2.2.2

To avoid relying on the libelf code path, which is surprisingly slow
when run with a cold disk cache, we can do one scan through the
directory removing regular files and runtime symlinks, and a second
scan through the directory removing development symlinks that have
become dangling as a result.

Signed-off-by: default avatarSimon McVittie <smcv@collabora.com>
640fc1af
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: