提交 04187a84 编写于 作者: S Simon Glass

patman: Detect missing tools and report them

When tools are needed but not present, at present we just get an error
which can be confusing for the user. Try to be helpful by reporting the
tool as missing and suggesting a possible remedy.

Also update the Run() method to support this.
Signed-off-by: NSimon Glass <sjg@chromium.org>
上级 6ed45ba0
......@@ -22,6 +22,10 @@ chroot_path = None
# Search paths to use for Filename(), used to find files
search_paths = []
# Tools and the packages that contain them, on debian
packages = {
'lz4': 'liblz4-tool',
}
def PrepareOutputDir(dirname, preserve=False):
"""Select an output directory, ensuring it exists.
......@@ -128,8 +132,31 @@ def Align(pos, align):
def NotPowerOfTwo(num):
return num and (num & (num - 1))
def PathHasFile(fname):
"""Check if a given filename is in the PATH
Args:
fname: Filename to check
Returns:
True if found, False if not
"""
for dir in os.environ['PATH'].split(':'):
if os.path.exists(os.path.join(dir, fname)):
return True
return False
def Run(name, *args):
command.Run(name, *args, cwd=outdir)
try:
return command.Run(name, *args, cwd=outdir, capture=True)
except:
if not PathHasFile(name):
msg = "Plesae install tool '%s'" % name
package = packages.get(name)
if package:
msg += " (e.g. from package '%s')" % package
raise ValueError(msg)
raise
def Filename(fname):
"""Resolve a file path to an absolute path.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册