]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
patman: Add a function to find a tool on the path
authorSimon Glass <sjg@chromium.org>
Mon, 10 Jan 2022 03:13:43 +0000 (20:13 -0700)
committerSimon Glass <sjg@chromium.org>
Tue, 25 Jan 2022 19:36:11 +0000 (12:36 -0700)
The Run() function automatically uses the PATH variable to locate a tool
when running it. Add a function that does this manually, so we don't have
to run a tool to find out if it is present.

This is needed by the new Bintool class, which wants to check which tools
are present.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/patman/tools.py

index 24e2bf567b8d84f6768d7560bd32d8120c417bca..a27db05ff2a98ecda5b5bc5559bb718d16a23fac 100644 (file)
@@ -378,6 +378,29 @@ def run_result(name, *args, **kwargs):
             raise ValueError(msg)
         raise
 
+def tool_find(name):
+    """Search the current path for a tool
+
+    This uses both PATH and any value from SetToolPaths() to search for a tool
+
+    Args:
+        name (str): Name of tool to locate
+
+    Returns:
+        str: Full path to tool if found, else None
+    """
+    name = os.path.expanduser(name)  # Expand paths containing ~
+    paths = []
+    pathvar = os.environ.get('PATH')
+    if pathvar:
+        paths = pathvar.split(':')
+    if tool_search_paths:
+        paths += tool_search_paths
+    for path in paths:
+        fname = os.path.join(path, name)
+        if os.path.isfile(fname) and os.access(fname, os.X_OK):
+            return fname
+
 def Run(name, *args, **kwargs):
     """Run a tool with some arguments