From fce8a3c058a8730f83749305e7748afa7bced1b0 Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Fri, 21 Oct 2022 16:26:52 +0200 Subject: [PATCH] build: Skip a needless failure when running systemd-tmpfiles as non-root If 'systemd-tmpfiles --create' is called as a non-root user, then it causes: --- stdout --- Calling systemd-tmpfiles --create ... --- stderr --- Failed to open directory 'cryptsetup': Permission denied Failed to open directory 'certs': Permission denied Failed to create directory or subvolume "/var/spool/cups/tmp": Permission denied ... ... ... Traceback (most recent call last): File "toolbox/meson_post_install.py", line 26, in subprocess.run(['systemd-tmpfiles', '--create'], check=True) File "/usr/lib64/python3.10/subprocess.py", line 524, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['systemd-tmpfiles', '--create']' returned non-zero exit status 73. Since, systemd-tmpfiles(8) can't be used like this as a non-root user, there's no point in calling it and needlessly failing the build. Unfortunately, Meson doesn't seem to offer a way to get the process' effective UID inside its scripts. Therefore, this leaves a spurious build-time dependency on systemd when building as a non-root user. https://github.com/containers/toolbox/pull/1140 --- meson_post_install.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meson_post_install.py b/meson_post_install.py index 0e34cad..a2f7824 100644 --- a/meson_post_install.py +++ b/meson_post_install.py @@ -20,8 +20,9 @@ import subprocess import sys destdir = os.environ.get('DESTDIR', '') +euid = os.geteuid() -if not destdir and not os.path.exists('/run/.containerenv'): +if not destdir and not os.path.exists('/run/.containerenv') and euid == 0: subprocess.run(['systemd-tmpfiles', '--create'], check=True) sys.exit(0)