- May 21, 2020
-
-
Simon McVittie authored
While adding basic test coverage I discovered that this was not giving the intended answer if two values for the same variable appear in the environment block, which is rare but technically possible. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Unlike Autotools, in Meson this doesn't have the problems caused by recursive make: ninja always has an overview of the whole source tree. With this change, test-locale-gen.sh needs minor adjustments, because G_TEST_SRCDIR, G_TEST_BUILDDIR now point into tests/ instead of the root directory of the source tree. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
We already (optionally) use --unshare-pid since commit feb948ed. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- May 20, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Use its own name, and not the first word of the command we executed or would have executed. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- May 18, 2020
-
-
Simon McVittie authored
If we are on an OS where /sbin is not normally in unprivileged users' PATHs (for example Debian), we won't find ldconfig in PATH and will need to try harder. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Apr 15, 2020
-
-
Simon McVittie authored
We use the same GPtrArray to accumulate both i386 and x86_64 drivers, so ideally we allocate enough space for both and never have to reallocate it again. (But if we guess wrong, no harm done.) Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Even better than an assertion that crashes at runtime if we were wrong - an assertion that makes the build fail if we were wrong, so we can't release code where this assertion would fail. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Unlike EGL and Vulkan, we assign to these variables once per multiarch tuple, separately; so we need to free them once per multiarch tuple, too. Move their scope inwards so we can do that. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
If available, and newer, we bind VA-API drivers and loaders from the host system. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Apr 09, 2020
-
-
Ludovico de Nittis authored
If available, and newer, we bind VDPAU drivers from the host system. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Apr 08, 2020
-
-
Simon McVittie authored
This improves isolation between the host system and the game, and can be used in conjunction with bwrap's init/reaper process to make game termination fully reliable (unlike subreapers, killing the init process automatically kills the entire pid namespace). One major down-side of doing this is that if the game uses process-ID-oriented APIs, for example older versions of <https://github.com/FeralInteractive/gamemode >, then they will not work, because the process ID inside the container is not the same as the process ID outside the container. Unfortunately, Steam's own tracking of the processes that belong to a game is one of the process-ID-oriented APIs that this harms, so this branch does not unshare the pid namespace by default, only when requested. We can use this to test whether it can be done without breaking Steam; We will probably need to cope with separate pid namespaces if we create new containers from inside a Flatpak environment. Also add an option to unload the gameoverlayrenderer.so module, which is not acceptable for production use, but at least works around this well enough to unblock further testing. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Mar 24, 2020
-
-
Ludovico de Nittis authored
If we are using the host's libc, we also bind its `locale` otherwise it might happen that the container's `locale` will not be able to run. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Mar 23, 2020
-
-
Ludovico de Nittis authored
The container didn't have the host system's gconv modules, and the host system's glibc didn't use the Steam Runtime's older gconv modules because they weren't in the directory where it expected to find them. Now if we are using the host's glibc we also bind its gconv modules. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Mar 18, 2020
-
-
Ludovico de Nittis authored
If we are using the host's libc, we also bind its ldconfig otherwise it's likely that the container's ldconfig will not be able to run. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Mar 04, 2020
-
-
Simon McVittie authored
Now that we have this working, there's no real reason why we need a separate run per filename/SONAME pattern; we can just do them all at once, leaving only ICDs with more complicated requirements to be done separately. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This makes it a bit clearer what's going on. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
In practice we always want the host graphics stack, but maybe this will be useful when debugging. 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>
-
Simon McVittie authored
This sketches out roughly how we'd do this if we were in a container such as a Flatpak environment, rather than on the host system. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
There's very little refactoring so far: bind_runtime() is still basically monolithic, and takes individual bits of PvRuntime's state rather than a PvRuntime object. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
wrap.c is getting rather large, so the idea is that this will encapsulate everything related to swapping in a different /usr. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Feb 26, 2020
-
-
Simon McVittie authored
This will let us duplicate a runtime and edit it in-place. The major appeal of doing this is that it's something we can do in a Flatpak environment, where recursively invoking bubblewrap isn't allowed. It also seems like it might yield a more reliable way to overwrite parts of the runtime with their host-system equivalents than the tricks we currently use with files and directories mounted over their runtime counterparts. The major down side is that after we've done this, we have a copy of the runtime, which we need to garbage-collect and clean up eventually. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
We want all the libQUAL directories, including lib32 and lib64 (and in principle also libx32, libn32 etc.), but we specifically don't care about libexec. Real systems don't usually symlink /usr/libexec into the root directory. If we create a /libexec symlink, the only effect it might have is that game developers start relying on it, which we certainly don't want. 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>
-
libdrm reads /usr/share/libdrm/amdgpu.ids to find information about AMD GPUs. So if we are using libdrm.so.2 from the host we also mount its libdrm folder. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Feb 17, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
In the case where we bind-mounted the entire root filesystem, since commit 77f3e3d7 we mounted it over the top of API filesystems like /dev, /proc, /sys. This results in /dev being mounted with the nodev option, which breaks a lot of normal functionality like /dev/null. Some games can work despite this, but only badly (Floating Point launches with indirect or software rendering and a horrible framerate), and the xterm activated by PRESSURE_VESSEL_SHELL=instead fails to launch because it can't create a pseudo-terminal. Adjust the order to get this right. Fixes: 77f3e3d7 "wrap: Make sure the intermediate bwrap object can be used as a base" Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Feb 10, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
It's a little confusing if we run p-v-wrap --test --verbose, which logs: pressure-vessel-wrap: Original argv: ... pressure-vessel-wrap: Checking for bwrap... and then exits. If we add one last line pressure-vessel-wrap: OK (/usr/bin/bwrap) then the result is clearer. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
In some places we said exit status, but meant wait status (the status from waitpid() or similar, which encodes whether the process exited normally, the exit status if yes, the fatal signal if any, and whether a core was dumped). Signed-off-by:
Simon McVittie <smcv@collabora.com>
-