[1/2] package_manager: don't search for binaries in $PATH explicitly

Message ID 20181214010848.24170-1-ross.burton@intel.com
State Superseded
Headers show
Series
  • [1/2] package_manager: don't search for binaries in $PATH explicitly
Related show

Commit Message

Burton, Ross Dec. 14, 2018, 1:08 a.m.
There's no point in looking for a command on $PATH using bb.utils.which() but
then passing it to subprocess.check*() which will search $PATH.

By just using the command directly, the code is visibly neater.

Signed-off-by: Ross Burton <ross.burton@intel.com>

---
 meta/lib/oe/package_manager.py | 43 +++++++++++++++++++++---------------------
 1 file changed, 21 insertions(+), 22 deletions(-)

-- 
2.11.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Patch

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index f08190efc0d..f0d98dd0ffc 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -155,8 +155,7 @@  class RpmIndexer(Indexer):
         else:
             signer = None
 
-        createrepo_c = bb.utils.which(os.environ['PATH'], "createrepo_c")
-        create_index("%s --update -q %s" % (createrepo_c, deploy_dir))
+        create_index("createrepo_c --update -q %s" % (deploy_dir))
 
         # Sign repomd
         if signer:
@@ -316,11 +315,11 @@  class OpkgPkgsList(PkgsList):
     def __init__(self, d, rootfs_dir, config_file):
         super(OpkgPkgsList, self).__init__(d, rootfs_dir)
 
-        self.opkg_args = "-f %s -o %s " % (config_file, rootfs_dir)
-        self.opkg_args += self.d.getVar("OPKG_ARGS")
+        self.opkg_cmd = "opkg -f %s -o %s " % (config_file, rootfs_dir)
+        self.opkg_cmd += self.d.getVar("OPKG_ARGS")
 
     def list_pkgs(self, format=None):
-        cmd = "opkg %s status" % (self.opkg_args)
+        cmd = "%s status" % (self.opkg_cmd)
 
         # opkg returns success even when it printed some
         # "Collected errors:" report to stderr. Mixing stderr into
@@ -870,12 +869,12 @@  class RpmPM(PackageManager):
             args = ["rpm", "-e", "-v", "--nodeps", "--root=%s" %self.target_rootfs]
 
             try:
-                bb.note("Running %s" % ' '.join([cmd] + args + pkgs))
-                output = subprocess.check_output([cmd] + args + pkgs, stderr=subprocess.STDOUT).decode("utf-8")
+                bb.note("Running %s" % ' '.join(args + pkgs))
+                output = subprocess.check_output(args + pkgs, stderr=subprocess.STDOUT).decode("utf-8")
                 bb.note(output)
             except subprocess.CalledProcessError as e:
                 bb.fatal("Could not invoke rpm. Command "
-                         "'%s' returned %d:\n%s" % (' '.join([cmd] + args + pkgs), e.returncode, e.output.decode("utf-8")))
+                         "'%s' returned %d:\n%s" % (' '.join(args + pkgs), e.returncode, e.output.decode("utf-8")))
 
     def upgrade(self):
         self._prepare_pkg_transaction()
@@ -1132,8 +1131,8 @@  class OpkgPM(OpkgDpkgPM):
 
         self.deploy_dir = oe.path.join(self.d.getVar('WORKDIR'), ipk_repo_workdir)
         self.deploy_lock_file = os.path.join(self.deploy_dir, "deploy.lock")
-        self.opkg_args = "--volatile-cache -f %s -t %s -o %s " % (self.config_file, self.d.expand('${T}/ipktemp/'), target_rootfs)
-        self.opkg_args += self.d.getVar("OPKG_ARGS")
+        self.opkg_cmd = "opkg --volatile-cache -f %s -t %s -o %s " % (self.config_file, self.d.expand('${T}/ipktemp/'), target_rootfs)
+        self.opkg_cmd += self.d.getVar("OPKG_ARGS")
 
         if prepare_index:
             create_packages_dir(self.d, self.deploy_dir, d.getVar("DEPLOY_DIR_IPK"), "package_write_ipk", filterbydependencies)
@@ -1292,7 +1291,7 @@  class OpkgPM(OpkgDpkgPM):
     def update(self):
         self.deploy_dir_lock()
 
-        cmd = "opkg %s update" % (self.opkg_args)
+        cmd = "%s update" % (self.opkg_cmd)
 
         try:
             subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
@@ -1307,7 +1306,7 @@  class OpkgPM(OpkgDpkgPM):
         if not pkgs:
             return
 
-        cmd = "opkg %s" % (self.opkg_args)
+        cmd = self.opkg_cmd
         for exclude in (self.d.getVar("PACKAGE_EXCLUDE") or "").split():
             cmd += " --add-exclude %s" % exclude
         cmd += " install "
@@ -1342,11 +1341,11 @@  class OpkgPM(OpkgDpkgPM):
             return
 
         if with_dependencies:
-            cmd = "opkg %s --force-remove --force-removal-of-dependent-packages remove %s" % \
-                (self.opkg_args, ' '.join(pkgs))
+            cmd = "%s --force-remove --force-removal-of-dependent-packages remove %s" % \
+                (self.opkg_cmd, ' '.join(pkgs))
         else:
-            cmd = "opkg %s --force-depends remove %s" % \
-                (self.opkg_args, ' '.join(pkgs))
+            cmd = "%s --force-depends remove %s" % \
+                (self.opkg_cmd, ' '.join(pkgs))
 
         try:
             bb.note(cmd)
@@ -1390,7 +1389,7 @@  class OpkgPM(OpkgDpkgPM):
         if os.path.exists(status_file):
             return
 
-        cmd = "opkg %s info " % (self.opkg_args)
+        cmd = "%s info " % (self.opkg_cmd)
 
         with open(status_file, "w+") as status:
             for pkg in bad_recommendations.split():
@@ -1432,10 +1431,10 @@  class OpkgPM(OpkgDpkgPM):
         temp_opkg_dir = os.path.join(temp_rootfs, opkg_lib_dir, 'opkg')
         bb.utils.mkdirhier(temp_opkg_dir)
 
-        opkg_args = "-f %s -o %s " % (self.config_file, temp_rootfs)
+        opkg_args = "opkg -f %s -o %s " % (self.config_file, temp_rootfs)
         opkg_args += self.d.getVar("OPKG_ARGS")
-
-        cmd = "opkg %s update" % (opkg_args)
+        
+        cmd = "%s update" % (opkg_args)
         try:
             subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
         except subprocess.CalledProcessError as e:
@@ -1443,7 +1442,7 @@  class OpkgPM(OpkgDpkgPM):
                      "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
         # Dummy installation
-        cmd = "opkg %s --noaction install %s " % (opkg_args, ' '.join(pkgs))
+        cmd = "%s --noaction install %s " % (opkg_args, ' '.join(pkgs))
         try:
             output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
         except subprocess.CalledProcessError as e:
@@ -1477,7 +1476,7 @@  class OpkgPM(OpkgDpkgPM):
         """
         Returns a dictionary with the package info.
         """
-        cmd = "opkg %s info %s" % (self.opkg_args, pkg)
+        cmd = "%s info %s" % (self.opkg_cmd, pkg)
         pkg_info = super(OpkgPM, self).package_info(pkg, cmd)
 
         pkg_arch = pkg_info[pkg]["arch"]