logger: Make it easier to attach a logger to a shell script
-
env-overlay test: Exercise environment variables with strange names—applied -
utils: Add a function to check for syntactically valid shell variables—applied -
env-overlay: Add and test _srt_env_overlay_to_shell()—applied -
logger: Use a SrtEnvOverlay to modify the environment
This will let us convert the environment modifications into other formats, for example a series of shell
export
statements to beeval
'd. -
logger: Emit environment variables in --sh-syntax
This will make it easier to set the correct environment variables when attaching it to a shell script like
steam.sh
. -
test-logger: Demonstrate logging from a bash script
Unlike the current logger integration in
steam.sh
, this uses--background
to avoid conflicts with subreapers (steamrt/tasks#460), and--sh-syntax
to set environment variables (steamrt/tasks#461).The unit test doesn't assert that the output includes the desired environment variables, because we can't assume that the Journal is always available in our test environments, and it's non-trivial to mock up a terminal file descriptor - but when run on a system with a working Journal, it does correctly set
SRT_LOGGER_USE_JOURNAL=1
.steamrt/tasks#461
-
logger: Install srt-logger in ${libexecdir}
This will make it easier to locate within a
$STEAM_RUNTIME
. -
srt-logger --mkfifo: New CLI tool entry point
If we could rely on
mktemp -d
being fully portable, then we could do this from shell script, but we probably can't rely on that.Similarly, we probably can't rely on
$XDG_RUNTIME_DIR
being set, or$TMPDIR
being a filesystem that is able to hold fifo objects.This has the same statically-linked dependencies as srt-logger, so make it part of the srt-logger binary to avoid wasting space.
-
logger-0.bash: Add a convenience bash binding for srt-logger
There are a few places where we want to log the output of a shell script without having to execute srt-logger wrapped around a second shell script as a subprocess. steam.sh and steamwebhelper.sh already use srt-logger, and bin_steam.sh might follow soon.
To achieve this, we need to use either a bash coprocess or at least one fifo, because process substitution only creates a one-way pipe. Currently all the scripts where we want to use the logger are bash scripts (as opposed to pure POSIX sh) so we can still take advantage of other bashisms: process substitution and named redirections.
Even when using those bash features, the synchronization required between the logger and its parent is non-trivial, so putting it in a shell library makes it easier to achieve.