aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-07-25 04:16:36 +0100
committerSam James <sam@gentoo.org>2023-07-26 08:58:30 +0100
commit3bba408e214ae27bdf924ba90ad4b0919a85f3c8 (patch)
tree0eb4b053e5abe703e2992b658b10fd67ca11d1af
parentlib: env_update: check ldconfig exit code (diff)
downloadportage-3bba408e214ae27bdf924ba90ad4b0919a85f3c8.tar.gz
portage-3bba408e214ae27bdf924ba90ad4b0919a85f3c8.tar.bz2
portage-3bba408e214ae27bdf924ba90ad4b0919a85f3c8.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.py24
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: