- May 20, 2021
-
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- May 12, 2021
-
-
Simon McVittie authored
"foo/bar/" is meant to be exactly equivalent to "foo/bar/.", and almost equivalent to "foo/bar" (with the important difference that it fails if bar is a non-directory). Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This function was originally written for pressure-vessel and subsequently added to Flatpak. If we use Flatpak's version, we can stay closer to being in sync with Flatpak's flatpak-utils.c. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- May 11, 2021
-
-
Simon McVittie authored
By including this in libsteam-runtime-tools-0-helpers, we reduce the number of modules we need to manage and keep in sync. The rest of libcapsule isn't actively used yet, so this is a significant simplification. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Apr 30, 2021
-
-
Simon McVittie authored
At the moment we deploy the runtime from a giant tarball to avoid Steam downloader limitations, but that leads to a noticeable delay the first time we launch a game after a new runtime version has been downloaded. Now that the Steam download mechanism can deal better with larger numbers of smaller files, we're considering returning to the original design where the runtime depot contains unpacked files. However, the Steam download mechanism doesn't preserve permissions, modification times, or filenames that differ only by case, and has not always preserved empty directories, so we need a way to deal with all of those things. By reading a manifest written in a subset of the BSD mtree(5) format, we can create directories and symlinks, and set permissions modification times on regular files. As a bonus, it's actually slightly faster to duplicate a runtime with hard-links (--copy-runtime mode) by reading the manifest than by reading the actual directory tree, because the manifest is more likely to be contiguous on disk. In principle the mtree(5) manifest could also be used to validate that the runtime content has not become corrupted by checking files against their sha256sums. This isn't implemented here (and it would have to be done only on demand rather than routinely, because it would be slow), but the parser does at least read the sha256. In the tests, we now need to remove the mtree manifest when copying and editing a runtime. When we edit a runtime in-place, it no longer conforms to the manifest, so this can't necesarily be expected to work. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This can be used to create directories, symlinks and zero-byte files, create files as a clone (hard-link or copy) of files in a reference directory, assert that files exist, set executable/non-executable permissions, and set files' modification times. When cloning files from a reference directory, the default is to use the same filename as the destination, but that can be overridden (for example to deal with inconvenient/non-Windows-friendly filenames). This is also actually slightly faster than pv_cheap_tree_copy(), presumably because the manifest is contiguous on-disk and the directories are not necessarily. Setting directories' modification times is implemented, but probably won't work in practice, because any files we create in the directory will alter its mtime. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Apr 22, 2021
-
-
Simon McVittie authored
This is no longer used. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Mar 16, 2021
-
-
Ludovico de Nittis authored
Features without tests can easily regress. For this reason we added a check about the directories that we expect to have inside the container when we don't share the home directory. And we also compare the "steam-installation" issues of the container srsi with the one on the host. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Feb 25, 2021
-
-
Ludovico de Nittis authored
This allows us to reduce the code duplication in pv_bwrap_run_sync(). Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Feb 23, 2021
-
-
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
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
We used 'var' to mean both the path to the ./var directory, and an object representing an environment variable. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Feb 22, 2021
-
-
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
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Ludovico de Nittis authored
If we don't have duplicated ICDs/Layers in the host system, we want to be sure that this holds true also inside a container. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Feb 19, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Feb 04, 2021
-
-
Simon McVittie authored
Previously, if we were using a Flatpak-style runtime, the argument to --runtime= had to be its ./files subdirectory. Now we accept the top-level directory as an alternative. This will make it more straightforward for pressure-vessel-wrap to take responsibility for unpacking and deploying runtimes that are shipped as a tarball, which is currently done in the SteamLinuxRuntime shell scripts, resulting in error handling and locking being less robust. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jan 13, 2021
-
-
Simon McVittie authored
Previously, pv_capture_output() always inherited pressure-vessel-wrap's own environment, and bwrap->envp was ignored. Thanks to @mawww on Github for spotting this. Fixes: f584a55c "runtime: Don't assume container's env is in the PATH" Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jan 12, 2021
-
-
Simon McVittie authored
This is a container-manager-agnostic version of probing /.flatpak-info and /run/pressure-vessel. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jan 11, 2021
-
-
Simon McVittie authored
Clear Linux uses the same cross-architecture ld.so.cache as most distributions (Debian, Fedora, etc.), but puts it in /var/cache/ldconfig to meet their goal of /etc being empty. Create a symlink so that when their glibc tries to load that filename inside the runtime, what it gets is the runtime's /etc/ld.so.cache. Exherbo uses a ld.so.cache per architecture, which we added to a table of known per-architecture ld.so.cache filenames in commit c10e8831. Create symlinks for those too, similar to the Clear Linux case; this has not yet been verified to work, but it can't hurt. It's looking as though NixOS might be adding a Nix-specific filename for the ld.so cache (currently they don't have one at all). When that happens, we can add it to the same array as the Clear Linux filename. Other distributions that turn out to need this can be treated like Clear Linux if they share one cache between all architectures, or like Exherbo if they have a separate cache per architecture. Partially addresses <https://github.com/ValveSoftware/steam-runtime/issues/345>, which also needs <https://gitlab.collabora.com/vivek/libcapsule/-/merge_requests/43>. Also partially addresses <https://github.com/ValveSoftware/steam-runtime/issues/230 >. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jan 05, 2021
-
-
Simon McVittie authored
We're using FlatpakBwrap as a convenient way to collect up a set of argv, envp and inherited file descriptors, but it isn't actually a bwrap command in all cases. Use a less misleading name. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Dec 17, 2020
-
-
Simon McVittie authored
If we don't use a child setup function, then GLib can go into a more optimized code path involving posix_spawn(), where we don't get detailed error reporting. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Dec 14, 2020
-
-
Simon McVittie authored
These are drivers for which our best guess is that the native loader would not actually load them. We want to include them in steam-runtime-system-info's diagnostic output in case we are wrong, but we don't want to include them in the container: if our guess is correct, then the host system doesn't actually load them, and the worst-case scenario is that they are somehow broken, in which case adding them to the search path might *break* the container. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Dec 11, 2020
-
-
Simon McVittie authored
We need those to be able to deal with some graphics drivers. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Dec 10, 2020
-
-
Simon McVittie authored
Because we were testing for a prefix match with a trailing slash, when FlatpakExports exports /home/me, we would not rewrite it to /home/me/.var/app/com.valvesoftware.Steam. Instead of adding the necessary special cases, use a slightly refactored version of flatpak_has_path_prefix(), which already does what we need. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Dec 03, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Nov 24, 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
It isn't always obvious which copy of capsule-capture-libs we're going to use to run the tests. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Oct 22, 2020
-
-
Simon McVittie authored
The code under test was already moved, but the tests couldn't follow until their executable was statically linked to libsteam-runtime-tools, which it now is. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Now that GIO_MODULE_DIR has been backported into scout's GLib, we can disable GIO modules completely, instead of loading them but then not using them. This avoids some misleading warnings (#32). This will not be completely effective on non-Debian systems until we also patch scout's GLib to make GIO_MODULE_DIR take precedence over the hard-coded legacy search path /usr/lib/gio/modules. The unit test for this is still in tests/pressure-vessel/utils.c for now. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Oct 02, 2020
-
-
Simon McVittie authored
This sometimes takes longer than 30 seconds when several packages are built in parallel on OBS. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 29, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
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>
-