Add steam-runtime-tools-bin, make follow-up fixes

Simon McVittie requested to merge wip/smcv/add-system-info into steamrt/scout

With these changes and steam-runtime!6, you can run:

$ cd .../ubuntu12_32
$ steam-runtime/
$ steam-runtime/ steam-runtime/amd64/usr/bin/steam-runtime-system-info --expectations steam-runtime/usr/lib/steamrt/expectations

and get a report on whether the libraries we can see meet our expectations.

Obviously the actual Steam client would not need to run steam-runtime/ or steam-runtime/ because they were run during its startup, it would be able to find steam-runtime-system-info in its PATH rather than having to use its absolute path, and it might prefer to be linked directly to and use the C ABI instead of running the tool and parsing its JSON output.

  • steamrt-container, steamrt-legacy: Add steam-runtime-tools-bin

    This provides the steam-runtime-system-info CLI driver for libsteam-runtime-tools, which is hopefully a useful diagnostic tool.

  • generate-expectations: Be more Python-3.2-friendly

    The default python3 on scout doesn't have FileNotFoundError.

  • abi: Add the concept of libraries whose ABI we don't check

  • abi: Don't check has an undefined symbol th_comment_query_count which appears to be provided by, so in principle it ought to be linked to (have a DT_NEEDED dependency on), but this doesn't seem particularly important for the Steam Runtime's purposes.

  • abi: Don't check is used by debuggers like gdb, and expects the debugger to export some magic symbols. The generic check for shared library functionality in steam-runtime-tools can't be expected to do this; if we want to verify that this library is working as intended, the way to do that would be to test that gdb is working, which we already do in tests/sdk/gdb.t. (A useful reference:

  • abi: Don't check has an undefined reference to glTexCoordPointer that is not satisfied by any of its DT_NEEDED dependencies, and we cannot relink it against libGL because it is a binary-only library from NVIDIA.

  • abi: Combine libc6 symbols files into one big file as intended

Edited by Simon McVittie

Merge request reports