Skip to content
Snippets Groups Projects
changelog 70.8 KiB
Newer Older
Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210518.1) UNRELEASED; urgency=medium

  [ Simon McVittie ]
  * Build capsule-capture-libs from a bundled copy of libcapsule,
    currently v0.20210114.0.
    This reduces the number of components required to get a pressure-vessel
    build: now all we need is the multiarch-prefixed wflinfo, and some
    common shared libraries. (s-r-t!311)
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Make STEAM_RUNTIME take precedence over os-release.
    If we're running the scout runtime inside a soldier container
    (scout_layered_slim beta branch, T18668) then we want to be reporting
    facts about the scout runtime.
  * system-info: Show /overrides even if in scout runtime.
    This is helpful if we're stacking the scout runtime onto the soldier
    runtime (T18668): both pinned_libs_* and overrides are relevant there.
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Use a more compact output for overrides and pinned
    libraries.
Simon McVittie's avatar
Simon McVittie committed
    Most of the information in `find -ls` output is not particularly
    interesting for debugging, so just log the list of files, whether each
    one is a directory, and the targets of symlinks. Replace the paths
    to the home directory and the LD_LIBRARY_PATH Steam Runtime with
    $HOME and $STEAM_RUNTIME respectively, to make things more concise.
    (s-r-t!315, Resolves: T28240)

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Tue, 01 Jun 2021 12:26:55 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210518.0) scout; urgency=medium

  * system-info: List /overrides/ correctly in recent SteamLinuxRuntime.
    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.
  * pv-wrap: Share Pipewire socket with container if available
  * pv-runtime: Refactoring
  * resolve-in-sysroot: Correct misleading error messages
  * resolve-in-sysroot: Correctly bail out if a non-directory is found

 -- Simon McVittie <smcv@collabora.com>  Tue, 18 May 2021 11:22:07 +0100

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210430.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Simon McVittie ]
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Performance improvements, especially on systems with
    slow I/O performance
    - Enumerate host system graphics drivers in parallel with other
      required setup
    - Speed up startup with cold cache by skipping unnecessary checks
    - Speed up --copy-runtime mode by not opening shared libraries
      with libelf
  * pressure-vessel: Add a new runtime format with unpacked files
    accompanied by a mtree(5) manifest. This is more space-efficient than
    deploying a tarball, and speeds up setup when running under Flatpak.
    1.11.x subsandboxing. (Resolves: T27912)
  * pv-wrap: Auto-detect Flatpak 1.11.x (T27612)
  * pv-wrap: Suggest an appropriate `flatpak override` command if needed
Simon McVittie's avatar
Simon McVittie committed
  * pv-wrap: Remove support for escaping from a Flatpak container.
    We did this as a very early prototype, but it never fully worked, and
    required configuring Flatpak specially to allow Steam to escape from the
    sandbox (which obviously undermines Flatpak's intended sandboxing).
Simon McVittie's avatar
Simon McVittie committed
  * pv-runtime: Fix some misleading log messages and comments
  * pressure-vessel: Remove unnecessary bundled copies of vainfo and
    vulkaninfo
Simon McVittie's avatar
Simon McVittie committed
  * tests: Update populate-depot.py from SteamLinuxRuntime.
    Adjust invocation as required.
Simon McVittie's avatar
Simon McVittie committed
  * Refactoring
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Try to detect the expansion of $LIB and $PLATFORM (T27436)
  * system-info: Detect Flatpak version (T27635)
  * pressure-vessel: Undo SDL_VIDEODRIVER=wayland if running in scout.
    The SDL in scout is too old for this to work.
    (steam-runtime#232, steam-runtime#396, T27777)
  * pressure-vessel: Show a warning if $PLATFORM cannot be detected.
    This would break our ability to set up VDPAU drivers.
Simon McVittie's avatar
Simon McVittie committed
  * Refactoring

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Fri, 30 Apr 2021 16:45:15 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210415.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * pressure-vessel: Show a warning when attempting to bind /usr/* dirs
    (Helps: #30)
Simon McVittie's avatar
Simon McVittie committed
  * pv-runtime: Improve experimental Flatpak sub-sandboxing support
    (Fixes: T27437, T27438, T27442, T27443)
Simon McVittie's avatar
Simon McVittie committed
  * pv-launch: Fix typo in --help

  [ Simon McVittie ]
Simon McVittie's avatar
Simon McVittie committed
  * pv-runtime: Don't set PulseAudio as default if it was not found,
    fixing a regression in 0.20210317.0 on systems that use plain ALSA
    (Helps: steam-runtime#344, steam-runtime#384)
Simon McVittie's avatar
Simon McVittie committed
  * pv-runtime: Improve experimental Flatpak sub-sandboxing support
Simon McVittie's avatar
Simon McVittie committed
  * Update libglnx
  * pressure-vessel: Don't try to change file ownership when copying a tree

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Thu, 15 Apr 2021 20:25:04 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210331.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Simon McVittie ]
  * Fix handling of libraries with non-ASCII paths
    - pressure-vessel: Fix a crash if a Vulkan ICD or layer is in a
      directory with a non-ASCII name
    - system-info: Show details of libraries in non-ASCII locations
      correctly
    (Resolves: steam-runtime#385, steam-runtime-tools#69)
  * system-info: Force environment variables into UTF-8

  [ Ludovico de Nittis ]
  * pressure-vessel: Use a tmpfs home directory when unsharing the home
    directory and running non-interactively. (Resolves: steam-runtime#66)
Simon McVittie's avatar
Simon McVittie committed
  * steam-runtime-steam-remote: Add a stub steam executable.
    This tries to communicate with the running Steam client and pass
    command-line options to it, and is suitable for placing in a container's
    PATH as 'steam'. (Helps: T27035)
Simon McVittie's avatar
Simon McVittie committed
  * steam-runtime-urlopen: Add a more Steam-centric URL-opening helper,
    command-line-compatible with xdg-open.
    This handles steam: and steamlink: URLs by passing them to the running
    Steam client, even if it is not the default handler for those URLs,
    and makes it possible to open http and https URLs via Steam if
    xdg-desktop-portal is not available. (Helps: T27036)
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Wed, 31 Mar 2021 16:59:04 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210317.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * pressure-vessel: Create symlinks for non-canonical SONAMES
    such as libbz2.so.1
    (Resolves: T26816; helps: steam-runtime#246)
  * pressure-vessel: Set PulseAudio as the default ALSA driver if available.
    (Resolves: steam-runtime-tools#65; helps: steam-runtime#371)
Simon McVittie's avatar
Simon McVittie committed
  * pv-runtime: Use "/usr/share" as a fallback library data directory,
    for better support for e.g. Exherbo (Resolves: steam-runtime-tools#68)
  * pv-runtime: Try Exherbo's locale dirs as a fallback
    (partially addresses: steam-runtime-tools#67)
Simon McVittie's avatar
Simon McVittie committed
  * tests: Test ability to unshare the home directory

  [ Simon McVittie ]
  * pressure-vessel: Fix Proton setup commands in locales that use a
    decimal comma, such as de_DE (helps: steam-runtime#381)
Simon McVittie's avatar
Simon McVittie committed
  * pv-runtime: Avoid a spurious warning on first use
  * pv-wrap: Fix a regression in the experimental Flatpak sub-sandboxing
    code path with newer SteamLinuxRuntime wrapper scripts
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Wed, 17 Mar 2021 19:17:08 +0000
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210312.0) scout; urgency=medium

  * pressure-vessel: Fix a regression when using a game-specific home
    directory. Mount points appeared in the wrong order, resulting in
    the game-specific home covering up directories that should have been
    shared, such as ~/.steam (Resolves: #63)
  * pressure-vessel: Fix a regression when not using any runtime

 -- Simon McVittie <smcv@collabora.com>  Fri, 12 Mar 2021 19:19:42 +0000

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210305.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Simon McVittie ]
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Fix processing of Vulkan ICDs/layers outside /usr
    where the library_path in the JSON manifest is just a SONAME
    (Resolves: steam-runtime#366)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Fix regressions when graphics provider is set to empty
  * pressure-vessel: Default to using graphics drivers from the current
    execution environment, not necessarily the host
    (Resolves: steam-runtime#367)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Cope with /var/tmp (or /var) being a symlink
    (Resolves: steam-runtime#368)
Simon McVittie's avatar
Simon McVittie committed
  * pv-wrap: Make PROTON_LOG_DIR available in the container
    (Resolves: steam-runtime#369)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Never set XDG_DATA_DIRS to just our override directory.
    Default to /usr/local/share:/usr/share as per the specification.
  * pressure-vessel: Mask Vulkan layers in home directory or other non-/usr
    paths. This avoids the Steam fossilize and overlay layers being
    duplicated in the container's search path. (Resolves: T26160)
  * pressure-vessel: Accept runtime with or without ./files at top level
  * pv-launch: Sync minor improvements from flatpak-xdg-utils
  * pv-launch: Use unset-env option for subsandbox API >= v5.
    This was added in Flatpak 1.10.0.
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Improve diagnostics for various error conditions
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Generalize --copy-runtime-into into --variable-dir
  * pressure-vessel: Fix locking behaviour in variable directory
  * pressure-vessel: Add support for unpacking runtimes from an archive.
    This previously had to be done by the SteamLinuxRuntime shell scripts.
  * pressure-vessel: Automatically enable --copy-runtime if running
    under Flatpak
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Make sure Debian-based runtimes will look in
    /lib/terminfo, fixing the PRESSURE_VESSEL_SHELL=instead xterm's
    behaviour when not running on a Debian derivative
  * pressure-vessel: Treat LD_AUDIT the same as LD_PRELOAD, as another step
    towards Flatpak support
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Put apt-style severity prefixes on messages
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Add experimental code path for Flatpak sub-sandboxing.
    This requires branches of Flatpak that have not yet been reviewed or
    merged, so it isn't expected to work yet. Only pressure-vessel or
    Flatpak developers should enable this.
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Make /run/bumblebee.socket visible in container.
    This is sometimes helpful for Primus/Bumblebee setups, although we
    recommend PRIME render offloading (DRI_PRIME=1 for Mesa or
    __NV_PRIME_RENDER_OFFLOAD=1 for NVIDIA) as a more reliable way to manage
    multiple GPUs. (Helps: steam-runtime#372)
  * debian: Make symlinks in RPATH point to libraries by SONAME.
    This makes the steam-runtime-system-info in the LD_LIBRARY_PATH
    Steam Runtime work more reliably across GLib upgrades.
Simon McVittie's avatar
Simon McVittie committed
  * Refactoring
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Respect search-cwd flag in STEAM_COMPAT_FLAGS.
    This should fix games like Shadowrun Returns that assume their
    installation directory is in the LD_LIBRARY_PATH.
    (Resolves: steam-runtime#371, steam-runtime-tools#46)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Run nvidia-modprobe -u before entering the container
    if needed, to load nvidia_uvm.ko for Vulkan ray-tracing support
Simon McVittie's avatar
Simon McVittie committed
    (Resolves: steam-runtime-tools#59)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Update flatpak-run to the latest upstream version.
    This includes a fix to propagate the X11 cookies that have an address
    equal to XAUTHLOCALHOSTNAME, fixing X11 authentication on some openSUSE
    systems (Resolves: steam-runtime-tools#53)
Simon McVittie's avatar
Simon McVittie committed
  * runtime: Bind the drirc settings from the provider
    (Resolves: steam-runtime-tools#60)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Improve library binding speed
Simon McVittie's avatar
Simon McVittie committed
  * pv-adverb: Remove unused locales temporary directories
    (Resolves: steam-runtime-tools#56)
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Report duplicate Vulkan ICDs/layers as an issue.
    This helps us to detect misconfigured host systems, and also helps to
    detect regressions where we duplicate ICDs/layers in the pressure-vessel
    container that were not duplicates on the host. (Resolves: T26156)
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Add ability to set multiarch tuples to inspect
Simon McVittie's avatar
Simon McVittie committed
    (Resolves: steam-runtime-tools#58)
  * pressure-vessel: Mount systemd-resolved varlink socket if available
    (Resolves: steam-runtime-tools#61)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Include Vulkan shaders required by the included
    diagnostic tool (Resolves: steam-runtime-tools#62)
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Parse Vulkan layers from a report in the right order
Simon McVittie's avatar
Simon McVittie committed
  * tests: Programmatically generate more mock sysroots instead of including
    them in the source release (Resolves: T26709)
Simon McVittie's avatar
Simon McVittie committed
  * Refactoring
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Fri, 05 Mar 2021 11:08:01 +0000
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210203.0) scout; urgency=medium

  * pressure-vessel: Revert improvements to speed of container setup.
    This optimization caused some Vulkan layers and ICDs to appear more
    than once in the container, which makes some games hang.
    (Maybe resolves: steam-runtime#361, steam-runtime#362, steam-runtime#363)
  * system-info: Log environment variables used by various Vulkan layers

 -- Simon McVittie <smcv@collabora.com>  Wed, 03 Feb 2021 16:33:56 +0000

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210201.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Simon McVittie ]
  * pressure-vessel: Make graphics stack provider's /etc/amd available
    in the container.
    This is needed for at least one of the AMD-maintained graphics stacks:
    AMDVLK (open-source) and/or AMDGPU-PRO (proprietary).
    (Resolves: steam-runtime#313)
  * pressure-vessel: Make host's /etc available for reference in
    /run/host/etc inside the container (also graphics stack provider's /etc
    in /run/gfx/etc, if different)
  * pressure-vessel: Make /var/tmp available in the container
  * system-info: Show various environment variables that influence
    components that we are interested in:
    - the Steam client
    - SDL
    - Wine/Proton
    - PulseAudio clients
    - ALSA clients
  * check-vulkan: Fix compilation on Steam Runtime 1½ 'heavy'.
    heavy is still on Vulkan loader v1.1.73, which doesn't know
    VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT.
  * tests: Fix unit test failure if environment variables like DRI_PRIME
    are set

  [ Ludovico de Nittis ]
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Improve speed of container setup by combining multiple
    calls to capsule-capture-libs
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Show machine-readable info for each Vulkan PhysicalDevice
    (each GPU/driver combination, plus software rendering if available).
    This should help us to see what is going wrong in multi-GPU scenarios.
    (Helps: steam-runtime#312, steam-runtime#341, steam-runtime#352;
    maybe also steam-runtime#340)

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Mon, 01 Feb 2021 19:03:26 +0000
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210126.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * pressure-vessel: Fix a crash when environment variables carried over
    from the host are not in the expected encoding
    - In particular this fixes a crash when a game's installation directory
      contains the trademark symbol. (Resolves: #52, steam-runtime#349)
  * system-info: Fix a crash in some unlikely error cases
  * system-info: Refactoring
Simon McVittie's avatar
Simon McVittie committed
  * check-vulkan: Avoid a possible crash
  * check-vulkan: Convert from C++ to C
  * check-vulkan: List all Vulkan GPUs
  * check-vulkan: Improve error messages
Simon McVittie's avatar
Simon McVittie committed

  [ Simon McVittie ]
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Log more influential environment variables
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Add support for reading /run/host/container-manager
  * system-info: Add support for detecting Podman
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Print diagnostic messages as arrays of lines
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Temporarily print details of all GPUs as diagnostic
    messages, until we support printing them in a machine-readable way
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Tue, 26 Jan 2021 13:22:50 +0000
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210114.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * pressure-vessel: Fix loading of ICDs and Vulkan layers that are
    referenced by a bare SONAME (Resolves: #49)
    - In particular this fixes the Mesa device selection layer
  * pressure-vessel: Improve handling of LD_PRELOAD

  [ Simon McVittie ]
  * pressure-vessel: Find PulseAudio socket on systems that do not use
    XDG_RUNTIME_DIR (Resolves: #51, steam-runtime#343)
  * pressure-vessel: Further refactoring towards being able to run from
    inside Flatpak
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Create symlinks for various distros' ld.so.cache
    equivalents, improving ability to run on Clear Linux and Exherbo
Simon McVittie's avatar
Simon McVittie committed
    (partially addresses steam-runtime#345, steam-runtime#230)
Simon McVittie's avatar
Simon McVittie committed
  * pv-wrap: *Really* don't assume container's env is in the PATH,
    again for Exherbo (partially addresses steam-runtime#230).
  * pressure-vessel: Implement the container indicator from systemd's
    CONTAINER_INTERFACE ($container and /run/host/container-manager)
Simon McVittie's avatar
Simon McVittie committed
  * test-ui: Look for runtimes in PRESSURE_VESSEL_VARIABLE_DIR.
    Future versions of SteamLinuxRuntime will use this to move the
    non-Steampipe-managed runtimes into a var/ subdirectory.
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Thu, 14 Jan 2021 14:29:37 +0000
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20210105.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Simon McVittie ]
  * pv-wrap: Make graphics drivers outside $HOME available, if used
    (Resolves: #29, steam-runtime#313)
  * pv-wrap: Refactor collection of DRI drivers so we use all the search
    paths that SrtGraphics knows about
    - Also look for Mesa DRI drivers in ${libdir}/xorg/modules/dri,
      used on Slackware (Resolves: steam-runtime#318)
  * pv-wrap: Don't assume container's env is in the PATH.
    Some OS distributions, notably Exherbo, don't put /usr/bin in their
    PATH. This means we can't safely use their PATH to invoke standard tools
    inside the container. (Partially addresses steam-runtime#230)
  * pv-wrap: Always disable gtk3-nocsd.
    This module interposes in front of g_object_get(), and is known to cause
    crashes, even in programs that use GObject but not GTK.
    (Resolves: steam-runtime#286)
  * pv-wrap: Cope with /tmp being a symlink.
    If /tmp is a symlink in the current execution environment, then when
    we ask bwrap to bind-mount /tmp/pressure-vessel-wrap.XXXXXX/overrides
    over itself, it will try to create the parent directory /tmp, and fail
    because there's a symlink in the way. Canonicalize the path and use that
    instead. Partially addresses steam-runtime#321 (symlinks "above" the home
    directory have the same problem, but are harder to fix).
  * Improve diagnostic tools bundled with relocatable pressure-vessel:
    - Don't wrap steam-runtime-system-info, so it can find its helpers
    - Include vulkaninfo and wflinfo in relocatable installs
  * pv-wrap: Remove --host-fallback option.
    We are not going to be able to do this from within Flatpak, and it is
    unsuitable for running runtimes other than Steam Runtime 1 'scout',
    for which the LD_LIBRARY_PATH runtime mostly already works.
    If we need an automatic fallback to running on the host for scout games,
    we can do that better by running `pressure-vessel-wrap --test`.
  * pressure-vessel: Speed up execution of short-lived subprocesses.
    In particular, if the soft limit on open file descriptors is very large
    (formerly recommended for Proton "esync", although the current
    recommendation is to set a small soft limit and a large hard limit)
    this can speed up pressure-vessel by as much as 90%. In more normal
    configurations it can still save 10%. (Resolves: steam-runtime#323)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Stop running bwrap --help, no longer needed.
Simon McVittie's avatar
Simon McVittie committed
  * pv-wrap: Log pressure-vessel version on startup.
    This serves two purposes: it gives us a timestamp for when
    pressure-vessel started, and it puts the version number in the log.
Simon McVittie's avatar
Simon McVittie committed
  * Preparatory work for being able to run inside Flatpak:
Simon McVittie's avatar
Simon McVittie committed
    - system-info: Look in both /overrides and /usr/lib/p-v/overrides
Simon McVittie's avatar
Simon McVittie committed
    - pv-wrap: In Flatpak, use pv-launch to run commands on the host
    - pv-wrap: Remap $HOME for Flatpak correctly
    - pv-wrap: In Flatpak, put game in same userns/pidns as Steam if possible
    - pv-launch: Add the ability to unset environment variables when using
      Flatpak APIs on the host
    - Lots of refactoring in PvRuntime
  * THIRD-PARTY.md: Add more licenses for steam-runtime-tools
  * THIRD-PARTY.md: Point to git repo for steam-runtime-tools source
  * THIRD-PARTY.md: Point to scout images for third-party library source

  [ Ludovico de Nittis ]
  * system-info: Diagnose STEAM_COMPAT_CLIENT_INSTALL_PATH mismatch
    (Resolves: #41)
  * runtime: correctly handle ICD for different ABI even without subdirs
    (Resolves: #45)
Simon McVittie's avatar
Simon McVittie committed
  * graphics: Do not load JSON ICDs multiple times from the same directory
    (Resolves: #48; partially addresses steam-runtime#336)
  * Refactor logging
  * Add PRESSURE_VESSEL_LOG_INFO and PRESSURE_VESSEL_LOG_WITH_TIMESTAMP
    environment variables
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Start to use the "info" log level
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Tue, 05 Jan 2021 18:12:58 +0000
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20201203.0) scout; urgency=medium

  [ Ludovico de Nittis ]
  * pressure-vessel: Cope with Vulkan meta-layers and handle them specially,
    fixing an assertion failure (Resolves: steam-runtime#306)
  * pressure-vessel: Add option to disable the import of Vulkan layers.
    Users experiencing problems with Vulkan layers can disable their
    inclusion in the container with environment variable
    PRESSURE_VESSEL_IMPORT_VULKAN_LAYERS=0. (Resolves: steam-runtime-tools#37)
  * pressure-vessel: Do not dlopen layers if it isn't necessary.
    This makes it more likely that we can share the same JSON manifest
    for all word-sizes, working around some overzealous deduplication
    in the Vulkan loader. (Partially addresses: steam-runtime-tools#39)
  * diagnostic tools: Try more VA-API code paths, so that the check can pass
    on Intel GPUs (Resolves: steam-runtime-tools#24)

  [ Simon McVittie ]
  * pressure-vessel: Fix VDPAU driver loading when using newer glibc on
    post-Haswell CPUs
  * pressure-vessel: Improve correctness of PRESSURE_VESSEL_COPY_RUNTIME_INTO
    by removing more conflicting libraries
  * input-device test: Add more test data

 -- Simon McVittie <smcv@collabora.com>  Thu, 03 Dec 2020 18:20:30 +0000

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20201124.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Simon McVittie ]
Simon McVittie's avatar
Simon McVittie committed
  * runtime: Expand libqual into an array of multilib directories.
    This is a step towards searching all the necessary places for unusual
Simon McVittie's avatar
Simon McVittie committed
    distributions like Exherbo (see steam-runtime#230), and gives us
Simon McVittie's avatar
Simon McVittie committed
    an obvious extension point for adding more multilib directories.
  * runtime: Don't issue warnings when unable to delete from runtime copy
  * pressure-vessel-unruntime: Don't assume bash is at /bin/bash.
    Apparently NixOS puts it somewhere else.
  * pressure-vessel: Fix a wrong assertion that prevented running the
    container with libraries from the host system instead of a runtime.
    Steam never does this, but it's occasionally useful for debugging.
  * pressure-vessel: Make /nix available read-only, if it exists.
    This is necessary (but not sufficient!) for NixOS support.
  * pressure-vessel: Make sure ~/.steam is available in the container,
    even if it's a symbolic link (steam-runtime#291)
  * pressure-vessel-wrap: Add environment variables to share filesystems
  * pressure-vessel: Make STEAM_EXTRA_COMPAT_TOOLS_PATHS available
    (partially addresses steam-runtime#302)
Simon McVittie's avatar
Simon McVittie committed
  * input-device: Add a new API for input device enumeration and monitoring.
    This can list and inspect input devices using libudev or directly, and
    is potentially a basis for a future input device portal (see
    steam-runtime-tools#11).
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Detect whether the expected runtime linker is present.
    On operating systems with unusual path layouts, such as Exherbo and
    NixOS, the de facto standard path for the runtime linker is not
    necessarily present for all architectures.
    (Of course, if the x86_64 runtime linker is not present, we won't
    normally be able to run steam-runtime-system-info either, but at least
    users of such operating systems can compile it from source code if they
    need to provide diagnostics.)
Simon McVittie's avatar
Simon McVittie committed
  * bin: Add new steam-runtime-input-monitor diagnostic tool
  * bin, pressure-vessel: Disable GIO modules differently.
    This avoids some misleading warnings (steam-runtime-tools#32).
  * bin: Link diagnostic tools to libsteam-runtime-tools statically
  * lib: Don't export private _srt_filter_gameoverlayrenderer
  * tests: Link utils test to libsteam-runtime-tools statically
  * tests: Move some tests for utility code out of pressure-vessel
  * utils: Add the ability to find our prefix when statically linked
  * build: Fix dependencies on generated headers
Simon McVittie's avatar
Simon McVittie committed
  * build: Compile using gcc-4.8 on scout
  * debian: Allow building with only libcapsule-tools-relocatable installed
  * tests: Generate sysroots for each test, instead of per-build
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * pressure-vessel: Make the original environment available
  * pressure-vessel: Treat LD_LIBRARY_PATH as system libraries.
    At this stage we expect to have `LD_LIBRARY_PATH` set to the
    `SYSTEM_LD_LIBRARY_PATH` of `steam.sh`.
    This means that we should treat the `LD_LIBRARY_PATH` entries as
    OS-level search path too.
  * pressure-vessel-unruntime: Support PRESSURE_VESSEL_APP_LD_LIBRARY_PATH
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: Add support for Vulkan layers.
    When we use the provider graphics stack we also try to collect the
    available Vulkan layers, similarly to what we already do for ICDs.
    (T24365, T24347, T24348)
Simon McVittie's avatar
Simon McVittie committed
  * pressure-vessel: use the new libcapsule "--remap-link-prefix" option.
    Using the new "--remap-link-prefix" option we can now avoid breaking
    symlinks not available under `/run/host`, such as Vulkan layers or
    drivers in the home directory or in /opt. (steam-runtime-tools#29)
  * pressure-vessel: Include host's fonts in the newly built container.
    Soldier and Scout include a limited set of fonts that doesn't cover all
    use cases. For example it is missing the necessary glyphs for Asian
    languages. For this change to be effective, the container also needs an
    updated steamrt-container-host-compat package.
    (steam-runtime#289, T24559)
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Diagnose implicit and explicit Vulkan layers
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Add helper to check for xdg-desktop-portal
Simon McVittie's avatar
Simon McVittie committed
  * system-info: Detect Primus graphics driver
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Tue, 24 Nov 2020 19:18:06 +0000
Simon McVittie's avatar
Simon McVittie committed

steam-runtime-tools (0.20201022.0) scout; urgency=medium

  [ Ludovico de Nittis ]
  * wrap: Set all the env vars before building the locking list.
    This ensures pressure-vessel picks up the correct DISPLAY and XAUTHORITY
    to work in situations where the X11 server does not listen on an
    abstract socket, such as recent GNOME in Wayland mode.
    (steam-runtime-tools#26, Proton#4270)
  * Add support for Arch Linux /etc/locale.gen. (steam-runtime-tools#5)
  * system-info: Return the correct value if the assertion fails

 -- Simon McVittie <smcv@collabora.com>  Thu, 22 Oct 2020 10:09:01 +0100

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20201007.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * wrap: Do not lock LD_PRELOAD, so that games run in session mode get the
    Steam Overlay (steam-runtime-tools#21)
  * launch: Close the file descriptors after being forwarded
  * CI: Avoid partial upgrades
  * Diagnostic tools: include STEAMSCRIPT and STEAMSCRIPT_VERSION.
    These provide details of the Steam bootstrapper script. (T22352)

  [ Simon McVittie ]
  * launch: Add support for communicating with Flatpak services
  * adverb: Don't "pile up" errors if we cannot exec generate-locales
  * adverb, launch, launcher: Store original environment
  * flatpak-run: Make this more similar to Flatpak's version
  * tests: Allow more time for test-locale-gen.sh

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Wed, 07 Oct 2020 16:25:00 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20201002.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * Reapply "runtime: Set STEAM_RUNTIME=/ if running in scout".
    This will reassure some games, particularly those ported by Feral
    Interactive, that they are running in the right environment.
    Last time we tried this, it broke GTK in scout, but since then we have
    fixed the custom search path patches in various libraries to cope.
    (Resolves: pressure-vessel#8; maybe also: steam-runtime#202,
    steam-runtime#249)
Simon McVittie's avatar
Simon McVittie committed
  * wrap, launcher: Add an environment variable locking system.
    If we want to pass all the possible variables that a user might have set
    in the environment, then we need a mechanism to lock the variables that
    pressure-vessel is editing (e.g. LIBGL_DRIVERS_PATH), variables that we
    want to keep unset because will be wrong in the new container (e.g.
    FLATPAK_ID) and variables that should inherit their value from the host
    system (e.g. DISPLAY).
    (Part of steam-runtime-tools#17)
  * wrap: Save original environ before potentially altering it
  * launcher: add support for unsetting environment variables
Simon McVittie's avatar
Simon McVittie committed
  * json-glib-compat.h: Use the correct cleanup function for JsonArray
  * fake-home.c: Do not shadow the possible global declaration of dirname

  [ Simon McVittie ]
Simon McVittie's avatar
Simon McVittie committed
  * launcher: Always set PWD to the command's actual working directory,
    ignoring "locked" variables
Simon McVittie's avatar
Simon McVittie committed
  * build: Link libglnx into steam-runtime-tools library.
    This changes the effective license of the library from MIT/X11 to LGPL,
    and will let us make more use of libglnx in future to make the library
    more reliable.
Simon McVittie's avatar
Simon McVittie committed
    - graphics, tests: Start to use g_autofree
  * libsrt: Explicitly control symbol visibility
Simon McVittie's avatar
Simon McVittie committed
  * libsrt: Move non-public utility functions to internal header
Simon McVittie's avatar
Simon McVittie committed
  * libsrt: Start moving pressure-vessel utilities into the library
Simon McVittie's avatar
Simon McVittie committed
  * flatpak-bwrap: Update from Flatpak 1.8.2
    gcc 10 correctly diagnoses that if there are 0 bytes of arguments, we'll
    allocate no bytes, leaving no space for this (unnecessary) '\0'.
Simon McVittie's avatar
Simon McVittie committed
  * graphics: Fix a minor memory leak
  * graphics: Canonicalize relative filenames before prepending sysroot
  * graphics: Fix shadowing
  * system-info: Open sysroot as a file descriptor
  * system-info: Resolve container flag-files via sysroot
  * system-info: Always pass around a non-NULL environment block
  * README: Add more information about pressure-vessel
Simon McVittie's avatar
Simon McVittie committed
  * tests: Parse and re-serialize expected JSON output.
    This avoids test failure when using json-glib 1.6.x, which pretty-prints
    empty arrays and empty objects differently.
  * tests: Consolidate test-helper libraries
Simon McVittie's avatar
Simon McVittie committed
  * Fix various gtk-doc warnings
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Fri, 02 Oct 2020 13:53:34 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
steam-runtime-tools (0.20200914.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed
  [ Simon McVittie ]
  * Combine steam-runtime-tools with pressure-vessel (T22909)
Simon McVittie's avatar
Simon McVittie committed
  * inspect-library: Refactoring
  * CI improvements
Simon McVittie's avatar
Simon McVittie committed
  [ Ludovico de Nittis ]
  * steam: Do not report an issue if the Flatpak version of Steam is the
    default URI handler
  * wrap: Propagate even unchanged environment variables if running
    in Flatpak

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Mon, 14 Sep 2020 17:17:04 +0100
Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200909.0) scout; urgency=medium

  * Revert "runtime: Set STEAM_RUNTIME=/ if running in scout".
    Setting STEAM_RUNTIME=/ causes configuration changes in libraries like
    Pango and GTK, which break module loading when not in the
    LD_LIBRARY_PATH Steam Runtime. We will need to update those libraries'
    search paths before we can do this.
    (Reopens: pressure-vessel#8, steam-runtime#202, steam-runtime#249)

 -- Simon McVittie <smcv@collabora.com>  Wed, 09 Sep 2020 18:51:19 +0100

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200908.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * Initial support for escaping from a Flatpak app to run games.
    Due to Flatpak limitations, this prototype only works when the Flatpak
    sandbox security has been completely disabled. Future development in both
    Flatpak and pressure-vessel will be required to be able to launch games
    in individual containers while keeping a security boundary between Steam
    and the host system. (Resolves: T22373, T22371)
Simon McVittie's avatar
Simon McVittie committed
  * CI: Run tests/containers.py
Simon McVittie's avatar
Simon McVittie committed

  [ Simon McVittie ]
  * runtime: Carry out the /usr merge when copying sysroots
    (Resolves: pressure-vessel#3, T22126)
  * wrap: Don't populate environment of FlatpakBwrap that will be merged
    (Resolves: T23422)
  * wrap: Use FlatpakExports to make host paths available in container.
    This gives us access to the same tricks that Flatpak uses to get host
    paths into the container in a more robust way: in particular, it sorts
    paths to put parent before child, and exports symbolic links as symbolic
    links plus a separate mount point for the target (which we previously
    did for the subdirectories of ~/.steam, but nowhere else).
Simon McVittie's avatar
Simon McVittie committed
    (Resolves: pressure-vessel#2, pressure-vessel#18; part of T22908)
Simon McVittie's avatar
Simon McVittie committed
  * various commands: Print exit status immediately before exiting
  * various commands: Include process ID in output.
    When we have more than one layer of adverbs, this provides a way to
    tell which one we are.
Simon McVittie's avatar
Simon McVittie committed
  * wrap, adverb: Move "wrap with xterm" code into the adverb.
    This means the launching scripts for the "session" mode, which use
    pv-launch to run the main game command in a previously-set-up pv-launcher
    environment, can direct pv-adverb to run an interactive shell instead of
    or in addition to the actual game.
    (Part of steamlinuxruntime#2)
  * wrap: Always mount /tmp from host for now.
    SteamHTMLSurface and SteamVR use this as a rendezvous directory for
    IPC. (Resolves: pressure-vessel#10)
  * wrap: Parse app ID from $STEAM_COMPAT_APP_ID
  * wrap: Parse several environment variables for paths to mount.
    When combined with a Steam update, this should resolve a lot of issues
    involving paths outside the current working directory.
    (Resolves: pressure-vessel#4, pressure-vessel#11, pressure-vessel#12,
    steam-runtime#217, steam-runtime#236, steam-runtime#257)
  * wrap, adverb, launcher: Add ability to pass fds through to the command
    (Resolves: pressure-vessel#6)
  * runtime: Load basic NSS plugins along with host system glibc,
    fixing username resolution in soldier container on Arch Linux.
    This might also resolve steam-runtime#226, steam-runtime#264,
    steam-runtime#258, steam-runtime#192, steam-runtime#262,
    steam-runtime#227.
  * runtime: Set STEAM_RUNTIME=/ if running in scout
    (Resolves: pressure-vessel#8, and maybe steam-runtime#202,
    steam-runtime#249)
  * Improve automated tests
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Tue, 08 Sep 2020 18:30:07 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200819.0) scout; urgency=medium

  * adverb, wrap: Add --terminate-timeout, --terminate-idle-timeout options.
    This will let us clean up background processes when sharing a container
    between multiple commands using -launcher and -launch.
  * adverb, wrap: Implement --exit-with-parent.
    -wrap eventually replaces itself with bubblewrap. If the bubblewrap
    process is killed, we want the adverb command to be terminated, passing
    the termination signal on to its own child process.
  * adverb: When sent a common fatal signal, try to pass it on to the child
  * launch, launcher: Allow terminating commands after a "main" command exits.
    This can be used when launching Proton games, which consist of zero or
    more setup commands, which may launch background processes, followed by
    launching the game itself.
  * wrap: Don't set up X11, etc. until after --filesystem.
    If we want to be able to use --filesystem=/tmp, then we can't set up
    the X11 socket until after we're finished with that.
  * launch: Improve error handling for forwarding signals
  * launch: Fix program name in logging
  * runtime: Always provide adverb at /run/pressure-vessel/pv-from-host
  * glib-backports: Redo backported Unix fd source in terms of a new GSource
  * Remove -unruntime-test-ui.
    We have a straightforward environment-variable-based way to select this.
  * Remove unruntime-scout.
    The SteamLinuxRuntime depot has a better implementation of this.
  * man: Improve documentation
  * CI fixes

 -- Simon McVittie <smcv@collabora.com>  Wed, 19 Aug 2020 16:33:45 +0100

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200805.0) scout; urgency=medium

  [ Simon McVittie ]
  * wrap: Bind-mount /run/host/os-release if available.
    Recent versions of Flatpak and systemd-nspawn can mount the host's
    os-release at /run/host/os-release, even if the rest of the host's
    /etc and /usr are not exposed to the container. For feature parity
    we should try to do the same.
  * runtime: Fix logic for whether to mount over an executable.
    When using a scout sysroot with a newer-than-scout host, we were not
    overwriting locale(1) and localedef(1) with the host copy, causing
    mismatches.
    Resolves: T22877
  * wrap: Add a minimal implementation of --filesystem.
    This is like `flatpak run --filesystem`, but for now much, much simpler;
    callers are responsible for not giving us paths that will be a problem.
    However, it's enough to bind-mount subdirectories of /tmp, which is
    what we need if we want to use them as IPC rendezvous points.
  * launcher: Add ability to run multiple commands in one container.
    See the new pressure-vessel-launcher(1) man page for details.
    We need this for Proton games, where running a game takes several
    steps. At the moment each step is its own container, which means
    they can't share locks, IPC sockets and other state.
    Partially resolves: T22770
  * all: Consistently work around glib!490 like Flatpak does
  * adverb, wrap: Don't interfere with child process's stdin, stdout
  * adverb, wrap: Pass verbosity down to adverb
  * adverb, wrap: Share pv_boolean_environment()

  [ Ludovico de Nittis ]
  * gitlab-ci: Re-enable artifacts upload.
    By increasing the CI upload limit we should be able to store the
    pressure-vessel artifacts.
  * Move locale generation to pressure-vessel-adverb
    pressure-vessel-with-lock has been renamed to pressure-vessel-adverb
    because now it has more capabilities than just taking a lock.
    This change should help the environments that are not able to normally
    run `bwrap`, like if we are in a Docker container or in a Flatpak app.
  * Test that --generate-locales is in the bwrap arguments when expected
  * tests/containers.py: Remove duplicated code

 -- Simon McVittie <smcv@collabora.com>  Wed, 05 Aug 2020 18:51:16 +0100

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200709.0) scout; urgency=medium

  * d/control: Fix wrong dependencies.
    I'd only intended to bump the version on the libcapsule dependency,
    not the steam-runtime-tools dependency.
  * runtime: Remove hwcaps subdirectories when looking for gconv modules.
    tests/containers.py was failing on SteamOS 2 'brewmaster' with the
    libc6-i686 package installed, because that package contains an
    optimized i686 glibc in /lib/i386-linux-gnu/i686/cmov/libc.so.6, which
    is used in preference to the baseline i586 glibc in
    /lib/i386-linux-gnu/libc.so.6. There are no corresponding optimized
    gconv modules, only /usr/lib/i386-linux-gnu/gconv/*.
  * tests: Add support for basic testing on a soldier container.
    For the moment, this is basically scout with fewer guarantees: we
    can't assume whether the host glibc is newer (like Arch Linux or
    Ubuntu 20.04) or older (like SteamOS 2 'brewmaster'). (T22544)
  * tests: Run s-r-s-i on host with LD_BIND_NOW=1.
    If we allow lazy binding, we can succeed in loading a GIO module from
    the host (which depends on a newer GObject than the one bundled with
    pressure-vessel), then find that a symbol reference fails at the time
    that we try to actually use it. Make it fail early, instead.
    In particular, this is helpful on SteamOS 2 'brewmaster'.
  * tests: Ignore inability to load libOSMesa.so.8.
    This is included in prerelease versions of SteamRT 2 'soldier',
    but because it uses the post-gcc-5 C++ ABI of libLLVM-7.so.1, it's
    incompatible with versions of libLLVM-7.so.1 that were compiled to be
    compatible with the gcc 4 C++ ABI, and in particular the one in
    SteamOS 2 'brewmaster'.
    This and the previous commit are sufficient to make tests/containers.py
    pass on SteamOS 2 'brewmaster', if we also configure libxcb.so.1 to
    be chosen by counting symbols (T22538) and libgcc_s.so.1 to be chosen
    by counting verdefs (T16561).

 -- Simon McVittie <smcv@collabora.com>  Thu, 09 Jul 2020 11:43:09 +0100

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200708.0) scout; urgency=medium

  * unruntime, wrap: Add a way to disable all interactivity.
    This is desirable if we are running something other than the main game,
    for example steam-runtime-system-info or various preparatory steps
    involved in running Proton.
  * wrap: Import Steam compat tool data. (T22360)
    This is necessary for Steam "compat tools" such as Proton.
    STEAM_COMPAT_DATA_PATH points to data associated with the current
    (compat tool, game) pair, for example the ${WINEPREFIX}.
    STEAM_COMPAT_TOOL_PATH doesn't exist yet, but I'm assuming that it will
    be set by some later version of the Steam client to point to Proton
    itself.
    STEAM_COMPAT_CLIENT_INSTALL_PATH points to the Steam installation. This
    is hopefully in the home directory, so hopefully we bind-mount it anyway;
    but if we don't, we should.
  * runtime: Add arguments to the right bwrap invocation.
    When we're entering the container to generate locales, we need to
    bind-mount the staging area for /overrides in *that* bwrap invocation,
    not add it as a bind-mount to the bwrap invocation that will actually
    run the game. (T22534)
  * runtime: Factor out beginning of capsule-capture-libs command-line.
    This doesn't currently include the --dest because that varies - it's
    usually arch->libdir_on_host, but not always.
  * runtime: Pass --library-knowledge to capsule-capture-libs if possible.
    For runtimes that support it, this gives us a way to override library
    comparisons. In particular, we can make sure libgcc_s.so.1 is compared
    by its version-definitions and symbols. (T16561, T16562)
  * run-in-sysroot: Copy host /etc/passwd, /etc/group.
    Otherwise, any test that refers to the username or home directory will
    fail with a warning. Prior to GLib 2.35.9 (in particular, in GLib 2.32)
    this happens in g_get_any_init_do(), which is also called to get the
    TMPDIR, so any test that wants to create a temporary directory will
    fail like this.

 -- Simon McVittie <smcv@collabora.com>  Wed, 08 Jul 2020 18:43:05 +0100

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200624.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Ludovico de Nittis ]
  * Bind VDPAU drivers.
    If available, and newer, we bind VDPAU drivers from the host system.
  * Bind VA-API drivers and loaders.
    If available, and newer, we bind VA-API drivers and loaders from the
    host system.
  * runtime: handle merged-/usr host OS with non merged-/usr container.
    Prioritize "/usr/" over "/lib/" if it is available to avoid issues when
    we use a non merged-/usr container with a host system that is
    merged-/usr. (T22125)

  [ Simon McVittie ]
  * Update libglnx subproject from upstream
  * runtime: Look for ldconfig in /sbin, /usr/sbin.
    If we are on an OS where /sbin is not normally in unprivileged users'
    PATHs (for example Debian), we won't find ldconfig in PATH and will
    need to try harder.
  * runtime: Reset PATH in the container.
    The PATH from outside the container doesn't really make sense inside
    the container, because the directory hierarchy could be totally different
    (particularly on unusual host systems like GoboLinux and Exherbo).
    Resetting it also makes sure we don't pick up local installations in
    ~/bin or ~/.local/bin, which could have dependencies that are
    unsatisfied in the container.
    Conversely, the PATH from the host might not include everything we need
    in the container.
  * runtime: Don't critical if we were unable to lock the runtime
  * runtime: Add an option to skip generating missing locales.
    This is one of the slower parts of the whole process, and not all
    games (or automated tests) even need it.
  * runtime: Factor out a struct to hold architecture-specific details
  * runtime: Save a bwrap invocation and a shell by not using globbing
  * runtime: Sort DRI "search path" more carefully.
    As noted in the comment, the order matters.
  * runtime: Access runtime without using bwrap if possible
  * runtime: Optionally copy the runtime, and bind-mount the copy.
    This is good for two reasons. In a Flatpak runtime, we will not be able
    to do tricks with arbitrary bind-mounts; if we want the host library
    stack, we will have to rewrite the mutable copy of the runtime to
    replace container libraries with symlinks into /run/host. Also, when
    not in a Flatpak runtime, having a mutable copy of the immutable runtime
    gives developers a chance to edit the runtime to inject workarounds or
    things they're testing. (T18688, T22035)
  * bwrap: When we bind /usr, also bind /etc/ld.so.conf*
    We'll need those if we want to run ldconfig.
  * wrap: Add the ability to unshare the pid namespace.
    We can use this to test whether it can be done without breaking Steam
    (currently it cannot, unless you unload the gameoverlayrenderer.so
    module).
  * wrap: Really fail on invalid --env-if-host argument
  * locale-gen: Add --output-dir option
  * wrap-interactive: Fix display of pressure-vessel-wrap's name
  * wrap-interactive: Print exit status before --shell=after
  * wrap-interactive: Print exit status before "Enter to continue" prompt
  * utils: Preserve permissions when copying, and fall back to reflink or
    copy if hard link fails
  * scripts: Assert that we have the desired Python version.
    We require Python 3.5 (backports exist in both Steam Runtime 1 'scout'
    and Steam Runtime 1½ 'heavy'), except for scripts that are meant to run
    on test machines or non-developer Steam users' machines, which require
    Python 3.4 (SteamOS 2, Debian 8, Ubuntu 14.04).
  * build: Only instantiate libglnx subproject once
  * build: Disable optional features of steam-runtime-tools subproject
  * build: Disable -Wunused-local-typedefs globally
  * build: Centralize dependency checking
  * build: Convert parts of pressure-vessel into a static library
  * build: Split into subdirectories
  * tests: Improve coverage
  * test-ui: Fix pyflakes warning for unnecessary blank line
  * tests/relocatable-install.py: Silence a mypy warning
  * sysroot: Add a way to mount more directories rw.
    This will make it easier to install a new pressure-vessel build into a
    relocatable directory hierarchy for testing.
  * CI: Enable man pages for devel build
  * CI: Move artifacts adjacent to the job that would produce them
  * CI: Consistently indent with 4 spaces

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Wed, 24 Jun 2020 19:05:13 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200331.0) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed

  [ Jeremy Whiting ]
  * Add --test command line argument to pressure-vessel-wrap.
    When --test is used, check for bubblewrap executable and return
    0 if found, 1 otherwise.

  [ Ludovico de Nittis ]
Simon McVittie's avatar
Simon McVittie committed
  * Bind the host's ldconfig, gconv modules, locale(1) if we already use
    libc from the host
Simon McVittie's avatar
Simon McVittie committed
  * wrap: mount /usr/share/libdrm if using host libdrm
  * README: update scout download URL
  * README: fix scout SDK package name

  [ Simon McVittie ]
  * wrap: Remount API filesystems when operating without a runtime
  * test-ui: Do some expectation-management.
    We don't want users who discover this test UI to think that everything
    is going to work as-is.
  * test-ui: Always offer to unshare home, with a clearer UI.
    Rephrase it so that in the UI, unsharing the home directory looks like
    the active choice ("separate home directory"), with the shared home
    directory as the passive/default choice.
  * test-ui: Clarify what the "no runtime" choice means
  * test-ui: Rename "runtime" to "container runtime"
    When we start dealing with LD_LIBRARY_PATH runtimes too, the difference
    will become significant.
  * test-ui: Show the version number of pressure-vessel-wrap
  * bwrap: Don't create a /libexec symlink
  * wrap: Resync some code borrowed from Flatpak with their version
  * wrap: Correct some wait-status / exit status confusion
  * wrap: Debug-log the bwrap executable if --test succeeds
  * CONTRIBUTING.md: Add notes on what it's OK to depend on
  * build: Automatically use python3.5 if available.
    Steam Runtime 1 'scout' has python3.5 as a non-default Python 3 version,
    and python3.2 as default.
  * utils: Add a method to copy a directory tree using hard links.
    This will let us duplicate a runtime and edit it in-place.
  * runtime: Factor out a PvRuntime object
  * runtime: Add an off-switch for the host graphics stack.
    In practice we always want the host graphics stack, but maybe this
    will be useful when debugging.
  * runtime: Combine multiple runs of capsule-capture-libs into one
  * README: Document a wrong assumption
  * Build as a native package again.
    Now that deb-build-snapshot supports a Build-Suffix option in
    debian/git-version-gen.control, we don't need to worry about whether
    the version number will be less than a previous version that had a +srt
    suffix added by the Open Build Service.
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
 -- Simon McVittie <smcv@collabora.com>  Tue, 31 Mar 2020 20:39:16 +0100
Simon McVittie's avatar
Simon McVittie committed

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20200108.0-0+steamrt1.1) scout; urgency=medium

  * wrap: Don't pass --lock-file to bwrap.
    This is redundant with us passing the fd to be held by
    pressure-vessel-with-lock, and it causes bwrap to produce the wrong
    exit status (see https://github.com/containers/bubblewrap/issues/336
    and https://github.com/containers/bubblewrap/pull/325).
  * bwrap-lock: Add support for OFD locks.
    On Linux >= 3.15, this allows us to pass a lock fd to a child process
    across bwrap's fork-and-exec the way we were already trying to, and
    have it actually work.
  * wrap: Tell child process to take out its own lock if necessary.
    Non-OFD locks don't propagate across fork(), and bwrap needs to clone()
    itself (which behaves like fork() in this respect) to separate itself
    into a parent outside the container and a child inside the container.
    This change adds a weak dependency on Linux 3.15. If we run on an older
    version, everything should still *work*, but there will be a short
    period of time during which we have already decided to use the runtime,
    but it is not locked (and in particular not protected from deletion).

 -- Simon McVittie <smcv@collabora.com>  Wed, 08 Jan 2020 15:34:14 +0000

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20191216.0-0+steamrt1.1) scout; urgency=medium

  * wrap: Mount pressure-vessel on /run/pressure-vessel if using runtime.
    This avoids relying on the directory containing pressure-vessel being
    being below either the current working directory, or the default
    Steam library in $(realpath ~/.steam/steam).
    (Closes: ValveSoftware/steam-runtime#204)
  * ci: Do a build with AddressSanitizer and UndefinedBehaviourSanitizer

 -- Simon McVittie <smcv@collabora.com>  Mon, 16 Dec 2019 14:15:29 +0000

Simon McVittie's avatar
Simon McVittie committed
pressure-vessel (0.20191115.0-0+steamrt1.1) scout; urgency=medium
Simon McVittie's avatar
Simon McVittie committed
  * wrap: Add API for a bubblewrap-compatible fcntl lock
  * wrap: Take out a lock on the container's runtime for the duration
  * with-lock: Add a utility to do things while holding a lock
  * wrap: Use with-lock to hold the lock until all children have exited
  * wrap: Print environment variables quoted as intended
  * Go back to non-native versioning.
    Versioning pressure-vessel as a native package interacts poorly with
    the combination of the Open Build Service pseudo-binNMU suffix and the
    deb-build-snapshot tool used for prereleases:
    0.20190927.0+7+g1234567+srt1 is less than 0.20190927.0+srt1, so
    0.20190927.0 would wrongly be preferred over the prerelease at commit
    1234567, 7 commits later than 0.20190927.0.
Simon McVittie's avatar
Simon McVittie committed
  * Update libglnx, applying a fixed version of libglnx!14
Simon McVittie's avatar
Simon McVittie committed
  * build: Enable and fix many compiler warnings