- Jun 04, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jun 02, 2021
-
-
Simon McVittie authored
wrap: Set the env var to adjust libshared-library-guard configuration path See merge request !309
-
- Jun 01, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
system-info: Improve diagnostics when layering scout onto soldier See merge request !316
-
- May 27, 2021
-
-
Simon McVittie authored
This is helpful if we're stacking the scout runtime onto the soldier runtime: both pinned_libs_* and overrides are relevant there. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- May 26, 2021
-
-
Simon McVittie authored
If we're running the scout runtime inside a soldier container, then we want to be reporting facts about the scout runtime. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- May 25, 2021
-
-
Ludovico de Nittis authored
When inside a Flatpak container, we expect that `libshared-library-guard.so` looks for its blocklist configuration in `/app/etc/freedesktop-sdk.ld.so.blockedlist`. This will not work because we bind `/app` in `/run/parent/app`. For this reason, when we detect this situation, we set the environment variable `SHARED_LIBRARY_GUARD_CONFIG` to point `libshared-library-guard` in the correct path. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- May 20, 2021
-
-
Simon McVittie authored
Use a more compact output for overrides and pinned libraries See merge request !315
-
Ludovico de Nittis authored
When we list the content of a directory, if a symlink points to a location that is under a known environment variable, we replace its target value with the environment variable. This has the advantage to make it clearer where a symlink is pointing to. 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
The entries `pinned_libs_*` and `overrides` are gathered using `find -ls`. However this has the downside to include a lot of information that we usually don't care about like the edit date, the permissions etc... In an attempt to reduce the steam-runtime-system-info report size, without reducing the about of potentially useful info, this commit replaces the `find -ls` output with just a recursive list of directories, files and symlinks. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Simon McVittie authored
Build capsule-capture-libs from a bundled copy of libcapsule See merge request !311
-
- May 18, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- May 17, 2021
-
-
Simon McVittie authored
pv-wrap: Share Pipewire socket with container if available See merge request !314
-
Simon McVittie authored
This gives us direct access to Pipewire using its native protocol, similar to the direct access we already have to PulseAudio, X11 and Wayland. In a Flatpak subsandbox, applications will have to go via xdg-desktop-portal instead, as they do for any other Flatpak app. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Ludovico de Nittis authored
Fix listing overrides in system-info with recent pressure-vessel See merge request !313
-
Ludovico de Nittis authored
pressure-vessel: Sync flatpak_envp_cmp() from Flatpak 1.11.1 See merge request !312
-
- May 12, 2021
-
-
Simon McVittie authored
When pressure-vessel operates in --copy-runtime mode, /overrides is a symlink to /usr/lib/pressure-vessel/overrides. "find /overrides -ls" is useless here: it just lists the symlink, rather than traversing the directory hierarchy. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
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
Previously, this would have incorrectly returned success with the error set, breaking the usual GError invariants. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
At this point, current_path is everything up to but not including fd. For example, if we are traversing "x/y/z/w" with current_path = "x/y", then the fds array contains { x, y } and fd is the result of opening z. We're looking at the result of calling fstatat() on z, so we need to see "x/y/z" in the error messages, for example if z is a regular file (therefore "x/y/z/w" cannot possibly exist). 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>
-
Simon McVittie authored
runtime: Use _srt_find_myself() to locate pressure-vessel prefix See merge request !310
-
- May 07, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
git-subtree-dir: subprojects/libcapsule git-subtree-mainline: 596478d1 git-subtree-split: 4e9d404fcff97f8d337a48c7375e327100595f98
-
Simon McVittie authored
This is slightly simpler, and makes it easy for PvRuntime to locate tools in the helpers path (libexec/steam-runtime-tools-0) too. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Apr 30, 2021
-
-
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
pressure-vessel: Use a mtree(5) manifest to set up the runtime See merge request !295
-
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 28, 2021
-
-
Simon McVittie authored
If we are operating from ./scout_platform_x.y.z, self->id will be NULL. Instead of matching on the names of directories, we can just check whether the deployment we are going to use is the same file (device and inode number) as the old deployment we are considering deleting. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Ludovico de Nittis authored
pressure-vessel: Speed up graphics driver discovery by operating in parallel See merge request !307
-
- Apr 27, 2021
-
-
Simon McVittie authored
This is helpful when trying to reduce this time by parallelizing. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
SrtSystemInfo is not thread-aware, but can safely be handed off from one thread to another, and caches its results internally; so we can use a thread per architecture, plus an extra thread for cross-architecture Vulkan and EGL ICDs, to enumerate graphics drivers and populate the cache in parallel with any other container setup. We join the threads just before looking at their results, to maximize the length of time for which we're running in parallel. On slow hardware (Lenovo T520 circa 2011, with 500G 7200rpm HDD) this cuts something like 20% off the setup time with a cold cache (`echo 3 | sudo tee /proc/sys/vm/drop_caches`). It also has a benefit (more like 15%) with a warm cache, immediately after a previous pressure-vessel run. This does make it somewhat harder to profile pressure-vessel, because when two I/O-bound operations run in parallel, they both take longer than they otherwise would, even though the overall task finishes sooner; this makes it hard to attribute I/O cost to particular actions. The new --single-thread option can be used to get a better idea of where the time is really going. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This encapsulates both the PROVIDER_GRAPHICS_STACK flag and the associated paths: if the object is null then the paths are meaningless, and if the object is non-null then they are meaningful. Making this an immutable "value object" also means we can share it between threads, unlike PvRuntime, which has state. This could become important if we want to make graphics driver enumeration multi-threaded to speed up pressure-vessel. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Add Flatpak version information See merge request !305
-