- Nov 20, 2020
-
-
Ludovico de Nittis authored
Using the new "--remap-link-prefix" option we can now avoid breaking symlinks because not available under `/run/host`. Fixes: #29 Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Nov 18, 2020
-
-
Ludovico de Nittis authored
When we use the provider graphics stack we also try to collect the available Vulkan layers, similarly to what we already do for ICDs. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Nov 17, 2020
-
-
Simon McVittie authored
If we can't delete a file because it doesn't exist, then ... job done? In practice this happens because the runtime copy is merged-/usr, so /lib and /usr/lib are in fact the same place. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
If we want to deal with strange operating systems that use a non-standard filename for ld.so.cache, we'll have to special-case it. There's little extra cost to doing this because we already need to understand how ld.so.cache works, to be able to generate our own with different search paths. In situations where we just want a quick container to be able to inspect the runtime, we can deal with this by mounting all of /etc read-only. For the final container, we already iterate over all the files in the runtime's /etc, which will "naturally" include ld.so.cache and alternatives. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This is a step towards searching all the necessary places for unusual distributions like Exherbo (see https://github.com/ValveSoftware/steam-runtime/issues/230 ), and gives us an obvious extension point for adding more multilib directories. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Oct 26, 2020
-
-
Ludovico de Nittis authored
At this stage we expect to have `LD_LIBRARY_PATH` set to the `SYSTEM_LD_LIBRARY_PATH` of `steam.sh`. This means that we should treat the `LD_LIBRARY_PATH` entries as OS-level search path too. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
If necessary, in runtime.c we should access the original environment instead of the global one, because it might have been edited. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Oct 01, 2020
-
-
Ludovico de Nittis authored
If we want to pass all the possible variables that a user might have set in its environment, we need a mechanism to lock the variables that pressure-vessel is editing (e.g. LIBGL_DRIVERS_PATH), variables that we want to keep unset because will be wrong in the new container (e.g. FLATPAK_ID) and variables that should inherit their value from the host system (e.g. DISPLAY). Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Sep 29, 2020
-
-
Simon McVittie authored
While I'm there, add the ability to pass in a pre-opened file descriptor. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 25, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 21, 2020
-
-
Ludovico de Nittis authored
Setting STEAM_RUNTIME=/ caused configuration changes in libraries like Pango and GTK, which broke module loading when not in the LD_LIBRARY_PATH Steam Runtime. We updated the affected libraries' search paths so it is safe now to reimplement the STEAM_RUNTIME change. This reverts commit dc71943a and reapplies commit eb716698. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Sep 09, 2020
-
-
Simon McVittie authored
This is preparation for combining pressure-vessel with steam-runtime-tools. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 08, 2020
-
-
Simon McVittie authored
This should go some way towards resolving failures to run games ported by Feral Interactive, which explicitly check that they have been run by Steam. See <https://github.com/ValveSoftware/steam-runtime/issues/202> and <https://github.com/ValveSoftware/steam-runtime/issues/249 >. Resolves: pressure-vessel#8 Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
The basic Name Service Switch plugins that ship with glibc are entitled to assume that they are used alongside a corresponding glibc, and can use private symbols from it. This is not a complete set, only the ones required by the nsswitch.conf that we ship in practice. We can expand coverage later if desired. For a practical example of this, use soldier (glibc 2.28) on Arch Linux (glibc 2.32), and run `LD_DEBUG=files id`. soldier's libnss_files.so.2 fails to load with an undefined reference to __libc_readline_unlocked. This might also resolve various previously-reported bugs with DNS not working in the scout container: * https://github.com/ValveSoftware/steam-runtime/issues/226 (scout on Debian 10) * https://github.com/ValveSoftware/steam-runtime/issues/264, https://github.com/ValveSoftware/steam-runtime/issues/258, https://github.com/ValveSoftware/steam-runtime/issues/192 (scout on Fedora 31) * https://github.com/ValveSoftware/steam-runtime/issues/262 (scout on Arch Linux) * https://github.com/ValveSoftware/steam-runtime/issues/227 (scout on unspecified distribution) Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 04, 2020
-
-
Simon McVittie authored
This lets us create /run/host and /run/pressure-vessel unconditionally, even if we're mostly using the host filesystem rather than a runtime. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Now that we export each subdirectory of the root separately, there's nothing to stop us from using the same function in the runtime and no-runtime cases. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 03, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 02, 2020
-
-
Ludovico de Nittis authored
pressure-vessel had a few hard coded assumptions about the host system and where to look at for the graphics provider. For example it was assumed that the root was the same host system used by both pressure-vessel current environment (where pressure-vessel-wrap runs) and also later on by `bwrap`. But when we run pressure-vessel in a Flatpak container, the final `bwrap` command is expected to be executed against the real host system (mounted in `/run/host`, in Flatpak). Also when we are in a Flatpak container we might want to pick the graphics stack from the host system (`/run/host`), from the Flatpak container itself or it could even be a completely separate one. (T22373, T22371) Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
The filesystem that is providing /usr might not be mounted in the same place in the current namespace, and on the host system where bwrap will be run. If it isn't, we need to use one path to do file I/O when inspecting it, but pass a different path to bwrap. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Aug 20, 2020
-
-
Simon McVittie authored
This doesn't work for current scout because libpng has some weird symlinks, which are not shipped in the .deb but are created by ldconfig (see also Debian #706181, #713270), but a new version of libpng will fix that (T23209). Resolves: #3, T22126 Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 19, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 18, 2020
-
-
Simon McVittie authored
While we control /run, we might as well be consistent. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This will let us have the following logic when sharing a container between multiple commands using -launcher and -launch: * For setup commands, don't wrap the launched command in the adverb. If the setup command starts background processes, they'll continue to run. This matches how installscript commands have historically worked for Windows (and Wine/Proton) games in Steam: the setup command is launched with system(), and can leak background processes like wineserver. * For the main game, wait for all processes to exit, by wrapping the launched command in the adverb, with --subreaper only. This matches how native Linux games, and the main command of Windows/Wine/Proton games, have historically worked in Steam. * When all processes belonging to the main game have exited, the -launcher can exit, at which point the subreaper that wraps it can clean up any background processes from the setup commands. --terminate-idle-timeout can be used to wait a few seconds before sending SIGTERM, if desired. Because the adverb now blocks SIGCHLD, we need to unblock it before running the child process; otherwise the child process will inherit the blocked signal, breaking things like g_spawn_async(). Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 11, 2020
-
-
Simon McVittie authored
If we want to be able to use --filesystem=/tmp, then we can't set up the X11 socket until after we're finished with that. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 29, 2020
-
-
Simon McVittie authored
When using a scout sysroot with a newer-than-scout host, we were not overwriting locale(1) and localedef(1) with the host copy, causing mismatches. Resolves: T22877 Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This will make it easier to debug things going wrong in the adverb, by inheriting --verbose or PRESSURE_VESSEL_VERBOSE from the wrapper. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Recent versions of Flatpak and systemd-nspawn can mount the host's os-release at /run/host/os-release, even if the rest of the host's /etc and /usr are not exposed to the container. For feature parity we should try to do the same. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 21, 2020
-
-
Ludovico de Nittis authored
pressure-vessel-with-lock has been renamed to pressure-vessel-adverb because now it has more capabilities than just taking a lock. This change should help the environments that are not able to normally run `bwrap`, like if we are in a Docker container or in a Flatpak app. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Jul 09, 2020
-
-
Simon McVittie authored
tests/containers.py was failing on SteamOS 2 'brewmaster' with the libc6-i686 package installed, because that package contains an optimized i686 glibc in /lib/i386-linux-gnu/i686/cmov/libc.so.6, which is used in preference to the baseline i586 glibc in /lib/i386-linux-gnu/libc.so.6. There are no corresponding optimized gconv modules, only /usr/lib/i386-linux-gnu/gconv/*. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 08, 2020
-
-
Simon McVittie authored
For runtimes that support it, this gives us a way to override library comparisons. In particular, we can make sure libgcc_s.so.1 is compared by its version-definitions and symbols. (T16561, T16562) Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This doesn't currently include the --dest because that varies - it's usually arch->libdir_on_host, but not always. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
When we're entering the container to generate locales, we need to bind-mount the staging area for /overrides in *that* bwrap invocation, not add it as a bind-mount to the bwrap invocation that will actually run the game. Fixes: 5e2f9f25 "runtime: Bind-mount /overrides to run locale-gen" Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jun 23, 2020
-
-
Simon McVittie authored
Because we do a "cheap copy" with hard-links where possible, .ref is a hard-link to its counterpart in the original (non-copied) runtime, so a lock on one is a lock on the other. We hold a lock on the original runtime while we do setup, so we would never actually delete the temporary runtimes unless we break the hard-link by re-creating the lock file. Resolves: T22035 Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Ludovico de Nittis authored
Prioritize "/usr/" over "/lib/" if it is available to avoid issues when we use a non merged-/usr container with a host system that is merged-/usr (Fixes: T22125) Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Jun 17, 2020
-
-
Simon McVittie authored
Flatpak is not going to give us control over the root directory when using sub-sandboxing - the most we're likely to get is control over which directory is chosen to be /usr. Prepare for this by using /usr/lib/pressure-vessel/overrides instead of /overrides for the things we overwrite. To be nice to developers and steam-runtime-tools, put a symlink overrides -> usr/lib/pressure-vessel/overrides at the root, as a hint for where to look. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
In a mutable sysroot, overwrite ld.so with a symlink into /run/host. We overwrite both the interoperable path (to avoid long chains of symlinks in the common case) and the canonicalized path (to make sure nothing can end up finding the container's ld.so, which is incompatible with the libc we have dropped in). If building a long bwrap command-line, we have to mount over the canonicalized path, and just live with the fact that there will be a long chain of symlinks leading to it. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-