- Mar 04, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Feb 12, 2020
-
-
Ludovico de Nittis authored
Similarly to the already present Mesa DRI and VA-API drivers, now we are listing also VDPAU modules. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Feb 10, 2020
-
-
Ludovico de Nittis authored
Some drivers have an environment variable that overrides the automatic detection of which driver should be used. For example Mesa has `MESA_LOADER_DRIVER_OVERRIDE`, VA-API has `LIBVA_DRIVER_NAME` and so on. We now log these environment variables in the s-r-s-i output to have a move complete view about the state of the running system. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Jan 17, 2020
-
-
Simon McVittie authored
This is basically never going to be useful, except to test the previous commit, so I haven't bothered to include it in the man page. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jan 09, 2020
-
-
Simon McVittie authored
It's slightly preferable to list linker and compiler flags in stack order, with the lowest in the stack first. This allows use of a higher-level library from a non-standard prefix without also necessarily picking up lower-level libraries from the same non-standard-prefix. For example, if /path/to/json-glib also includes a copy of GLib, then -L/path/to/glib -lglib-2.0 -L/path/to/json-glib -ljson-glib-1.0 will link the GLib from /path/to/glib, but -L/path/to/json-glib -ljson-glib-1.0 -L/path/to/glib -lglib-2.0 will link both the GLib and the json-glib from /path/to/json-glib. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Previously we were listing only ICDs (graphics drivers). With this commit we are now able to get a more complete vision of the running system listing also Mesa DRI and VA-API drivers. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Jan 08, 2020
-
-
Simon McVittie authored
This avoids a coreutils limitation in versions [8.27, 8.29), which unfortunately includes Ubuntu 18.04: timeout(1) relied on SIGCHLD not being blocked, but did not unblock it themselves. The Steam client runs s-r-s-i from a thread that has SIGCHLD blocked, and SIGALRM, SIGPIPE and SIGTRAP ignored. This is contrary to frequent expectations of general-purpose libraries and command-line utilities: in particular, SIGPIPE is used by processes writing to a pipe to detect that the read end has died, SIGTRAP is frequently used to terminate processes on an assertion failure, and SIGCHLD is often necessary for subprocess management. Games (whether Steam or non-Steam) appear to be run with only SIGPIPE and SIGTRAP ignored, so strictly speaking, unignoring those two makes the behaviour of s-r-s-i unlike the behaviour of actual games. However, the effect of unblocking SIGPIPE and SIGTRAP is to make s-r-s-i more likely to crash (the default disposition of both those signals is process termination), which is probably what we want: if there is any difference, we want s-r-s-i's helpers to be more strict than games (crash more often), so that they can act as an early-warning system for issues that could manifest in games. In s-r-s-i, don't unblock signals until after we have finished command-line parsing and redirected stdout to print to the original stderr. Otherwise, g_debug() would go to the original stdout, resulting in it being invalid JSON. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jan 07, 2020
-
-
Simon McVittie authored
This was half-implemented in commit ed218ced. Fixes: ed218ced "Add --version argument to most executables" Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Dec 09, 2019
-
-
Jeremy Whiting authored
-
- Dec 05, 2019
-
-
Jeremy Whiting authored
If helper times out or is killed we report the exit_status of the helper and terminating_signal if it was terminated. Tested locally by making wflinfo symlink point to hanging mock test. Will add unit tests in next commit. Also added SRT_LIBRARY_ISSUES_TIMEOUT for timeout result.
-
- Nov 18, 2019
-
-
Jeremy Whiting authored
-
- Nov 15, 2019
-
-
Simon McVittie authored
This ensures that they can find the non-ubiquitous json-glib library, and the steam-runtime-tools library, even if relocated into a non-standard prefix like the LD_LIBRARY_PATH Steam Runtime. We can't just use a relative version of the standard library directory as our RPATH, because if we did that, we would load glibc from the same place. This causes crashes in pressure-vessel, where ld.so and the rest of glibc are often taken from the host system via /overrides/lib, and the glibc in /lib and /usr/lib is incompatible with ld.so. Instead, use a private library directory and populate it with relative symlinks to our non-glibc dependencies; we assume the host version of glibc is new enough that this is OK. Using DT_RPATH in preference to DT_RUNPATH means we take all our direct and indirect dependencies from the same place. This is important when libjson-glib (which won't ordinarily have a RUNPATH or RPATH) pulls in GIO as an indirect dependency of check-locale, which doesn't directly depend on GIO. The GIO library we get must match the versions of GLib and GObject we're using. This also bypasses LD_LIBRARY_PATH. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Nov 13, 2019
-
-
Simon McVittie authored
This made them usable from outside the LD_LIBRARY_PATH runtime, but breaks their use inside a pressure-vessel container. In pressure-vessel, the glibc family of libraries are typically taken from outside the container (for example /overrides/lib/x86_64-linux-gnu/libc.so.6), and the dynamic linker ld.so is replaced with one that is suitable for the libraries in /overrides. In general, these versions will be incompatible with the ones in /usr/lib/x86_64-linux-gnu, which unfortunately are the ones that get pulled in via the DT_RPATH. This reverts commit 91478a07. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Nov 08, 2019
-
-
Simon McVittie authored
This ensures that they can find the non-ubiquitous json-glib library, and the steam-runtime-tools library, even if relocated into a non-standard prefix like the LD_LIBRARY_PATH Steam Runtime. Using DT_RPATH in preference to DT_RUNPATH means we take all our direct and indirect dependencies from the same place. This is important when libjson-glib (which won't ordinarily have a RUNPATH or RPATH) pulls in GIO as an indirect dependency of check-locale, which doesn't directly depend on GIO. The GIO library we get must match the versions of GLib and GObject we're using. This also bypasses LD_LIBRARY_PATH. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Nov 07, 2019
-
-
Ludovico de Nittis authored
With this change we are now able to check if the used driver is GLVND or non-GLVND. This information is useful for example when steam-runtime-system-info is failing to find GLX ICDs. When this will happens we will be able to know if this is due to the use of non-GLVND driver or if there is something unexpected. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Oct 31, 2019
-
-
Simon McVittie authored
This makes it easier to tell which version we are dealing with. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Oct 11, 2019
-
-
Ludovico de Nittis authored
When we are in a steamrt container we log the content of the "/overrides" folder. Otherwise, if we are not in a container, we log the content of both "pinned_libs_32" and "pinned_libs_64". Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Sep 26, 2019
-
-
Simon McVittie authored
This one is a bit different because the raw field is a space-separated list. For convenience, srt_system_info_dup_os_id_like() can be asked to include the OS itself, for use in logic like this pseudocode: for id in info.dup_os_id_like(True): if id in special_cases: special_cases[id].run() break else: do_generic_behaviour() Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This doesn't include information about similar OSs (ID_LIKE), and also does not include a fallback to lsb_release or OS-specific files. However, it's enough to detect Steam Runtime containers. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 25, 2019
-
-
Simon McVittie authored
Until now we've been conflating these two, but Timothee Besset recently clarified their status for me. ~/.steam/steam is maintained by bin_steam.sh, aka /usr/bin/steam, in which it is referred to as STEAMDATALINK. It is the data directory containing user data (cloud-synced configuration and saves), the download cache, and the default Steam Library directory. ~/.steam/root is maintained by steam.sh, in which it is referred to as STEAMROOTLINK. It is the installation directory, containing Steam executables and libraries. As a result, they are normally the same, but can differ, in particular in two situations: * When testing a new Steam client build by running client/steam.sh, client/ gets used as the installation directory, in conjunction with the existing data directory pointed to by ~/.steam/steam. This avoids having to re-login or re-download your library of games for the new test installation. * When Debian bug #916303 was present during the initial Steam installation, the Steam client was unpacked into ~/.steam, resulting in creation of ~/.steam/steam as a real directory that cannot be replaced with a symbolic link. We effectively ended up using ~/.steam as the installation path, but with ~/.steam/steam as the data path. (The Debian steam package has since been fixed, but we cannot easily disentangle existing installations.) Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 24, 2019
-
-
Simon McVittie authored
This is necessary for pressure-vessel containers to support Vulkan: to be able to make the Vulkan ICDs available in the container, we have to be able to find them, bind-mount them into a suitable location, and provide corresponding ICD JSON metadata to the contained game. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 11, 2019
-
-
Simon McVittie authored
pressure-vessel will use these when it generates any missing locales. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 10, 2019
-
-
Simon McVittie authored
Rather than dumping this to Steam's stderr, it's more useful if we gather it up and make it available alongside all the other diagnostic information. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Sep 09, 2019
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 27, 2019
-
-
Simon McVittie authored
Some Steam games assume that the en_US.UTF-8 locale is available, and it's reasonably likely that others assume that the C.UTF-8 locale is available, or that the locale environment variables are set to usable values. Having checks for locale properties will also help us when experimenting with containers: we can check whether the locale that was set outside the container is available inside the container. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 21, 2019
-
-
Jeremy Whiting authored
Moved srt_check_graphics to _srt_check_graphics and made it internal. Call _srt_check_graphics from srt_system_info_check_graphics after checking if we have a cached result first. Changed graphics test to use srt_system_info to do the check_graphics tests. Pass helpers_path to _srt_check_graphics and prepend path if set. Add srt_sytem_info_check_all_graphics. In srt_system_info_check_all_graphics try each of the 4 combinations of window system and renderer and report back a GList of results. Also added to bin/steam-system-info.c using srt_system_info_check_all_graphics and outputting all found information in json format. Also added use of LD_PRELOAD environment variable. Also changed call to g_spawn_sync to search PATH so it can find -wflinfo binaries.
-
- Aug 15, 2019
-
-
Now we should be able to detect when the Steam Runtime environmental setup has been modified by the distro or user. Co-authored-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Aug 12, 2019
-
-
Simon McVittie authored
We can at least print "unknown-expectations" in the summary of issues. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 06, 2019
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Otherwise, if we process an architecture we can run before an architecture we can't, we'll try to free the old list twice. This happens on i386 autobuilders that can't run x86_64 executables. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This has become less an example and more a command-line driver for the library, so rename it accordingly. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-