]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
wic/utils/oe/misc.py: Preserve PATH when running native tools
authorRandy Witt <randy.e.witt@linux.intel.com>
Fri, 23 Oct 2015 02:53:56 +0000 (19:53 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 24 Oct 2015 11:21:28 +0000 (12:21 +0100)
Previously exec_native_cmd() would remove all items from PATH except for
the native sysroot. This can cause issues for the tools that are created
using create_wrapper().

Now instead of wiping out the PATH, run a sanity check to check if the
command is in the native sysroot.

Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
scripts/lib/wic/utils/oe/misc.py

index 7370d93136ed00859b285f1b70a90e9d817d5fae..c6d2e5f204b15b505b16dcb22f150c8449c4b407 100644 (file)
@@ -82,6 +82,12 @@ def exec_cmd(cmd_and_args, as_shell=False, catch=3):
 
     return out
 
+def cmd_in_path(cmd, path):
+    import scriptpath
+
+    scriptpath.add_bitbake_lib_path()
+
+    return bb.utils.which(path, cmd) != "" or False
 
 def exec_native_cmd(cmd_and_args, native_sysroot, catch=3):
     """
@@ -92,15 +98,21 @@ def exec_native_cmd(cmd_and_args, native_sysroot, catch=3):
     Always need to execute native commands as_shell
     """
     native_paths = \
-        "export PATH=%s/sbin:%s/usr/sbin:%s/usr/bin" % \
+        "%s/sbin:%s/usr/sbin:%s/usr/bin" % \
         (native_sysroot, native_sysroot, native_sysroot)
-    native_cmd_and_args = "%s;%s" % (native_paths, cmd_and_args)
+    native_cmd_and_args = "export PATH=%s:$PATH;%s" % \
+                           (native_paths, cmd_and_args)
     msger.debug("exec_native_cmd: %s" % cmd_and_args)
 
-    args = cmd_and_args.split()
+    # The reason -1 is used is because there may be "export" commands.
+    args = cmd_and_args.split(';')[-1].split()
     msger.debug(args)
 
-    ret, out = _exec_cmd(native_cmd_and_args, True, catch)
+    # If the command isn't in the native sysroot say we failed.
+    if cmd_in_path(args[0], native_paths):
+        ret, out = _exec_cmd(native_cmd_and_args, True, catch)
+    else:
+        ret = 127
 
     if ret == 127: # shell command-not-found
         prog = args[0]