runqemu: add guidance to resolve issues with missing files

When a required binary cannot be found print some guidance pointing
to using a sourced OE build environment or a qemuboot.conf file,
based on a similar message from the previous shell-based runqemu.

(From OE-Core rev: 87cfb5165490cd4e7a8c2570ef5a62898db8395e)

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Lock 2016-09-18 00:39:23 -07:00 committed by Richard Purdie
parent 383a4af0e9
commit 2952affc63
1 changed files with 16 additions and 3 deletions

View File

@ -28,6 +28,16 @@ import shutil
import glob
import configparser
class OEPathError(Exception):
"""Custom Exception to give better guidance on missing binaries"""
def __init__(self, message):
self.message = "In order for this script to dynamically infer paths\n \
kernels or filesystem images, you either need bitbake in your PATH\n \
or to source oe-init-build-env before running this script.\n\n \
Dynamic path inference can be avoided by passing a *.qemuboot.conf to\n \
runqemu, i.e. `runqemu /path/to/my-image-name.qemuboot.conf`\n\n %s" % message
def create_logger():
logger = logging.getLogger('runqemu')
logger.setLevel(logging.INFO)
@ -537,7 +547,7 @@ class BaseConfig(object):
elif os.getenv('DEPLOY_DIR_IMAGE'):
deploy_dir_image = os.getenv('DEPLOY_DIR_IMAGE')
else:
raise Exception("DEPLOY_DIR_IMAGE is NULL!")
raise OEPathError("DEPLOY_DIR_IMAGE is NULL!")
if self.rootfs and not os.path.exists(self.rootfs):
# Lazy rootfs
@ -691,7 +701,7 @@ class BaseConfig(object):
lockdir = "/tmp/qemu-tap-locks"
if not (self.qemuifup and self.qemuifdown and ip):
raise Exception("runqemu-ifup, runqemu-ifdown or ip not found")
raise OEPathError("runqemu-ifup, runqemu-ifdown or ip not found")
if not os.path.exists(lockdir):
# There might be a race issue when multi runqemu processess are
@ -808,7 +818,7 @@ class BaseConfig(object):
qemu_bin = '%s/%s' % (self.get('STAGING_BINDIR_NATIVE'), qemu_system)
if not os.access(qemu_bin, os.X_OK):
raise Exception("No QEMU binary '%s' could be found" % qemu_bin)
raise OEPathError("No QEMU binary '%s' could be found" % qemu_bin)
check_libgl(qemu_bin)
@ -923,6 +933,9 @@ def main():
if __name__ == "__main__":
try:
ret = main()
except OEPathError as err:
ret = 1
logger.error(err.message)
except Exception as esc:
ret = 1
import traceback