Skip to content

populate-depot: Fix and test layered runtime

Simon McVittie requested to merge wip/t18668 into master
  • !57 (merged), !58 (merged), !59 (merged) (should all be merged before this probably)

  • scout-on-soldier: Reset STEAM_ZENITY instead of unsetting, if available

    Recent builds of soldier have zenity installed. This lets us show the same progress dialog we would show normally, but from within the container.

  • scout-on-soldier: Always do setup in var/

    This means that ${here}/steam-runtime can safely be a symlink to a copy of scout in a read-only location.

  • scout-on-soldier: Add a way to use an alternative location for scout

    We can't use STEAM_RUNTIME for this because games use it as an indication that they are running inside the Steam Runtime, and because pressure-vessel-wrap removes it from the environment when leaving the "outer" scout environment behind.

  • scout-on-soldier: Redo pinning if we swap runtimes

    For the normal scout runtime this happens automatically, because the whole steam-runtime/ directory is deleted and replaced, but for the scout-on-soldier setup we need to manage this ourselves.

  • scout-on-soldier: Add more debug info

  • scout-on-soldier: Do our own pinning instead of running setup.sh

    Because scout and soldier are relatively fixed targets, and we know that soldier is strictly newer than scout, we don't need to go to all this effort to figure out which libraries are newer if they exist in both scout and soldier: the answer is always "the one in soldier".

    This means the only library we need to pin is the single library that is hard-coded to be pinned, namely libcurl.so.4, for which the ABI broke between scout and soldier.

  • scout-on-soldier: Make the scout runtime's scripts/ available too

    These are unlikely to be used in practice, but steam-runtime-tools considers absence of scripts/ to indicate a malformed LD_LIBRARY_PATH runtime.

  • tests: Print stderr before checking exit status

    If the command fails, we probably want to see why before we fail the test.

  • tests: Get debug messages from s-r-s-i

    If s-r-s-i doesn't like our runtime, we'll want to know what it was thinking.

  • tests: Pretty-print s-r-s-i output before analyzing it

    It's easier to understand test failures if we can see the output in a comprehensible format.

  • tests: Add a hint for how to run this test manually

    Debugging locally has a better cycle time than running the test in various increasingly-old virtual machines.

  • tests: Add test coverage for scout layered on soldier

    When building a soldier runtime, check that layering scout onto it also works as intended. This test detected several bugs that are fixed in prior commits.

Edited by Simon McVittie

Merge request reports