Skip to content
Snippets Groups Projects
  1. Oct 07, 2020
  2. Sep 28, 2020
  3. Jul 09, 2020
  4. Jun 10, 2020
  5. Apr 24, 2020
  6. Apr 20, 2020
  7. Apr 14, 2020
  8. Apr 01, 2020
  9. Mar 10, 2020
  10. Mar 06, 2020
  11. Mar 05, 2020
  12. Mar 04, 2020
  13. Feb 12, 2020
  14. Feb 10, 2020
  15. Jan 17, 2020
  16. 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
  17. 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
  18. Jan 07, 2020
  19. Dec 09, 2019
  20. Dec 05, 2019
  21. Nov 18, 2019
  22. 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
  23. 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
  24. 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
  25. Nov 07, 2019
  26. Oct 31, 2019
  27. Oct 11, 2019
  28. Sep 26, 2019
  29. 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
  30. Sep 24, 2019
  31. Sep 11, 2019
Loading