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