Consider compiling relocatable pressure-vessel on heavy
This is a low priority enhancement but seemed worth putting on the roadmap.
In the container-runtime future, pressure-vessel is one of the decreasing number of packages that have to be able to run directly on the host system - we run it on the host, with its own artisanally-bundled library stack, so that we can enter a container where we have total control over the library stack and have a better idea of what is going on. At the moment, we use a copy of pressure-vessel that was built on scout for this.
If we built it on heavy, we'd drop support for host OSs older than Debian 8 and Ubuntu 14.04, but Steam doesn't work on Ubuntu 12.04 anyway, so there's no real loss there.
Building on heavy would let us discard some of our backwards-compatibility glue (and stop caring quite so much about things like packaging/glib2.0!7), which seems like a significant win. This would also mean the containers we ship would be "symmetrical", with scout no longer being such a special case:
-
Steam Runtime 1 'scout'
- runtime: scout
- pressure-vessel: was built on scout, now built on heavy
-
Steam Runtime 2 'soldier'
- runtime: soldier
- pressure-vessel: was built on scout, now built on heavy
-
Future runtimes
- runtime: some other TF2 character
- pressure-vessel: built on heavy
Prerequisites
We would need to make heavy support multiarch development better: packaging/glib2.0!9.
We would also need to change pressure-vessel so that if the container runtime is strictly older than heavy (in practice we can assume this means scout and nothing else), we always pull in the host glibc, even if for some reason we are not using the host graphics driver. Otherwise, the container glibc would be too old to run pressure-vessel-adverb inside the container.
/cc @denittis