patman: Add a function to find a tool on the path
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>
This commit is contained in:
@@ -378,6 +378,29 @@ def run_result(name, *args, **kwargs):
|
|||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
raise
|
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):
|
def Run(name, *args, **kwargs):
|
||||||
"""Run a tool with some arguments
|
"""Run a tool with some arguments
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user