From 3f821430f4805fa4e6dcfe02944ab967f8f884a3 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Fri, 19 Feb 2021 13:11:35 +0000
Subject: [PATCH] Make pressure-vessel-wrap responsible for unpacking runtimes

This simplifies the startup scripts a lot: deploy-runtime and
run-in-steamrt no longer need to exist (although I've left behind stub
versions to make it easier to switch between versions during testing),
and we are not trying to do locking from shell script code.

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 depot/_start-container-in-background |  26 +--
 depot/_v2-entry-point                |  26 +--
 depot/deploy-runtime                 | 284 +--------------------------
 depot/run-in-steamrt                 | 276 +-------------------------
 populate-depot.py                    |  23 ++-
 5 files changed, 37 insertions(+), 598 deletions(-)

diff --git a/depot/_start-container-in-background b/depot/_start-container-in-background
index 1f13b5b..15d7217 100755
--- a/depot/_start-container-in-background
+++ b/depot/_start-container-in-background
@@ -12,7 +12,7 @@ deploy=
 force=
 info=
 rendezvous=
-suite=scout
+suite=
 use_timestamp=
 verbose=
 
@@ -64,10 +64,10 @@ usage () {
     echo "Must be run while holding a lock."
     echo
     echo "Options"
-    echo "--deploy=DIR      Deploy to this directory [default=SUITE]."
+    echo "--deploy=DIR      Ignored for backwards compatibility."
     echo "--force           Try even if an earlier attempt failed."
     echo "--session=PATH    Directory representing a session."
-    echo "--suite=SUITE     Run in this runtime [default=scout]."
+    echo "--suite=SUITE     Run in this runtime [default=choose automatically]."
     echo "--use-timestamp   Prepend the timestamp to the log entries."
     echo "--verbose         Be more verbose."
 
@@ -94,7 +94,6 @@ while [ "$#" -gt 0 ]; do
             ;;
 
         (--deploy)
-            deploy="$2"
             shift 2
             ;;
 
@@ -142,13 +141,8 @@ while [ "$#" -gt 0 ]; do
     esac
 done
 
-run_in_steamrt="${here}/run-in-steamrt"
 pressure_vessel="${PRESSURE_VESSEL_PREFIX:-"${here}/pressure-vessel"}"
 
-if [ -z "$deploy" ]; then
-    deploy="$suite"
-fi
-
 if [ -z "$rendezvous" ]; then
     log "A session path is required"
     exit 64
@@ -168,14 +162,14 @@ fi
 rm -f "$rendezvous/fifo"
 mkfifo "$rendezvous/fifo"
 
+if [ -z "${suite}" ]; then
+    run=run
+else
+    run="run-in-${suite}"
+fi
+
 info "Starting pressure-vessel-launcher in background"
-"${run_in_steamrt}" \
-    --arch=amd64,i386 \
-    --deploy \
-    --runtime=com.valvesoftware.SteamRuntime.Platform \
-    --suite="${suite}" \
-    "${deploy}" \
-    -- \
+"${here}/${run}" \
     --filesystem="$pressure_vessel" \
     --filesystem="$rendezvous" \
     --launcher \
diff --git a/depot/_v2-entry-point b/depot/_v2-entry-point
index 6fba045..cc63b77 100755
--- a/depot/_v2-entry-point
+++ b/depot/_v2-entry-point
@@ -8,9 +8,8 @@ me="${me##*/}"
 # This is a prototype and will probably not survive in its current form.
 # Don't rely on it.
 
-deploy=
 is_main=yes
-suite=scout
+suite=
 verbose=
 log_to_file=
 log_dir=${STEAM_LINUX_RUNTIME_LOG_DIR-"${PRESSURE_VESSEL_VARIABLE_DIR-"${here}/var"}"}
@@ -71,10 +70,10 @@ usage () {
     echo "COMMAND [ARGS...] Run this."
     echo
     echo "Options"
-    echo "--deploy=DIR      Deploy to this directory [default=SUITE]."
+    echo "--deploy=DIR      Ignored for backwards compatibility."
     echo "--keep-logs       Do not remove the older logs of this same app id."
     echo "--log-to-file     Log to a file instead of the default stderr."
-    echo "--suite=SUITE     Run in this runtime [default=scout]."
+    echo "--suite=SUITE     Run in this runtime [default=choose automatically]."
     echo "--use-timestamp   Prepend the timestamp to the log entries [default with --log-to-file]."
     echo "--verb=%verb%     Mode to operate in [default=waitforexitandrun]."
     echo "--verbose         Be more verbose."
@@ -103,7 +102,6 @@ while [ "$#" -gt 0 ]; do
             ;;
 
         (--deploy)
-            deploy="$2"
             shift 2
             ;;
 
@@ -164,10 +162,6 @@ while [ "$#" -gt 0 ]; do
     esac
 done
 
-if [ -z "$deploy" ]; then
-    deploy="$suite"
-fi
-
 if [ -n "$log_to_file" ]; then
     app=
     log_filename=
@@ -295,15 +289,15 @@ pressure_vessel="${PRESSURE_VESSEL_PREFIX:-"${here}/pressure-vessel"}"
 # Arguments for pressure-vessel-wrap, currently none
 declare -a container_args=()
 
+if [ -z "${suite}" ]; then
+    run=run
+else
+    run="run-in-${suite}"
+fi
+
 exec_container () {
     # Run as a single command
-    exec "$here/run-in-steamrt" \
-        --arch=amd64,i386 \
-        --deploy \
-        --runtime=com.valvesoftware.SteamRuntime.Platform \
-        --suite="${suite}" \
-        "${deploy}" \
-        -- \
+    exec "${here}/${run}" \
         ${container_args[0]+"${container_args[@]}"} \
         -- \
         "$@" \
diff --git a/depot/deploy-runtime b/depot/deploy-runtime
index 003f901..87e1af4 100755
--- a/depot/deploy-runtime
+++ b/depot/deploy-runtime
@@ -1,284 +1,4 @@
 #!/bin/sh
-
-# deploy-runtime — unpack and deploy a new runtime
-#
-# Copyright © 2019-2021 Collabora Ltd.
-#
-# SPDX-License-Identifier: MIT
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
 set -eu
-
-me="$(readlink -f "$0")"
-here="${me%/*}"
-me="${me##*/}"
-
-arch=amd64,i386
-basename=
-name=
-runtime=com.valvesoftware.SteamRuntime.Platform
-suite=scout
-verbose=
-
-log () {
-    printf '%s\n' "$me: $*" >&2
-}
-
-verbose () {
-    if [ -n "$verbose" ]; then
-        log "$@"
-    fi
-}
-
-usage () {
-    local code="$1"
-    shift
-
-    if [ "$code" -ne 0 ]; then
-        exec >&2
-    fi
-
-    echo "Usage: $me [OPTIONS]"
-    echo
-    echo "Deploy a runtime. For concurrency, must be called with the"
-    echo "current working directory's lock held."
-    echo
-    echo "Options:"
-    echo "--arch ARCH       Use architecture(s) ARCH instead of amd64,i386"
-    echo "--basename NAME   Unpack archive based on NAME instead of RUNTIME-SUITE-ARCH"
-    echo "--name DIR        Unpack into var/DIR, instead of var/SUITE"
-    echo "--runtime RUNTIME Use runtime RUNTIME instead of"
-    echo "                  com.valvesoftware.SteamRuntime.Platform"
-    echo "--suite SUITE     Use suite SUITE instead of scout"
-    exit "$code"
-}
-
-check_ok_for_filename () {
-    case "$2" in
-        (*/*)
-            log "Error: $1 cannot contain a slash"
-            return 1
-            ;;
-
-        (-*)
-            log "Error: $1 cannot start with a dash"
-            return 1
-            ;;
-
-        (.*)
-            log "Error: $1 cannot start with a dot"
-            return 1
-            ;;
-    esac
-}
-
-getopt_temp="help"
-getopt_temp="${getopt_temp},architecture:,arch:"
-getopt_temp="${getopt_temp},basename:"
-getopt_temp="${getopt_temp},name:"
-getopt_temp="${getopt_temp},runtime:"
-getopt_temp="${getopt_temp},suite:"
-getopt_temp="${getopt_temp},verbose"
-
-getopt_temp="$(getopt -o '' --long "$getopt_temp" -n "$me" -- "$@")"
-eval "set -- $getopt_temp"
-unset getopt_temp
-
-while [ "$#" -gt 0 ]; do
-    case "$1" in
-        (--help)
-            usage 0
-            # not reached
-            ;;
-
-        (--architecture | --arch)
-            arch="$2"
-            shift 2
-            ;;
-
-        (--basename)
-            basename="$2"
-            shift 2
-            ;;
-
-        (--name)
-            name="$2"
-            shift 2
-            ;;
-
-        (--runtime)
-            runtime="$2"
-            shift 2
-            ;;
-
-        (--suite)
-            suite="$2"
-            shift 2
-            ;;
-
-        (--verbose)
-            verbose=yes
-            shift
-            ;;
-
-        (--)
-            shift
-            break
-            ;;
-
-        (-*)
-            log "Unknown option: $1"
-            usage 64    # EX_USAGE from sysexits.h
-            # not reached
-            ;;
-
-        (*)
-            break
-            ;;
-    esac
-done
-
-if [ -z "${PRESSURE_VESSEL_VARIABLE_DIR-}" ]; then
-    mkdir -p "${here}/var"
-    export PRESSURE_VESSEL_VARIABLE_DIR="${here}/var"
-fi
-
-# Make it absolute
-case "$PRESSURE_VESSEL_VARIABLE_DIR" in
-    (/*)
-        ;;
-    (*)
-        export PRESSURE_VESSEL_VARIABLE_DIR="${here}/${PRESSURE_VESSEL_VARIABLE_DIR}"
-        ;;
-esac
-
-if [ -z "$basename" ]; then
-    basename="${runtime}-${arch}-${suite}"
-fi
-
-if [ -z "$name" ]; then
-    name="${suite}"
-fi
-
-if [ -n "$verbose" ]; then
-    tar_v=v
-else
-    tar_v=
-fi
-
-check_ok_for_filename ARCH "$arch"
-check_ok_for_filename BASENAME "$basename"
-check_ok_for_filename NAME "$name"
-check_ok_for_filename RUNTIME "$runtime"
-check_ok_for_filename SUITE "$suite"
-
-current_build_id="$(cat "${here}/${basename}-buildid.txt")"
-check_ok_for_filename "build ID" "$current_build_id"
-
-updated=
-
-# Ensure that current_build_id is unpacked
-if [ -d "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}_${current_build_id}/files" ]; then
-    verbose "${name}_${current_build_id}/files already unpacked"
-else
-    rm -fr --one-file-system "${PRESSURE_VESSEL_VARIABLE_DIR}/.${name}_${current_build_id}_unpack-temp"
-    mkdir "${PRESSURE_VESSEL_VARIABLE_DIR}/.${name}_${current_build_id}_unpack-temp"
-    tar \
-        -C "${PRESSURE_VESSEL_VARIABLE_DIR}/.${name}_${current_build_id}_unpack-temp" \
-        -z"${tar_v}"xf \
-        "${here}/${basename}-runtime.tar.gz"
-
-    # If we have the detached debug symbols, we extract them too
-    if [ -f "${here}/${basename}-debug.tar.gz" ]; then
-        tar \
-            -C "${PRESSURE_VESSEL_VARIABLE_DIR}/.${name}_${current_build_id}_unpack-temp/files/lib/debug" \
-            --strip-components=1 \
-            -z"${tar_v}"xf \
-            "${here}/${basename}-debug.tar.gz" \
-            "files/"
-    fi
-
-    mv \
-        "${PRESSURE_VESSEL_VARIABLE_DIR}/.${name}_${current_build_id}_unpack-temp" \
-        "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}_${current_build_id}"
-
-    updated=yes
-fi
-
-if [ -z "$updated" ] \
-    && [ -d "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}/files" ] \
-    && [ -L "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}" ]
-then
-    verbose "${name} is already a symlink to some runtime"
-else
-    rm -fr "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}"
-    ln -fns "${name}_${current_build_id}" "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}"
-fi
-
-if [ -L "${here}/${name}" ]
-then
-    verbose "Removing old symbolic link ${here}/${name}"
-    rm -f "${here}/${name}" || :
-fi
-
-pressure_vessel="${PRESSURE_VESSEL_PREFIX:-"${here}/pressure-vessel"}"
-
-adverb="$pressure_vessel/bin/pressure-vessel-adverb"
-
-# GC old runtimes
-for deployment in \
-    "${here}/${name}"_before_* \
-    "${here}/${name}"_[0-9].* \
-    "${here}/.${name}"_*_unpack-temp \
-    "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}"_[0-9].* \
-    "${PRESSURE_VESSEL_VARIABLE_DIR}/.${name}"_*_unpack-temp \
-; do
-    if ! [ -d "$deployment" ]; then
-        continue
-    fi
-    if [ "x$deployment" = "x${PRESSURE_VESSEL_VARIABLE_DIR}/${name}_${current_build_id}" ]; then
-        continue
-    fi
-    if ! [ -d "$deployment/files" ]; then
-        continue
-    fi
-    if [ -e "$deployment/keep" ]; then
-        continue
-    fi
-    if [ -d "$deployment/files/usr" ]; then
-        lockfile="$deployment/files/usr/.ref"
-    else
-        lockfile="$deployment/files/.ref"
-    fi
-
-    # Ignore any errors here: if we can't undeploy an old runtime
-    # (either because it's in use, or because we can't create the lock
-    # file for some reason, or because rm -fr fails) we waste a bit of
-    # disk space and continue to launch the game. The old runtime will
-    # get deleted eventually, so no harm done.
-    "$adverb" \
-        --create --write \
-        --lock-file "$lockfile" \
-        -- \
-        rm -fr "$deployment" || :
-done
-
-# vim:set sw=4 sts=4 et:
+echo "$0: This script is no longer used" >&2
+exit 2
diff --git a/depot/run-in-steamrt b/depot/run-in-steamrt
index 8000470..87e1af4 100755
--- a/depot/run-in-steamrt
+++ b/depot/run-in-steamrt
@@ -1,276 +1,4 @@
 #!/bin/sh
-
-# run-in-steamrt — undo the Steam Runtime's environment and use
-# a given runtime, assuming the layout of the SteamLinuxRuntime depot.
-#
-# Copyright © 2019-2021 Collabora Ltd.
-#
-# SPDX-License-Identifier: MIT
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
 set -eu
-
-me="$(readlink -f "$0")"
-here="${me%/*}"
-me="${me##*/}"
-NULL=
-
-if [ "x${STEAM_RUNTIME_CONTAINER_TEST-}" = x1 ]; then
-    echo "$me: STEAM_RUNTIME_CONTAINER_TEST=1 is deprecated, please set PRESSURE_VESSEL_WRAP_GUI=1 if you want the 'developer mode' GUI" >&2
-    export PRESSURE_VESSEL_WRAP_GUI=1
-fi
-
-arch=amd64,i386
-basename=
-deploy=
-runtime=com.valvesoftware.SteamRuntime.Platform
-suite=
-name=
-verbose=
-
-log () {
-    printf '%s\n' "$me: $*" >&2
-}
-
-verbose () {
-    if [ -n "$verbose" ]; then
-        log "$@"
-    fi
-}
-
-usage () {
-    local code="$1"
-    shift
-
-    if [ "$code" -ne 0 ]; then
-        exec >&2
-    fi
-
-    echo "Usage:"
-    echo "$me [OPTIONS] NAME [-- [PVW_OPTIONS] [--]] PROGRAM ARGS"
-    echo
-    echo "Run a program in a runtime."
-    echo
-    echo "PVW_OPTIONS, PROGRAM, ARGS are passed to pressure-vessel-wrap."
-    echo "Run 'pressure-vessel-wrap --help' for more details."
-    echo
-    echo "Required arguments"
-    echo "NAME              Use the 'files' subdirectory of NAME for the"
-    echo "                  runtime's content."
-    echo
-    echo "Options (default shown in [])"
-    echo "--arch=ARCH       Use architecture(s) ARCH [amd64,i386]"
-    echo "--basename=BASE   Use filenames based on BASE [RUNTIME-SUITE-ARCH]"
-    echo "--deploy          Automatically deploy new versions from an archive"
-    echo "                  if available, and make NAME a symbolic link"
-    echo "                  to the latest"
-    echo "--runtime RUNTIME Use runtime RUNTIME"
-    echo "                  [com.valvesoftware.SteamRuntime.Platform]"
-    echo "--suite=SUITE     Use suite SUITE [NAME]"
-    exit "$code"
-}
-
-check_ok_for_filename () {
-    case "$2" in
-        (*/*)
-            log "Error: $1 cannot contain a slash"
-            return 1
-            ;;
-
-        (-*)
-            log "Error: $1 cannot start with a dash"
-            return 1
-            ;;
-
-        (.*)
-            log "Error: $1 cannot start with a dot"
-            return 1
-            ;;
-    esac
-}
-
-getopt_temp="help"
-getopt_temp="${getopt_temp},architecture:,arch:"
-getopt_temp="${getopt_temp},basename:"
-getopt_temp="${getopt_temp},deploy"
-getopt_temp="${getopt_temp},runtime:"
-getopt_temp="${getopt_temp},suite:"
-getopt_temp="${getopt_temp},verbose"
-
-getopt_temp="$(getopt -o '' --long "$getopt_temp" -n "$me" -- "$@")"
-eval "set -- $getopt_temp"
-unset getopt_temp
-
-while [ "$#" -gt 0 ]; do
-    case "$1" in
-        (--help)
-            usage 0
-            # not reached
-            ;;
-
-        (--architecture | --arch)
-            arch="$2"
-            shift 2
-            ;;
-
-        (--basename)
-            basename="$2"
-            shift 2
-            ;;
-
-        (--deploy)
-            deploy=yes
-            shift
-            ;;
-
-        (--runtime)
-            runtime="$2"
-            shift 2
-            ;;
-
-        (--suite)
-            suite="$2"
-            shift 2
-            ;;
-
-        (--verbose)
-            verbose=yes
-            shift
-            ;;
-
-        (--)
-            shift
-            break
-            ;;
-
-        (-*)
-            log "Unknown option: $1"
-            usage 64    # EX_USAGE from sysexits.h
-            # not reached
-            ;;
-
-        (*)
-            break
-            ;;
-    esac
-done
-
-if [ "$#" -eq 0 ] || [ "x$1" = x-- ]; then
-    log "Error: A runtime to use is required"
-    usage 64
-fi
-
-name="$1"
-verbose "Runtime name: $name"
-shift
-
-if [ -z "$suite" ]; then
-    suite="${name}"
-fi
-
-if [ -z "$basename" ]; then
-    basename="${runtime}-${arch}-${suite}"
-fi
-
-verbose "Architecture(s): $arch"
-verbose "Basename: $basename"
-verbose "Runtime: $runtime"
-verbose "Suite: $suite"
-verbose "Deploy: ${deploy:-no}"
-
-check_ok_for_filename ARCH "$arch"
-check_ok_for_filename BASENAME "$basename"
-check_ok_for_filename NAME "$name"
-check_ok_for_filename RUNTIME "$runtime"
-check_ok_for_filename SUITE "$suite"
-
-pressure_vessel="${PRESSURE_VESSEL_PREFIX:-"${here}/pressure-vessel"}"
-
-if [ -z "${PRESSURE_VESSEL_VARIABLE_DIR-}" ]; then
-    mkdir -p "${here}/var"
-    export PRESSURE_VESSEL_VARIABLE_DIR="${here}/var"
-fi
-
-# Make it absolute
-case "$PRESSURE_VESSEL_VARIABLE_DIR" in
-    (/*)
-        ;;
-    (*)
-        export PRESSURE_VESSEL_VARIABLE_DIR="${here}/${PRESSURE_VESSEL_VARIABLE_DIR}"
-        ;;
-esac
-
-adverb="$pressure_vessel/bin/pressure-vessel-adverb"
-
-if [ -n "$deploy" ]; then
-    if ! current_build_id="$(cat "${here}/${basename}-buildid.txt")"; then
-        # Ignore: there is no build ID in the depot. We'll just use a
-        # ${name} directory if it exists.
-        :
-    elif [ -d "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}_${current_build_id}/files" ] \
-        && [ -d "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}" ] \
-        && [ -L "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}" ] \
-        && [ "x$(readlink "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}")" = "x${name}_${current_build_id}" ]
-    then
-        # Fast path: skip the locking and the deploy step if the correct runtime
-        # is already in place.
-        :
-    else
-        # Take a lock on this directory while we deploy new runtimes, to avoid
-        # two runs fighting.
-        (
-            unset LD_LIBRARY_PATH
-            unset LD_PRELOAD
-            "$adverb" \
-                --create --write --wait \
-                --lock-file "${PRESSURE_VESSEL_VARIABLE_DIR}/.ref" \
-                -- \
-                "$here/deploy-runtime" \
-                --arch="${arch}" \
-                --basename="${basename}" \
-                --runtime="${runtime}" \
-                --suite="${suite}" \
-                --name="${name}" \
-                ${verbose:+--verbose} \
-                ${NULL+}
-        )
-    fi
-fi
-
-if [ -e /.flatpak-info ] && [ -z "${PRESSURE_VESSEL_COPY_RUNTIME_INTO+set}" ]; then
-    export PRESSURE_VESSEL_COPY_RUNTIME_INTO="$PRESSURE_VESSEL_VARIABLE_DIR"
-fi
-
-if [ -e "${here}/var/copy-runtime" ] && [ -z "${PRESSURE_VESSEL_COPY_RUNTIME_INTO+set}" ]; then
-    export PRESSURE_VESSEL_COPY_RUNTIME_INTO="$PRESSURE_VESSEL_VARIABLE_DIR"
-fi
-
-export PRESSURE_VESSEL_RUNTIME_BASE="${here}"
-
-if [ -d "${PRESSURE_VESSEL_VARIABLE_DIR}/${name}/files" ]; then
-    export PRESSURE_VESSEL_RUNTIME="${PRESSURE_VESSEL_VARIABLE_DIR}/${name}/files"
-else
-    export PRESSURE_VESSEL_RUNTIME="${name}/files"
-fi
-
-exec "$pressure_vessel/bin/pressure-vessel-unruntime" "$@"
-
-# vim:set sw=4 sts=4 et:
+echo "$0: This script is no longer used" >&2
+exit 2
diff --git a/populate-depot.py b/populate-depot.py
index 0a7a4c1..885d024 100755
--- a/populate-depot.py
+++ b/populate-depot.py
@@ -270,14 +270,19 @@ me="$(readlink -f "$0")"
 here="${{me%/*}}"
 me="${{me##*/}}"
 
-exec "$here/run-in-steamrt" \\
-    --arch={escaped_arch} \\
-    --deploy \\
-    --runtime={escaped_runtime} \\
-    --suite={escaped_suite} \\
-    {escaped_name} \\
-    -- \\
-    "$@"
+archive={escaped_runtime}-{escaped_arch}-{escaped_suite}-runtime.tar.gz
+pressure_vessel="${{PRESSURE_VESSEL_PREFIX:-"${{here}}/pressure-vessel"}}"
+
+export PRESSURE_VESSEL_GC_LEGACY_RUNTIMES=1
+unset PRESSURE_VESSEL_RUNTIME
+export PRESSURE_VESSEL_RUNTIME_ARCHIVE="${{archive}}"
+export PRESSURE_VESSEL_RUNTIME_BASE="${{here}}"
+
+if [ -z "${{PRESSURE_VESSEL_VARIABLE_DIR-}}" ]; then
+    export PRESSURE_VESSEL_VARIABLE_DIR="${{here}}/var"
+fi
+
+exec "${{pressure_vessel}}/bin/pressure-vessel-unruntime" "$@"
 '''
 
 
@@ -661,8 +666,6 @@ class Main:
                 writer.write('// Generated file, do not edit\n')
                 words = [
                     '/_v2-entry-point',
-                    '--deploy=' + shlex.quote(runtime.name),
-                    '--suite=' + shlex.quote(runtime.suite),
                     '--verb=%verb%',
                     '--',
                 ]
-- 
GitLab