Skip to content
Snippets Groups Projects
  1. Mar 10, 2020
  2. Mar 06, 2020
  3. Mar 05, 2020
  4. Mar 04, 2020
  5. Feb 12, 2020
  6. Feb 10, 2020
  7. Jan 17, 2020
  8. Jan 09, 2020
    • Simon McVittie's avatar
      build: Consistently sort dependencies in stack order · 9a3cfb41
      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: default avatarSimon McVittie <smcv@collabora.com>
      9a3cfb41
    • Ludovico de Nittis's avatar
      Enumerate Mesa DRI and VA-API drivers · ae4b4d7a
      Ludovico de Nittis authored and Simon McVittie's avatar Simon McVittie committed
      
      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: default avatarLudovico de Nittis <ludovico.denittis@collabora.com>
      ae4b4d7a
  9. Jan 08, 2020
    • Simon McVittie's avatar
      Unblock signals when spawning subprocesses, and in s-r-s-i · be4aae8d
      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: default avatarSimon McVittie <smcv@collabora.com>
      be4aae8d
  10. Jan 07, 2020
  11. Dec 09, 2019
  12. Dec 05, 2019
  13. Nov 18, 2019
  14. Nov 15, 2019
    • Simon McVittie's avatar
      Build -system-info and -check-locale with relative DT_RPATH · c3a06cce
      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: default avatarSimon McVittie <smcv@collabora.com>
      c3a06cce
  15. Nov 13, 2019
    • Simon McVittie's avatar
      Revert "Build -system-info and -check-locale with relative DT_RPATH" · a32d9290
      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: default avatarSimon McVittie <smcv@collabora.com>
      a32d9290
  16. Nov 08, 2019
    • Simon McVittie's avatar
      Build -system-info and -check-locale with relative DT_RPATH · 91478a07
      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: default avatarSimon McVittie <smcv@collabora.com>
      91478a07
  17. Nov 07, 2019
  18. Oct 31, 2019
  19. Oct 11, 2019
  20. Sep 26, 2019
  21. Sep 25, 2019
    • Simon McVittie's avatar
      Distinguish between the Steam installation (root) and data paths · 41ac7a82
      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: default avatarSimon McVittie <smcv@collabora.com>
      41ac7a82
  22. Sep 24, 2019
  23. Sep 11, 2019
  24. Sep 10, 2019
  25. Sep 09, 2019
  26. Aug 27, 2019
    • Simon McVittie's avatar
      Add checks for locales and locale-related issues · 10c2771b
      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: default avatarSimon McVittie <smcv@collabora.com>
      10c2771b
  27. Aug 21, 2019
    • Jeremy Whiting's avatar
      Access SrtGraphics via SrtSystemInfo. · 85bfaca7
      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.
      85bfaca7
  28. Aug 15, 2019
  29. Aug 12, 2019
  30. Aug 06, 2019
Loading