Skip to content

populate-depot: Write out mtree(5) manifests for unpacked directories

Simon McVittie requested to merge wip/t27130 into master
  • tests: Always generate the tool manifest

  • populate-depot: Write out mtree(5) manifests for unpacked directories

    This can be used to reconstitute the metadata or permissions of an unpacked directory, even if they are lost in transmission through the Steam CDN (which assumes all files are executable and does not track modification dates).

  • populate-depot: Log files whose names differ only by case in manifest

    If any such files exist, they will need special treatment, because the Steam CDN assumes Windows filesystem semantics (case-insensitive, case-preserving).

  • populate-depot: Check whether filenames are Windows-friendly

    Anything that isn't Unicode or contains reserved characters is not going to be distributable through Steam's CDN. For the moment we just check for this and don't do anything about it, but pressure-vessel changes that are currently under development will let us provide these files with more Windows-friendly aliases.

  • populate-depot: Allow unpacking runtimes into a versioned directory

    This allows multiple versions to coexist for local testing, and is also a step towards avoiding the double disk space consumption of deploying the runtime from an archive.

    The runtime is now unpacked into a versioned directory by default: the Steam CDN now knows how to handle this efficiently, moving unmodified files from one runtime to the next. Using a versioned name ensures that any locally-added files applied by a user will stay where they're put instead of propagating into updated runtimes.

    The versioned directory name contains _platform_, for example soldier_platform_0.20210428.0, both for symmetry with the SDK and so that it will not be deleted by pv-wrap --gc-legacy-runtimes.

  • populate-depot: Add support for omitting archives from the depot

    This can be used to avoid the double disk space consumption of combining the runtime archive with the deployment.

  • CI: Expand test coverage to include unpacked runtimes

    These are what we'll use after T27130 lands in pressure-vessel.


Part of T27130.

To test:

  • make check (you might want to set IMAGES_SSH_HOST and IMAGES_SSH_PATH so that you get the latest builds
  • replace your SteamLinuxRuntime with depots/test-scout-unpacked
  • replace your SteamLinuxRuntime_soldier with depots/test-soldier-unpacked
  • replace your SteamLinuxRuntime/pressure-vessel and SteamLinuxRuntime_soldier/pressure-vessel with steam-runtime-tools!295 (merged)
Edited by Simon McVittie

Merge request reports