-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
Simon McVittie authoredSigned-off-by:
Simon McVittie <smcv@collabora.com>
Contributing to pressure-vessel
See README.md for general information about
pressure-vessel
, and for information about building and testing it.
More extensive notes should go here eventually, but aren't available yet. Sorry!
Adding dependencies
Some of the pressure-vessel
tools are designed to run on the host
system, which can in principle be anything, so think carefully before
adding new dependencies.
It's OK to depend on these from the host system:
- Linux kernel
- Linux 3.8 (first version to have mount and user namespaces) is a hard dependency.
- Linux 3.9 (first version to let unprivileged users create a
tmpfs
in a user namespace) is required if your host system does not provide a setuidbwrap
. This version is available in (at least) Debian 8+, Ubuntu 14.04+, RHEL 7+, openSUSE 42.1+, SteamOS 1+. - Linux 3.15 (first version to have
F_OFD_SETLCKW
) is strongly recommended at runtime. We should try to have fallback paths for older kernels, but if that becomes impossible, it's OK to bump this up to a hard dependency. This version is available in (at least) Debian 8+, Ubuntu 16.04+, RHEL 8+, openSUSE 42.1+, SteamOS 2+.
- GNU libc
- glibc 2.15 (SteamRT 1 'scout', Ubuntu 12.04 'precise') is a hard dependency, and we currently compile against this version This version is available in (at least) Debian 8+, Ubuntu 12.04+, RHEL 7+, openSUSE 42.1+, SteamOS 1+.
- glibc 2.19 (SteamOS 2 'brewmaster', Ubuntu 14.04 'trusty', Debian 8 'jessie') is strongly recommended at runtime. We should try to have fallback paths for older glibc, but if that becomes impossible, it's OK to bump this up to a hard dependency. This version is available in (at least) Debian 8+, Ubuntu 14.04+, RHEL 8+, openSUSE 42.1+, SteamOS 2+.
- setuid
bwrap
, if the kernel requires it (always required on RHEL, runtime-configurable and required by default on Debian, runtime-configurable but not required by default on Arch)- It can be the version bundled in Flatpak, or standalone
We bundle libraries from the Steam Runtime 1 'scout' for other
dependencies. See build-relocatable-install.py
for those. This means
we can only rely on those libraries being at least as new as the ones
in scout, which are pretty old.
The scout build environment has backports of Python 3.5 and Meson, so we can rely on those at build-time.
If we gain a dependency on glibc 2.19 or other newer libraries, we'll have to increase the build environment to SteamRT 1½ 'heavy', and backport Python 3.5 and Meson to 'heavy'.