From f91c4805b159a50ab2df57836ef53ec5d26ea62b Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Sat, 11 Nov 2017 03:10:29 -0500 Subject: Pass restorecon file list through stdin. This should avoid any issues with command-line argument limits. --- mesonbuild/scripts/meson_install.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'mesonbuild/scripts') diff --git a/mesonbuild/scripts/meson_install.py b/mesonbuild/scripts/meson_install.py index b0a7d19eb..948596783 100644 --- a/mesonbuild/scripts/meson_install.py +++ b/mesonbuild/scripts/meson_install.py @@ -95,11 +95,13 @@ def restore_selinux_contexts(): # is ignored quietly. return - try: - subprocess.check_call(['restorecon', '-F'] + selinux_updates, stderr=subprocess.DEVNULL) - except subprocess.CalledProcessError as e: - msg = "{!r}: Failed to restore SELinux context, ignoring SELinux context for all remaining files..." - print(msg.format(selinux_updates, e.returncode)) + with subprocess.Popen(['restorecon', '-F', '-f-', '-0'], + stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc: + out, err = proc.communicate(input=b'\0'.join(os.fsencode(f) for f in selinux_updates) + b'\0') + if proc.returncode != 0: + print('Failed to restore SELinux context of installed files...', + 'Standard output:', out.decode(), + 'Standard error:', err.decode(), sep='\n') def append_to_log(line): install_log_file.write(line) -- cgit v1.2.3