tmpfiles: Implement L? to only create symlinks if source exists

This allows a single tmpfiles snippet with lines to symlink directories
from /usr/share/factory to be shared across many different configurations
while making sure symlinks only get created if the source actually exists.
This commit is contained in:
Daan De Meyer
2024-11-04 19:04:21 +01:00
parent c52f6c1f33
commit b5dc805583
3 changed files with 56 additions and 10 deletions
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
# shellcheck disable=SC2235
set -eux
# Test L?
rm -rf /tmp/tmpfiles
root="/tmp/tmpfiles"
mkdir "$root"
touch "$root/abc"
SYSTEMD_LOG_LEVEL=debug systemd-tmpfiles --create - --root=$root <<EOF
L? /i-dont-exist - - - - /def
L? /i-do-exist - - - - /abc
EOF
(! test -L "$root/i-dont-exist")
test -L "$root/i-do-exist"