- Aug 06, 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
This doesn't make any practical difference yet, but it sets us up to be able to carry out finer-grained processing based on the loadable_flags. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
We need to remap these into something that can be loaded successfully in the container, but we don't yet. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This has almost full branch coverage. We don't currently cover the case where STEAM_COMPAT_CLIENT_INSTALL_PATH is not set, but that's trivial anyway (we treat all paths as not matching it). Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
This avoids relying on the LD_LIBRARY_PATH as a way to get the overridden libraries into place. Co-authored-by:
Simon McVittie <smcv@collabora.com> Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Aug 05, 2021
-
-
Simon McVittie authored
We could inherit any RLIMIT_NOFILE from Steam or another caller, but we want to give games a predictable execution environment. If a game uses select(), allocates memory proportional to the soft limit on file descriptors, or loops for a number of iterations proportional to the soft limit on file descriptors (as we did prior to commit 97b5a8f6 "pressure-vessel: Let short-term subprocesses inherit non-CLOEXEC fds"), then file descriptors numerically greater than 1023 are going to be a problem. If the soft limit is more than 1024 (= FD_SETSIZE), reduce it to 1024 to avoid this. Conversely, if we're launched with a soft limit strictly less than 1024, let's try to raise it to 1024 if the hard limit allows that. Related to <https://github.com/ValveSoftware/steam-for-linux/issues/7970 >. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 03, 2021
-
-
Simon McVittie authored
This will allow pv-wrap to translate a host `LD_PRELOAD` item like `/usr/$LIB/libMangoHud.so` into a pair of `--ld-preload` options, each looking like `--ld-preload=/usr/lib32/libMangoHud.so:abi=i386-linux-gnu`. The only character that cannot appear in a `LD_PRELOAD` path entry is `:`, so we're free to use that as our representation for extra options. Instead of just appending the ABI tuple, use a key/value notation so we can extend later if we need to. 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 will test us add coverage for some of its code. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 02, 2021
-
-
Simon McVittie authored
Note that this implementation does not cope gracefully with zero-length patterns (https://gitlab.gnome.org/GNOME/glib/-/issues/2452 ) so we should be careful not to use it like that. For the use-case that I have in mind, that won't be a problem. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 28, 2021
-
-
Simon McVittie authored
We were linking these both statically and dynamically, so it's anyone's guess which one would end up implementing each symbol. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 05, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 02, 2021
-
-
Simon McVittie authored
If the artifacts directory is a symlink (or has a symlink in one of its parents) then we need to make sure that both the symlink and its target get shared with the container. We have code for that; use it. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Reference: https://reuse.software/ Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jun 30, 2021
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jun 28, 2021
-
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Jun 15, 2021
-
-
Simon McVittie authored
Now that we're invoking populate-depot.py once per runtime branch, it's straightforward to use different versions for different runtimes. 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
Since SteamLinuxRuntime v0.20210505.0, the default is to use unpacked runtimes *or* include the archives, but tests/pressure-vessel/containers.py wants both. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
tests/pressure-vessel/containers.py currently expects this, but the default behaviour for populate-depot.py changed between v0.20210430.0 and v0.20210505.0. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
The SteamLinuxRuntime scripts have phased out support for populating a depot directory with a mixture of scout and soldier, because that doesn't really make sense for a game or a compat tool: each native Linux game, and each compat tool used to run non-native games, expects to run in one particular environment (scout or soldier or something else) and using any other environment would be incorrect. However, tests/pressure-vessel/containers.py currently expects to work with a directory that contains both scout and soldier. For now, we'll download scout and soldier separately, then mash them together into the same directory. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jun 08, 2021
-
-
Simon McVittie authored
The nochange flag is fully implemented here: it suppresses changing the modification time or permissions. The optional flag is mostly implemented here: it suppresses the error that would ordinarily occur if a file with content does not already exist. The ignore flag is not yet implemented, only parsed, because it only really applies when verifying whether a filesystem tree matches a specification. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
time=1.234 has historically meant 1 second + 234 nanoseconds, or what normal people would write as 1.000000234. Parse it as such, but for now treat this ambiguous format as an error, unless the fractional part is exactly ".0" which is unambiguous - we can relax this to a warning later, if we want to. libarchive and FreeBSD mtree show mtimes with exactly 9 decimal digits, which makes them mean the same thing in either interpretation. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- May 20, 2021
-
-
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>
-
- 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 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>
-