commit:     3bba408e214ae27bdf924ba90ad4b0919a85f3c8
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 25 03:16:36 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jul 26 07:58:30 2023 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=3bba408e

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 <AT> gentoo.org>

 lib/portage/util/env_update.py | 24 +++++++++++++++---------
 1 file 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:

Reply via email to