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:
		
							parent
							
								
									5d26b9d71d
								
							
						
					
					
						commit
						fce8a3c058
					
				|  | @ -20,8 +20,9 @@ import subprocess | ||||||
| import sys | import sys | ||||||
| 
 | 
 | ||||||
| destdir = os.environ.get('DESTDIR', '') | 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) |     subprocess.run(['systemd-tmpfiles', '--create'], check=True) | ||||||
| 
 | 
 | ||||||
| sys.exit(0) | sys.exit(0) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue