Skip to content
Snippets Groups Projects
Ludovico de Nittis's avatar
Ludovico de Nittis authored
When we need to run the main executable for a game, Steam usually
appends to the LD_PRELOAD the 32-bit and 64-bit version of
gameoverlayrenderer.so

However this leads to multiple warnings in the pressure-vessel log
because ld.so will complain that it was not able to preload the 32-bit
(or 64-bit) version of the library that was requested.

To prevent that, we remove the game overlay library from LD_PRELOAD and
we let pressure-vessel put it back when necessary, with the adjusted
path that avoids preloading warnings.

Signed-off-by: default avatarLudovico de Nittis <ludovico.denittis@collabora.com>
58ad7f29
History

SteamLinuxRuntime depot

This repository contains entry-point scripts and other integration glue to pull together the Steam container runtime into a depot, ready for deployment via Steampipe onto users' systems.

Latest development: https://gitlab.steamos.cloud/steamrt/steamlinuxruntime

How this fits into the overall Steam Runtime project

  1. Build .deb packages for the content of the Steam Runtime, from the source code in e.g. https://repo.steampowered.com/steamrt-images-scout/snapshots/latest-container-runtime-depot/sources/. This is not part of this git repository.

  2. For scout and heavy only: Put together the .deb packages into the LD_LIBRARY_PATH-based Steam Runtime. This git repository is not relevant for this step.

  3. Put together the .deb packages into a Flatpak-style container runtime. This is done by flatdeb-steam.

  4. To make the runtime suitable for running Steam games and Proton on (almost) any GNU/Linux machine, turn it into a Steampipe depot with the runtime itself, the pressure-vessel container runtime tool, all of the pressure-vessel tool's dependencies except glibc, and some scripts and Steam manifests to hold the whole thing together. That's what this git repository is for.

What goes into the depot

In a complete depot build, the components are listed in VERSIONS.txt, which is generated as a side-effect of running populate-depot.py.

  • SteamLinuxRuntime: Entry-point scripts, from this repository.

    See depot/ for most of the source files. A few files are autogenerated by populate-depot.py instead.

  • scout, soldier, etc.: A Steam Runtime build, normally *-runtime.tar.gz and *-buildid.txt.

    This is produced by flatdeb-steam by assembling .deb packages into a complete runtime environment.

    Technically you can have more than one runtime in a depot and use pressure-vessel-test-ui to switch between them, but the official releases only contain one runtime each.

    These are downloaded by populate-depot.py during build.

  • presure-vessel: A bundled, relocatable pressure-vessel binary build.

    This is produced by the pressure-vessel/build-relocatable-install.py script in steam-runtime-tools, which collects up the following packages from a Steam Runtime 1 'scout' SDK build:

    • pressure-vessel itself
    • Its executable dependencies, especially bwrap and capsule-capture-libs
    • Some diagnostic tools
    • Their dependency libraries (all except glibc)

    and arranges them in the pressure-vessel/ directory.

    These are special because they run directly on the host system, without either a container or the complete LD_LIBRARY_PATH Steam Runtime. We take these libraries from scout, bundle them in a directory and use RPATH to set the search path. This is done to ensure that their glibc dependency is as old as possible (so that they will run on any GNU/Linux machine that is capable of running Steam itself) and everything else that is required is included.

    This is downloaded by populate-depot.py during build.