- Aug 18, 2020
-
-
Simon McVittie authored
This makes the emulation closer, avoids GIOChannel getting in the way, and allows us to use the Unix fd source from non-default threads and main-contexts. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
signal_source and forward_signals_id were redundant. We only need one. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 11, 2020
-
-
Simon McVittie authored
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. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 05, 2020
-
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
To avoid needing special support for this on the launcher side, we implement this by wrapping the command in `env -u VAR`. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 04, 2020
-
-
Simon McVittie authored
This allows a controlling process to terminate the launcher, even if it is wrapped in an "adverb" command like pressure-vessel-wrap that makes it non-straightforward to send signals to the launcher. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This terminates the server instead of running a command. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This allows IPC clients to terminate the launcher. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
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. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This will be used to generate securely-unique socket names that are not an opportunity for denial of service. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
We want this to be as similar as possible to exec'ing the child process directly. Close the original stdout, so that if the child's stdout is a pipe from which a caller reads until EOF, we do not prevent EOF from occurring. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
We want this to be as similar as possible to exec'ing the child process directly, so give it our stdin as its stdin. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Aug 03, 2020
-
-
Simon McVittie authored
This gives us a way to report failure in a signal handler, or between fork() and exec(), both of which are contexts where only a restricted set of async-signal-safe functions are allowed. See signal-safety(7), signal(7) and fork(2) for details. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This was added in GLib 2.36, so GLib 2.32 doesn't have it. We need this to be able to integrate arbitrary pipes and signalfds with the GLib main loop. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 31, 2020
-
-
Simon McVittie authored
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. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 29, 2020
-
-
Simon McVittie authored
pv_avoid_gvfs() can print GLib debug messages, which would corrupt a structured stdout. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
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 Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Originally written by me, with trivial syntactic edits to the doc-comment by Matthias Clasen and Philip Withnall. We'll need this if we want to do D-Bus IPC on a socket given as a path. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
If the wrapped command prints structured data to stdout, we don't want to corrupt its output stream. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
As noted in Flatpak and in GNOME/glib!490, there is a bug in GLib < 2.60 where g_spawn_* can sometimes deadlock while closing fds in a multi-threaded application. Work around this by making the affected fds close-on-execute ourselves, much like Flatpak does. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This will make it easier to debug things going wrong in the adverb, by inheriting --verbose or PRESSURE_VESSEL_VERBOSE from the wrapper. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This breaks the build with -Werror on Debian testing/unstable. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
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. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 21, 2020
-
-
Ludovico de Nittis authored
Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
Ludovico de Nittis authored
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. Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Jul 09, 2020
-
-
Simon McVittie authored
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/*. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 08, 2020
-
-
Simon McVittie authored
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) Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
This doesn't currently include the --dest because that varies - it's usually arch->libdir_on_host, but not always. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
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. Fixes: 5e2f9f25 "runtime: Bind-mount /overrides to run locale-gen" Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jul 02, 2020
-
-
Simon McVittie authored
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. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
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. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
- Jun 23, 2020
-
-
Simon McVittie authored
Because we do a "cheap copy" with hard-links where possible, .ref is a hard-link to its counterpart in the original (non-copied) runtime, so a lock on one is a lock on the other. We hold a lock on the original runtime while we do setup, so we would never actually delete the temporary runtimes unless we break the hard-link by re-creating the lock file. Resolves: T22035 Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Ludovico de Nittis authored
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 (Fixes: T22125) Signed-off-by:
Ludovico de Nittis <ludovico.denittis@collabora.com>
-
- Jun 17, 2020
-
-
Simon McVittie authored
Flatpak is not going to give us control over the root directory when using sub-sandboxing - the most we're likely to get is control over which directory is chosen to be /usr. Prepare for this by using /usr/lib/pressure-vessel/overrides instead of /overrides for the things we overwrite. To be nice to developers and steam-runtime-tools, put a symlink overrides -> usr/lib/pressure-vessel/overrides at the root, as a hint for where to look. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-
Simon McVittie authored
In a mutable sysroot, overwrite ld.so with a symlink into /run/host. We overwrite both the interoperable path (to avoid long chains of symlinks in the common case) and the canonicalized path (to make sure nothing can end up finding the container's ld.so, which is incompatible with the libc we have dropped in). If building a long bwrap command-line, we have to mount over the canonicalized path, and just live with the fact that there will be a long chain of symlinks leading to it. Signed-off-by:
Simon McVittie <smcv@collabora.com>
-