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
-
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.
-
For
scout
andheavy
only: Put together the .deb packages into theLD_LIBRARY_PATH
-based Steam Runtime. This git repository is not relevant for this step. -
Put together the .deb packages into a Flatpak-style container runtime. This is done by flatdeb-steam.
-
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 bypopulate-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
andcapsule-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 fromscout
, bundle them in a directory and useRPATH
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.