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` 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](https://gitlab.steamos.cloud/steamrt/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](https://gitlab.steamos.cloud/steamrt/flatdeb-steam)
    by assembling .deb packages into a complete runtime environment.

    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](https://gitlab.steamos.cloud/steamrt/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.
