Skip to content

Generate a list of SONAMEs defining the Steam Runtime

Simon McVittie requested to merge wip/t16026 into steamrt/scout

https://phabricator.collabora.com/T16026 https://phabricator.collabora.com/T16045, which is a reduced version of T16026 that is going to be less work.

  • d/copyright: Update

  • steamrt-dev: Explicitly depend on steamrt-libs

    Otherwise we can't necessarily guarantee that the SDK has everything that the Platform does, or everything that the LD_LIBRARY_PATH runtime does.

  • Generate dependencies of steamrt-libs from a YAML file

    This partially decouples the definition of what's in the Steam Runtime from the package names: what actually matters for our ABI is their SONAMEs. The Debian package name can be machine-generated from the SONAME in most cases. Where it can't, we can list exceptions.

    I'm using YAML as the source format here because it's more human-writable than JSON, and we can easily add YAML-processing tools to the SDK image: JSON has some formatting rules that make it frustrating to write by hand.

    However, in case we need to ship a version of steam-runtime-abi.yaml that needs to be processed in the Steam Runtime or Platform environment, the steamrt build translates it into JSON. This can be processed by numerous C libraries (including json-c, json-glib and cJSON) or by the Python standard library.

  • tests: Assert that the SDK contains all the libraries we want

    This acts as an assertion that the SDK has all the same ABI as the LD_LIBRARY_PATH Steam Runtime.

  • Add a script to detect unexpected libraries in LD_LIBRARY_PATH runtime

    This effectively asserts that we have not added libraries to the traditional LD_LIBRARY_PATH Steam Runtime without also adding them to the machine-readable ABI definition.

  • abi: Encode the supported architectures

  • steamrt_abi: Store libraries in a map from SONAME to library

  • Add a script to generate symbols files for steam-runtime-tools

  • Add initial symbols files

    These are committed to git so that we can handle updated and newly-added libraries as something that goes through code review if desired: editing these files effectively means we are expanding the ABI of the Steam Runtime.

  • steamrt-libs: Add libwaffle-1.so.0

  • steamrt-libs: Add waffle-utils-multiarch

    Installing this for both amd64 and i386 is useful as a way to probe for working or non-working GL stacks with various window-system interfaces and rendering interfaces.

    Also add the non-architecture-prefixed version to steamrt-container, for better command-line convenience.

  • steamrt-libs: Add libsteam-runtime-tools-0.so.0

    This Steam-specific library provides various bits of system information. It should not be used by games and applications (yet).

  • Install SteamRT ABI descriptions in the steamrt-libs binary package

    This will let us use them later to check that the libraries we have (including any LD_LIBRARY_PATH or LD_PRELOAD overrides) are binary-compatible with the libraries that games rely on.

  • Update changelog

  • Add json-glib, steam-runtime-tools, waffle to ABI expectations

    This is the result of running "make maintainer-update-expectations" in a scout SDK container.

Edited by Simon McVittie

Merge request reports