diff options
author | Sam James <sam@gentoo.org> | 2023-07-25 04:16:36 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-07-26 08:58:30 +0100 |
commit | 3bba408e214ae27bdf924ba90ad4b0919a85f3c8 (patch) | |
tree | 0eb4b053e5abe703e2992b658b10fd67ca11d1af | |
parent | lib: env_update: check ldconfig exit code (diff) | |
download | portage-3bba408e.tar.gz portage-3bba408e.tar.bz2 portage-3bba408e.zip |
lib: env_update: port to subprocess
os.system is a bit janky here, let's use subprocess so we're not injecting
multiple commands.
Thanks to mgorny for the suggestion.
Bug: https://bugs.gentoo.org/910376
Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r-- | lib/portage/util/env_update.py | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/lib/portage/util/env_update.py b/lib/portage/util/env_update.py index 5c2b2fdd5..a7015669e 100644 --- a/lib/portage/util/env_update.py +++ b/lib/portage/util/env_update.py @@ -6,7 +6,7 @@ __all__ = ["env_update"] import errno import glob import stat -import sys +import subprocess import time import portage @@ -364,18 +364,24 @@ def _env_update(makelinks, target_root, prev_mtimes, contents, env, writemsg_lev writemsg_level( _(">>> Regenerating %setc/ld.so.cache...\n") % (target_root,) ) - ret = os.system(f"cd / ; {ldconfig} -X -r '{target_root}'") + ret = subprocess.run( + [f"{ldconfig}", "-X", "-r", f"{target_root}"], cwd="/" + ).returncode elif ostype in ("FreeBSD", "DragonFly"): writemsg_level( _(">>> Regenerating %svar/run/ld-elf.so.hints...\n") % target_root ) - ret = os.system( - ( - "cd / ; %s -elf -i " - + "-f '%svar/run/ld-elf.so.hints' '%setc/ld.so.conf'" - ) - % (ldconfig, target_root, target_root) - ) + ret = subprocess.run( + [ + f"{ldconfig}", + "-elf", + "-i", + "-f", + f"{target_root}var/run/ld-elf.so.hints", + f"{target_root}etc/ld.so.conf", + ], + cwd="/", + ).returncode ret = os.waitstatus_to_exitcode(ret) if ret > 0: |