Steam Runtime 1 'scout'
=======================

scout is the traditional Steam Runtime, which has been used for the Steam
client and all games since the initial public release of Steam for Linux.

This has three uses:

* It's the basis for the traditional `LD_LIBRARY_PATH`-based Steam Runtime,
    `~/.steam/steam/ubuntu12_32/steam-runtime`, described here:
    <https://github.com/ValveSoftware/steam-runtime/blob/master/doc/possible-designs.md#2018-ld_library_path-scout-runtime>

* There's an experimental version of it as a container,
    known as *Steam Linux Runtime* or *Steam container runtime*.
    It was originally announced here:
    <https://steamcommunity.com/app/221410/discussions/0/1638675549018366706/>
    and is described in more detail here:
    <https://github.com/ValveSoftware/steam-runtime/blob/master/doc/possible-designs.md#2018-ld_library_path-scout-runtime--2019-pressure-vessel-scout-platform>
    This is a separate Steam depot, like games or Proton. The third-party
    SteamDB site tracks it as
    <https://steamdb.info/app/1070560/depots/>.

* It supplies the build environment and bundled libraries for the
    `pressure-vessel` tools that start the Steam Linux Runtime
    container. This is because we need the dependencies of
    `pressure-vessel` to be as old as possible, so that they work on
    as many systems as possible.

See <https://github.com/ValveSoftware/steam-runtime> for more information
about the Steam Runtime.

How this fits into the overall Steam Runtime project
----------------------------------------------------

1. Build .deb packages for the content of the Steam Runtime.
    `steamrt` is one of these packages.

2. For `scout` and `heavy` only: Put together the .deb packages into the
    `LD_LIBRARY_PATH`-based Steam Runtime.
    This step is done by the scripts in
    [steam-runtime](https://github.com/ValveSoftware/steam-runtime),
    but the choice of the actual packages to include is mostly delegated to
    `steamrt`.

3. Put together the .deb packages into a Flatpak-style container runtime.
    This step is done by
    [flatdeb-steam](https://gitlab.steamos.cloud/steamrt/flatdeb-steam),
    but the choice of the actual packages to include is mostly delegated to
    `steamrt`.

4. Turn the container runtime into a Steampipe depot.  This is controlled by
    [steamlinuxruntime](https://gitlab.steamos.cloud/steamrt/steamlinuxruntime).

Where can I get it?
-------------------

The `LD_LIBRARY_PATH`-based Steam Runtime is automatically downloaded as
part of Steam.

For the container runtime, select the "Steam Linux Runtime" compatibility
tool (app ID 1070560). It will be downloaded to your Steam library as
`common/SteamLinuxRuntime`.

If you need more,
<https://repo.steampowered.com/steamrt-images-scout/snapshots/> contains
several versions of scout. Each version's subdirectory contains:

* source code in the `sources` subdirectory
* container images that can run games
  (`*.Platform-*-runtime.tar.gz`, which can also be converted into Flatpak
  runtimes)
* container images that can run games with debugging tools available
  (`*.Sdk-*-runtime.tar.gz` and `*.Sdk-*-debug.tar.gz`,
  which can also be converted into Flatpak runtimes)
* container images for compiling your own software
  (`*.Sdk-*-sysroot.tar.gz`, and `*.Sdk-*-sysroot.Dockerfile`, which can
  also be converted into a Docker image)

What's in this repository?
--------------------------

This repository mostly provides "metapackages". This is Debian jargon for
a package that is (almost) empty, and pulls in desired packages by having
dependencies on them.

In the Steam Runtime, we are only interested in `amd64` (Debian's name for
64-bit PCs, also known as `x86_64`) and `i386` (Debian's name for 32-bit
PCs, also known as `i586`, `i686` or IA-32).

The traditional `LD_LIBRARY_PATH` runtime consists of `amd64` and `i386`
versions of:

* `steamrt-libs`
* `steamrt-legacy`

and their dependencies.

Similarly, the Platform container consists of:

* `steamrt-container`
* `steamrt-container-host-compat`
* `steamrt-libs`

The SDK container used for debugging and compilation is based on the
Platform, and adds:

* `steamrt-dev`
* `steamrt-libdevel`
* `steamrt-libdevel-non-multiarch`
* `steamrt-libdebug`
* `steamrt-libdebug-non-multiarch`

The i386 containers only include i386 packages. The `LD_LIBRARY_PATH`
runtime includes both amd64 and i386.

The Platform and SDK containers are built in `amd64,i386` and
`i386` versions, where the `amd64,i386` runtime contains both,
and the `i386` runtime is purely 32-bit.

Most packages are installed for both word sizes in parallel,
except for `steamrt-container`, `steamrt-dev` and `*-non-multiarch`,
which are only installed for the primary architecture (so the
`amd64,i386` container installs those for `amd64`).

Developing software that runs in scout
--------------------------------------

A SDK environment is available as a Docker image.
Please see <https://gitlab.steamos.cloud/steamrt/scout/sdk> and
<https://github.com/ValveSoftware/steam-runtime>.
