diff --git a/populate-depot.py b/populate-depot.py
index 5835be4e774cd625b2aa98465a36cc552a95efa8..048ba9d106e4e8f4836216185665cc13ba42e939 100755
--- a/populate-depot.py
+++ b/populate-depot.py
@@ -46,7 +46,6 @@ from typing import (
     List,
     Optional,
     Sequence,
-    Tuple,
 )
 
 from debian.deb822 import (
@@ -282,6 +281,38 @@ exec "$here/run-in-steamrt" \\
 '''
 
 
+class ComponentVersion:
+    def __init__(self, name: str = '') -> None:
+        self.name = name
+        self.version = ''
+        self.runtime = ''
+        self.runtime_version = ''
+        self.comment = ''
+
+    def __str__(self) -> str:
+        ret = '{} version {!r}'.format(self.name, self.version)
+
+        if self.runtime or self.runtime_version:
+            ret = ret + ' (from {} version {})'.format(
+                self.runtime or '(unknown runtime)',
+                self.runtime_version or '(unknown)',
+            )
+
+        return ret
+
+    def to_tsv(self) -> str:
+        if self.comment:
+            comment = '# ' + self.comment
+        else:
+            comment = ''
+
+        return '\t'.join((
+            self.name, self.version,
+            self.runtime, self.runtime_version,
+            comment,
+        )) + '\n'
+
+
 class Main:
     def __init__(
         self,
@@ -382,15 +413,20 @@ class Main:
 
             self.runtimes.append(self.new_runtime(name, details))
 
-        self.versions = []      # type: List[Tuple[str, str, str]]
+        self.versions = []      # type: List[ComponentVersion]
 
-    def new_runtime(self, name: str, details: Dict[str, Any]) -> Runtime:
+    def new_runtime(
+        self,
+        name: str,
+        details: Dict[str, Any],
+        default_suite: str = '',
+    ) -> Runtime:
         return Runtime.from_details(
             name,
             details,
             default_architecture=self.default_architecture,
             default_include_sdk=self.default_include_sdk,
-            default_suite=self.default_suite,
+            default_suite=default_suite or self.default_suite,
             default_version=self.default_version,
             images_uri=self.images_uri,
             ssh_host=self.ssh_host,
@@ -398,24 +434,29 @@ class Main:
         )
 
     def run(self) -> None:
-        comment = ''
+        pv_version = ComponentVersion('pressure-vessel')
 
         for runtime in self.runtimes:
             if runtime.name == self.pressure_vessel:
                 logger.info(
                     'Downloading pressure-vessel from %s', runtime.name)
                 pressure_vessel_runtime = runtime
-                self.download_pressure_vessel(pressure_vessel_runtime)
-                comment = f'from {runtime.name}'
+                pv_version.comment = self.download_pressure_vessel(
+                    pressure_vessel_runtime
+                )
                 break
         else:
             if self.pressure_vessel.startswith('{'):
                 logger.info(
                     'Downloading pressure-vessel using JSON from command-line')
                 pressure_vessel_runtime = self.new_runtime(
-                    'scout', json.loads(self.pressure_vessel),
+                    'scout',
+                    json.loads(self.pressure_vessel),
+                    default_suite='scout',
+                )
+                pv_version.comment = self.download_pressure_vessel(
+                    pressure_vessel_runtime
                 )
-                self.download_pressure_vessel(pressure_vessel_runtime)
             elif (
                 os.path.isdir(self.pressure_vessel)
                 or (
@@ -430,30 +471,34 @@ class Main:
                 self.use_local_pressure_vessel(self.pressure_vessel)
                 pressure_vessel_runtime = self.new_runtime(
                     'scout', {'path': self.pressure_vessel},
+                    default_suite='local',
                 )
-                comment = 'from local file'
+                pv_version.comment = 'from local file'
             elif os.path.isfile(self.pressure_vessel):
                 logger.info(
                     'Downloading pressure-vessel using JSON from %r',
                     self.pressure_vessel)
                 with open(self.pressure_vessel, 'rb') as reader:
                     details = json.load(reader)
-                pressure_vessel_runtime = self.new_runtime('scout', details)
-                self.download_pressure_vessel(pressure_vessel_runtime)
+                pressure_vessel_runtime = self.new_runtime(
+                    'scout',
+                    details,
+                    default_suite='scout',
+                )
+                pv_version.comment = self.download_pressure_vessel(
+                    pressure_vessel_runtime
+                )
             else:
                 logger.info(
                     'Assuming %r is a suite containing pressure-vessel',
                     self.pressure_vessel)
                 pressure_vessel_runtime = self.new_runtime(
                     self.pressure_vessel, {},
+                    default_suite=self.pressure_vessel,
+                )
+                pv_version.comment = self.download_pressure_vessel(
+                    pressure_vessel_runtime
                 )
-                self.download_pressure_vessel(pressure_vessel_runtime)
-                comment = 'from {self.pressure_vessel}'
-
-        if pressure_vessel_runtime.pinned_version is not None:
-            comment += f' version {pressure_vessel_runtime.pinned_version}'
-
-        version = 'unknown'
 
         for path in ('metadata/VERSION.txt', 'sources/VERSION.txt'):
             full = os.path.join(self.depot, 'pressure-vessel', path)
@@ -463,7 +508,11 @@ class Main:
 
                 break
 
-        self.versions.append(('pressure-vessel', version, comment))
+        pv_version.runtime = pressure_vessel_runtime.suite or ''
+        pv_version.runtime_version = (
+            pressure_vessel_runtime.pinned_version or ''
+        )
+        self.versions.append(pv_version)
 
         if self.unpack_ld_library_path:
             logger.info(
@@ -496,6 +545,8 @@ class Main:
                     runtime)
                 self.download_runtime(runtime)
 
+            component_version = ComponentVersion(runtime.name)
+
             version = runtime.pinned_version
             comment = ', '.join(sorted(runtime.runtime_files))
 
@@ -503,7 +554,11 @@ class Main:
                 version = runtime.version
                 comment += ' (from local build)'
 
-            self.versions.append((runtime.name, version, comment))
+            component_version.version = version
+            component_version.runtime = runtime.suite
+            component_version.runtime_version = version
+            component_version.comment = comment
+            self.versions.append(component_version)
 
             if self.unpack_runtimes:
                 dest = os.path.join(self.depot, runtime.name)
@@ -663,23 +718,19 @@ class Main:
         except (OSError, subprocess.SubprocessError):
             version = 'unknown'
 
-        self.versions.append(
-            ('SteamLinuxRuntime', version, 'Entry point scripts, etc.')
-        )
+        component_version = ComponentVersion('SteamLinuxRuntime')
+        component_version.version = version
+        component_version.comment = 'Entry point scripts, etc.'
+        self.versions.append(component_version)
 
         with open(os.path.join(self.depot, 'VERSIONS.txt'), 'w') as writer:
-            writer.write('#Name\tVersion\tComment\n')
-
-            for triple in sorted(self.versions):
-                name, version, comment = triple
-
-                if comment:
-                    comment = '# ' + comment
+            writer.write(
+                '#Name\tVersion\t\tRuntime\tRuntime_Version\tComment\n'
+            )
 
-                logger.info(
-                    'Component version: %s version %s',
-                    name, version)
-                writer.write(f'{name}\t{version}\t{comment}\n')
+            for entry in sorted(self.versions, key=lambda v: v.to_tsv()):
+                logger.info('Component version: %s', entry)
+                writer.write(entry.to_tsv())
 
     def use_local_pressure_vessel(self, path: str = '.') -> None:
         pv_dir = os.path.join(self.depot, 'pressure-vessel')
@@ -694,7 +745,7 @@ class Main:
         logger.info('%r', argv)
         subprocess.run(argv, check=True)
 
-    def download_pressure_vessel(self, runtime: Runtime) -> None:
+    def download_pressure_vessel(self, runtime: Runtime) -> str:
         filename = 'pressure-vessel-bin.tar.gz'
         runtime.pin_version(self.opener)
 
@@ -714,6 +765,8 @@ class Main:
                 check=True,
             )
 
+        return filename
+
     def use_local_runtime(self, runtime: Runtime) -> None:
         assert runtime.path