- 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 27, 2021
-
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Apr 22, 2021
-
-
Simon McVittie authored
This is no longer used. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
When loading VDPAU modules we rely on $PLATFORM, trying to support all its known possible expansions. However there is always the possibility that we are currently missing some of them or that new ones will be added in the future. For this reason we try to detect the expansion of $PLATFORM, and $LIB, and print its value in the report. In this way it will be easier to notice unusual and/or new expansions. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Apr 21, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Apr 15, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Mar 23, 2021
-
-
Simon McVittie authored
This means we can cope with filenames in their filesystem encoding, which are arbitrary bytestrings (not necessarily UTF-8). 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>
-
- Mar 04, 2021
-
-
Ludovico de Nittis authored
When we build a debian package of steam-runtime-tools, due to the debian source format 3.0 (native), all our `.so` test files are stripped down. To avoid losing them we generate the `fake-icds` and `fake-icds-flatpak` sysroots from the python script `generate-sysroots.py`. Addresses T26709 Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Feb 25, 2021
-
-
Ludovico de Nittis authored
This is similar to the behavior that we have for Vulkan Layers. The only difference is that for ICDs we still have the ability to set a custom "multiarch_tuples" parameter, without the need to set the multiarch for the whole #SrtSystemInfo object. Fixes: #58 Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
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>
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
With the additional "issues" entry in the s-r-s-i report we can now flag the ICDs/layers as being duplicated or also unsupported. This makes it easier to spot misconfigured systems or also regressions about how we import ICDs/layers inside the container. Fixes: T26156 Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Feb 19, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
Instead of just having a single primary multiarch, now we are able to list multiple multiarch tuples. The first will be considered the primary and all the others will be assumed to be "foreign" architectures. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@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 28, 2021
-
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
This helps us to avoid leaking variables. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
Now that check-vulkan prints detailed information about every physical and virtual Vulkan GPU, we can start to provide this info in s-r-s-i too. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Jan 27, 2021
-
-
Simon McVittie authored
If one of the variables we are interested in happens to be set already, and doesn't get overridden, then the test will fail. For example, `DRI_PRIME=1 meson test -C _build` would fail. This will become a lot more likely to happen when I start logging ubiquitous environment variables like `DISPLAY`. We can't just set envp = NULL initially, because g_environ_setenv() in Ubuntu 12.04 won't accept NULL as a valid environment block (although newer versions do). Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jan 25, 2021
-
-
Simon McVittie authored
A single line with escaped newlines is unnecessarily hard to read. This repurposes code that we already had for printing a udev uevent pseudo-file in this way. We retain the ability to parse old s-r-s-i output in which the diagnostic messages were a string: the intended meaning is fairly obvious. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jan 21, 2021
-
-
Ludovico de Nittis authored
JSON-GLib 1.2.0 introduced a new function called `json_from_string()`. It is an handy function that allows us to obtain a jsonNode with just a single operation. This function had to be backported, and modified a little, because we are targeting Scout that has an older JSON-GLib version that misses both `json_from_string()` and `json_parser_steal_root()` (that was used in `json_from_string()`). Signed-off-by:
Ludovico de Nittis <ludovico.denittis@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
In a Flatpak environment, we will not be allowed to create /overrides. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-