|
@@ -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.
|