Skip to content

Commit

Permalink
build: Skip a needless failure when running systemd-tmpfiles as non-root
Browse files Browse the repository at this point in the history
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.

containers#1140
  • Loading branch information
debarshiray committed Oct 21, 2022
1 parent 5d26b9d commit fce8a3c
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion meson_post_install.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@
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)

0 comments on commit fce8a3c

Please sign in to comment.