Newer
Older
* 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)
* 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).
* 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.)
* 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
* 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
[ 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
* 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)
* 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)
* system-info: Diagnose implicit and explicit Vulkan layers
* system-info: Add helper to check for xdg-desktop-portal
-- Simon McVittie <smcv@collabora.com> Tue, 24 Nov 2020 19:18:06 +0000
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
steam-runtime-tools (0.20201007.0) scout; urgency=medium
[ 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 <smcv@collabora.com> Wed, 07 Oct 2020 16:25:00 +0100
steam-runtime-tools (0.20201002.0) scout; urgency=medium
[ 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)
* 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
* 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 ]
* launcher: Always set PWD to the command's actual working directory,
ignoring "locked" variables
* 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.
- graphics, tests: Start to use g_autofree
* libsrt: Explicitly control symbol visibility
* libsrt: Move non-public utility functions to internal header
* libsrt: Start moving pressure-vessel utilities into the library
* 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'.
* 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
* 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 <smcv@collabora.com> Fri, 02 Oct 2020 13:53:34 +0100
steam-runtime-tools (0.20200914.0) scout; urgency=medium
* Combine steam-runtime-tools with pressure-vessel (T22909)
* inspect-library: Refactoring
* CI improvements
[ 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 <smcv@collabora.com> Mon, 14 Sep 2020 17:17:04 +0100
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
[ 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 ]
* 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).
(Resolves: pressure-vessel#2, pressure-vessel#18; part of T22908)
* 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.
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
* 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 <smcv@collabora.com> Tue, 08 Sep 2020 18:30:07 +0100
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
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
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
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
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
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
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
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
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
[ 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 <smcv@collabora.com> Wed, 24 Jun 2020 19:05:13 +0100
[ 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 ]
* Bind the host's ldconfig, gconv modules, locale(1) if we already use
libc from the host
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
* 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 <smcv@collabora.com> Tue, 31 Mar 2020 20:39:16 +0100
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
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
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
pressure-vessel (0.20191115.0-0+steamrt1.1) scout; urgency=medium
* 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.
* Update libglnx, applying a fixed version of libglnx!14
* build: Enable and fix many compiler warnings
* debian: Make compiler warnings into errors for unreleased builds
* gitlab-ci: Make compiler warnings into errors
* wrap: Make GOptionEntry flags clearer
* wrap: Print version number as YAML
-- Simon McVittie <smcv@collabora.com> Fri, 15 Nov 2019 19:03:20 +0000
pressure-vessel (0.20191112.1) scout; urgency=medium
* Revert inclusion of libglnx!14.
It accidentally depended on a newer GLib version.
-- Simon McVittie <smcv@collabora.com> Tue, 12 Nov 2019 13:52:17 +0000
* ci: Add build-dependencies of steam-runtime-tools subproject
* wrap: Don't bind-mount ~/.steam/steambeta etc. if they don't exist
* wrap: Fix logic for whether Steam Runtime is passed through
* Update libglnx subproject, including merge requests libglnx!13 and
libglnx!14
-- Simon McVittie <smcv@collabora.com> Tue, 12 Nov 2019 13:32:32 +0000
pressure-vessel (0.20190927.0) scout; urgency=medium
* wrap: Include all known NVIDIA libraries, except for libnvidia-gtk*
-- Simon McVittie <smcv@collabora.com> Fri, 27 Sep 2019 18:40:56 +0100
pressure-vessel (0.20190926.0) scout; urgency=medium
* test-ui: Respect a few of the same environment variables as -wrap
* wrap: Pull in EGL and Vulkan ICDs from the host system
- Add steam-runtime-tools library dependency
* Various CI improvements
-- Simon McVittie <smcv@collabora.com> Thu, 26 Sep 2019 14:55:03 +0100
pressure-vessel (0.20190912.0) scout; urgency=medium
* Refactor pressure-vessel-wrap
* wrap: Fail with an error if no architectures work
* wrap: Only bind-mount host /usr/lib/locale once
* wrap: If using host libc.so.6, also pick up host libidn2.so.0
* wrap: Use a new pressure-vessel-locale-gen to set up locales
* d/copyright: Remove duplication
-- Simon McVittie <smcv@collabora.com> Thu, 12 Sep 2019 14:54:47 +0100
* Switch to "native" packaging format
* wrap: Add PRESSURE_VESSEL_RUNTIME, which can force use of a runtime
* wrap: Add an option to find the runtime relative to a base path
* wrap: Add $PRESSURE_VESSEL_SHELL as default for --shell-*
* wrap: Add $PRESSURE_VESSEL_TERMINAL and --terminal
* wrap: Add environment variables for more options
* wrap: When using --unshare-home, replace symlinks in ~/.steam with
up-to-date values
* wrap: Make --share-home take precedence over --home
* wrap: Skip architecture setup for architectures the runtime can't run.
This means we can use amd64-only or i386-only runtimes.
-- Simon McVittie <smcv@collabora.com> Fri, 23 Aug 2019 16:44:05 +0100
pressure-vessel (0.20190822.0-0+steamrt1.1) scout; urgency=medium
* pressure-vessel-unruntime-scout: Add a shortcut way to select the
scout runtime
-- Simon McVittie <smcv@collabora.com> Thu, 22 Aug 2019 15:46:36 +0100
pressure-vessel (0.20190820.0-0+steamrt1.1) scout; urgency=medium
* Move Gitlab-CI setup into debian directory
* Improve build-relocatable-install
-- Simon McVittie <smcv@collabora.com> Tue, 20 Aug 2019 18:44:27 +0100
pressure-vessel (0.20190819.0-0+steamrt1.1) scout; urgency=medium
-- Simon McVittie <smcv@collabora.com> Mon, 19 Aug 2019 16:19:18 +0100
steam-runtime-tools (0.20200908.1) scout; urgency=medium
* Correct version number
* Update symbols file
-- Simon McVittie <smcv@collabora.com> Tue, 08 Sep 2020 18:52:28 +0100
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
steam-runtime-tools (0.20200908.0) scout; urgency=medium
[ Ludovico de Nittis ]
* inspect-library: print the real SONAME of the given library.
This information could be used to correctly handle libraries like
libldap that sometimes is just an alias for libldap_r.
[ Simon McVittie ]
* system-info: Don't confuse graphics issues with library issues.
Previously, when we check for and find graphics issues, we'd set bits
in the library issues bitfield instead. Only users of the C API will
notice this, because this information doesn't end up in the JSON.
* library: Distinguish between requested name and SONAME.
In rare cases, like libldap-2.4 and libcurl in scout, they can differ.
* os: Look at /run/host/os-release if we are inspecting a container.
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.
* graphics: Fix use-after-free in a debug message.
Diagnosed by scan-build during CI.
* CI fixes
-- Simon McVittie <smcv@collabora.com> Tue, 08 Sep 2020 18:17:44 +0100
steam-runtime-tools (0.20200624.0) scout; urgency=medium
[ Ludovico de Nittis ]
* Add automated graphics verification for VDPAU
* Add automated graphics verification for VA-API
* Add a function to return the absolute path to "ubuntu12_32" directory.
We already stored the path to "ubuntu12_32" but this information wasn't
in the public API or the JSON report.
* Add missing "x11/vaapi" to the s-r-s-i report
* Add ability to load info from JSON output report (T16565)
-- Simon McVittie <smcv@collabora.com> Wed, 24 Jun 2020 19:04:53 +0100
steam-runtime-tools (0.20200415.0) scout; urgency=medium
[ Ludovico de Nittis ]
* Diagnose problems with "steam:" URL handler
(implements: T20052; diagnoses: steam-for-linux#6942)
* Create a new srt_system_info_get_steam_details function
* tests: Generate mock sysroots programmatically (fixes: T20177)
* Enumerate VDPAU drivers from LD_LIBRARY_PATH and system library
search path (implements: T19545)
* Avoid warnings when a graphics check returns empty JSON
* Check for required CPU features.
Check if the CPU supports the features we are interested in.
Right now they are: SSE3 (pni), x86_64 (lm) and CMPXCHG16B (cx16).
(implements: T20489; diagnoses: steam-for-linux#5164,
steam-for-linux#6812, steam-for-linux#6795, steam-for-linux#4196)
* Add check-requirements preflight check.
With check-requirements we can do a preflight check and ensure that the
Steam client requirements are met. (implements: T20491)
[ Simon McVittie ]
* tests: Factor out the directory containing mock sysroots
* tests: Add a script to generate the mock sysroots
-- Simon McVittie <smcv@collabora.com> Wed, 15 Apr 2020 13:21:10 +0100
steam-runtime-tools (0.20200331.1-0+steamrt1.1) scout; urgency=medium
-- Simon McVittie <smcv@collabora.com> Tue, 31 Mar 2020 21:00:28 +0100
steam-runtime-tools (0.20200331.0-0+steamrt1.1) scout; urgency=medium
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
[ Ludovico de Nittis ]
* Add srt_vdpau_driver_resolve_library_path, etc. methods.
The corresponding _get_library_path methods might return a relative
path, so add a way to go from that to an absolute path.
* Refactor vdpau tests into a single function
* Add a special Mesa DRIs search path to cover Ubuntu 16.04.
Ubuntu 16.04 is older than GLVND and it places Mesa loaders in
${libdir}/mesa and the DRIs in ${libdir}/dri.
[ Simon McVittie ]
* inspect-library: Ignore symbols like LIBATOMIC_1.0@LIBATOMIC_1.0.
I had hoped that dlsym() and dlvsym() would find these special symbols,
but in fact they don't. To check for ABI compatibility we need to look
for specific symbols, like __atomic_load_1@LIBATOMIC_1.0.
* build: Disable gtk-doc by default.
This lets us do self-hosting releases from SteamRT 1 'scout'.
* Document the minimum meson version.
The Steam Runtime has a backport of meson 0.49.0, originally from Debian
stretch-backports, which is the oldest thing we'll even try to support.
-- Simon McVittie <smcv@collabora.com> Tue, 31 Mar 2020 20:40:41 +0100
steam-runtime-tools (0.20200306.0-0+steamrt1.1) scout; urgency=medium
[ Ludovico de Nittis ]
* Enumerate VDPAU drivers
* Enumerate GLX ICDs
* Log driver-selection environment variables
* Add check-va-api helper
* meson: remove redundant Wall and Wextra flags
* Move indirect_strcmp0 to utils
* Move rm_rf to utils.c
* build: Belatedly update version number in meson.build
* Fail build if version number in meson.build hasn't been updated
* system-info: Make SRT_DRIVER_FLAGS_NONE the absence of flags
* system-info: Add an undocumented --ignore-extra-drivers option
* .gitignore: Ignore several common Meson build directories
* build: Use a loop to reduce repetition when compiling shaders
* tests: Use loops to build mock helpers
* bin: Generalize jsonify_enum()
* bin: Factor out jsonify_os_release
* system-info: Make sysroot a first-class member of the object
* Combine common code for dealing with graphics modules
[ Jeremy Whiting ]
* If wflinfo or check-gl fails, run a second time with
LIBGL_DEBUG=verbose set
-- Simon McVittie <smcv@collabora.com> Fri, 06 Mar 2020 17:05:23 +0000
steam-runtime-tools (0.20200109.0-0+steamrt1.1) scout; urgency=medium
[ Ludovico de Nittis ]
* Enumerate Mesa DRI and VA-API drivers.
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.
[ Simon McVittie ]
* Consistently call _srt_check_not_setuid() before looking at the
environment
* build: Consistently sort dependencies in stack order
-- Simon McVittie <smcv@collabora.com> Thu, 09 Jan 2020 17:44:02 +0000
steam-runtime-tools (0.20200108.0-0+steamrt1.1) scout; urgency=medium
* SrtSystemInfo: Document that we need SIGCHLD
* Unblock signals when spawning subprocesses, and in s-r-s-i.
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.
* utils: Don't consider exit status 255 to be signal 127
* tests: Use common include directories
* s-r-s-i: Really add --version option
* utils: Always call _srt_check_not_setuid from constructor
* tests: Check error indicator before checking boolean result
-- Simon McVittie <smcv@collabora.com> Wed, 08 Jan 2020 17:45:02 +0000
steam-runtime-tools (0.20191209.0-0+steamrt1.1) scout; urgency=medium
[ Jeremy Whiting ]
* Use timeout(1) when checking libraries
* Add exit_status and terminating_signal to SrtGraphics and SrtLibrary.
If helper fails, times out or is killed we now report its exit status
and terminating signal, if any.
* Add and use srt_enum_value_to_nick to make string formatting for
enum/flags types less repetitive
[ Simon McVittie ]
* tests: Assert that test_missing_arch gives a useful diagnostic
-- Simon McVittie <smcv@collabora.com> Mon, 09 Dec 2019 15:21:20 +0000
steam-runtime-tools (0.20191205.0-0+steamrt1.1) scout; urgency=medium
* Move symbolic links to dependencies to new
libsteam-runtime-tools-0-relocatable-libs, and add Build-Conflicts on it.
Since steam-runtime-tools was made relocatable in c3a06cce, its build
would fail with the Steam Runtime 1 'scout' version of dpkg if it is
already installed system-wide.
* debian: Add missing symbols file entries from 0.20191120.0
* Remove trailing whitespace from source code
-- Simon McVittie <smcv@collabora.com> Thu, 05 Dec 2019 14:49:22 +0000
steam-runtime-tools (0.20191120.0-0+steamrt1.1) scout; urgency=medium
* Check whether GLX drivers can actually draw to an X11 window.
This provides a more thorough test than wflinfo.
* Check whether Vulkan drivers can actually draw to an X11 window.
This provides a more thorough test than vulkaninfo.
* Fix reporting of timeouts in JSON
[ Simon McVittie ]
* Build selected executables with a RPATH.
This allows a copy of steam-runtime-system-info bundled in the
LD_LIBRARY_PATH Steam Runtime to find the copies of
libsteam-runtime-tools and libjson-glib in the same Runtime.
* Look for wflinfo, vulkaninfo and libraries adjacent to
* Use g++-4.8 if default g++ is older
* Build shaders using glslangValidator
* Fix many compiler warnings
* check-vulkan: Add basic command-line parsing with --help
* Add --version argument to most executables
* check-vulkan: Optionally make the window visible
* Look for -check-vulkan in default helpers path, not in PATH
* check-vulkan: Look for shaders in the correct place when installed
[ Ludovico de Nittis ]
* Add support for libraries with hidden dependencies
* Detect GLX and EGL graphics library vendor (either GLVND,
legacy non-GLVND Mesa, legacy non-GLVND NVIDIA, or other non-GLVND)
-- Simon McVittie <smcv@collabora.com> Wed, 20 Nov 2019 14:44:45 +0000
steam-runtime-tools (0.20191024.0-0+steamrt1.1) scout; urgency=medium
[ Ludovico de Nittis ]
* Fix gtk-doc warnings about missing parameters
* Add runtime content check for "overrides" and pinned libraries
[ Simon McVittie ]
* COPYING: Remove obsolete reference to GPL code, which was removed
a while ago
-- Simon McVittie <smcv@collabora.com> Thu, 24 Oct 2019 16:05:21 +0100
steam-runtime-tools (0.20190926.1-0+steamrt1.1) scout; urgency=medium
* tests: Replace SRT_TEST_ICD_SYSROOT with SRT_TEST_SYSROOT
* Add minimal OS information from os-release(5)
* Add support for ID_LIKE os-release(5) field
* runtime: Use os-release(5) to detect Steam Runtime container/chroot
-- Simon McVittie <smcv@collabora.com> Thu, 26 Sep 2019 15:52:32 +0100
steam-runtime-tools (0.20190926.0-0+steamrt1.2) scout; urgency=medium
* d/control: Add missing -dev dependency on libjson-glib-dev
-- Simon McVittie <smcv@collabora.com> Thu, 26 Sep 2019 14:51:55 +0100
steam-runtime-tools (0.20190926.0-0+steamrt1.1) scout; urgency=medium
[ Ludovico de Nittis ]
* locale: fix leaked SrtLocale
[ Simon McVittie ]
* graphics, library: Capture stderr from the checks
and include it in their JSON output
* locale: Check for the necessary files to generate more locales.
This issue flag is known to appear on Arch Linux and its derivatives,
which don't normally install /usr/share/i18n/SUPPORTED.
* Generate autocleanup functions if GLib (or libglnx) supports it.
This is not directly useful in steam-runtime-tools because we only
require an older GLib, but is useful when reused in pressure-vessel.
* Add some missing precondition checks
* Assert we are not setuid before looking at the environment
* graphics: Add EGL and Vulkan ICD enumeration
* Distinguish between the Steam installation (root) and data paths.
We had previously mixed these up: it isn't particularly obvious since
they are usually the same. See the documentation for details.
-- Simon McVittie <smcv@collabora.com> Thu, 26 Sep 2019 13:34:01 +0100
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
steam-runtime-tools (0.20190909.0-0+steamrt1.2) scout; urgency=medium
[ Simon McVittie ]
* Add checks for locales and locale-related issues
[ Jeremy Whiting ]
* When executing graphics helpers use timeout command to kill if needed.
[ Simon McVittie ]
* graphics: Add precondition checks on enum arguments
* graphics: Diagnose impossible window system, rendering interface
* graphics: Only allow EGL_X11 with a GL-based rendering interface
* graphics: Diagnose combination of GLX with non-GL as programming error
* Fix numeric values in comments
* Document SRT_GRAPHICS_ISSUES_TIMEOUT
* Improve diagnostics if graphics timeout tests fail
[ Jeremy Whiting ]
* Add calling vulkaninfo to get vulkan device and version.
* Add mock-good-vulkaninfo and mock-bad-vulkaninfo.
[ Simon McVittie ]
* d/.gitignore: Update for addition of steam-runtime-tools-bin
* Speed up tests by telling the graphics check to time out sooner
* graphics: Don't free a const version_string
* Add a man page documenting steam-runtime-system-info
-- Jeremy Whiting <jeremy.whiting@collabora.com> Mon, 09 Sep 2019 11:17:49 -0600
steam-runtime-tools (0.20190822.0-0+steamrt1.1) scout; urgency=medium
[ Jeremy Whiting ]
* Add SrtGraphics wrapper to check for GL, GLES support
* Remove check-gl and check-gles since we changed to using wflinfo
[ Simon McVittie ]
* Minor bug fixes in SrtGraphics
* helpers: Depend on waffle-utils-multiarch
* CI: Add a build that uses clang, scan-build, ASan and UBSan
-- Simon McVittie <smcv@collabora.com> Thu, 22 Aug 2019 18:50:26 +0100
steam-runtime-tools (0.20190820.1-0+steamrt1.1) scout; urgency=medium
* Fix version number in meson.build
-- Simon McVittie <smcv@collabora.com> Tue, 20 Aug 2019 19:25:55 +0100
steam-runtime-tools (0.20190820.0-0+steamrt1.1) scout; urgency=medium
[ Simon McVittie ]
* runtime: Avoid shadowing POSIX environ
* runtime: Fix buffer underrun if version.txt is empty
[ Ludovico de Nittis ]
* fake-home: Fix memory leaks
* Filter */gameoverlayrenderer.so from LD_PRELOAD
-- Simon McVittie <smcv@collabora.com> Tue, 20 Aug 2019 19:19:49 +0100
steam-runtime-tools (0.20190816.0-0+steamrt1.1) scout; urgency=medium
[ Simon McVittie ]
* inspect-library: Don't produce malformed JSON if the ABI is not known
* library: Guard against not knowing missing or misversioned symbols
* library: Set UNKNOWN_EXPECTATIONS issue if we lack a symbols file
* bin: Check for shared libraries even if we don't know what to expect
* system-info: Look for expectations in /usr/lib/steamrt by default
* Add some mechanisms to facilitate design-for-test
[ Ludovico de Nittis ]
* Add checks for problems with the Steam Installation and the Runtime
-- Simon McVittie <smcv@collabora.com> Fri, 16 Aug 2019 12:38:22 +0100
steam-runtime-tools (0.20190806.0-0+steamrt1.1) scout; urgency=medium
[ Ludovico de Nittis ]
* Enhance examples/system-info.c to show libraries and uinput capabilities
* Add C argument `-D_GNU_SOURCE` for the whole project
[ Simon McVittie ]