Skip to content

Multiarch ABI refactoring

Simon McVittie requested to merge wip/multiarch-abis into master

This refactoring takes us towards being able to generate a ld.so.cache instead of relying on LD_LIBRARY_PATH, which will make pressure-vessel more robust against games that reset LD_LIBRARY_PATH. It should also help us to deal with NixOS and Exherbo.

/cc @denittis


  • runtime: Consolidate static data about a multiarch ABI into a struct

  • runtime: Build search path for DRI modules in a GPtrArray

  • runtime: Expand libqual into an array of multilib directories

    This is a step towards searching all the necessary places for unusual distributions like Exherbo (see https://github.com/ValveSoftware/steam-runtime/issues/230), and gives us an obvious extension point for adding more multilib directories.

  • bwrap: Don't bind-mount files into /etc as part of binding /usr

    If we want to deal with strange operating systems that use a non-standard filename for ld.so.cache, we'll have to special-case it. There's little extra cost to doing this because we already need to understand how ld.so.cache works, to be able to generate our own with different search paths.

    In situations where we just want a quick container to be able to inspect the runtime, we can deal with this by mounting all of /etc read-only.

    For the final container, we already iterate over all the files in the runtime's /etc, which will "naturally" include ld.so.cache and alternatives.

  • runtime: Don't issue warnings when unable to delete from runtime copy

    If we can't delete a file because it doesn't exist, then ... job done?

    In practice this happens because the runtime copy is merged-/usr, so /lib and /usr/lib are in fact the same place.

Merge request reports

Loading