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 <module>
      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
This commit is contained in:
Debarshi Ray 2022-10-21 16:26:52 +02:00
parent 5d26b9d71d
commit fce8a3c058

View file

@ -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)