diff --git a/scripts/lib/image/engine.py b/scripts/lib/image/engine.py index 311737a5c0..3bda1bf205 100644 --- a/scripts/lib/image/engine.py +++ b/scripts/lib/image/engine.py @@ -90,6 +90,20 @@ def find_artifacts(image_name): CANNED_IMAGE_DIR = "lib/image/canned-wks" # relative to scripts +SCRIPTS_CANNED_IMAGE_DIR = "scripts/" + CANNED_IMAGE_DIR + +def build_canned_image_list(dl): + layers_path = get_bitbake_var("BBLAYERS") + canned_wks_layer_dirs = [] + + for layer_path in layers_path.split(): + path = os.path.join(layer_path, SCRIPTS_CANNED_IMAGE_DIR) + canned_wks_layer_dirs.append(path) + + path = os.path.join(dl, CANNED_IMAGE_DIR) + canned_wks_layer_dirs.append(path) + + return canned_wks_layer_dirs def find_canned_image(scripts_path, wks_file): """ @@ -97,15 +111,16 @@ def find_canned_image(scripts_path, wks_file): Return False if not found """ - canned_wks_dir = os.path.join(scripts_path, CANNED_IMAGE_DIR) + layers_canned_wks_dir = build_canned_image_list(scripts_path) - for root, dirs, files in os.walk(canned_wks_dir): - for file in files: - if file.endswith("~") or file.endswith("#"): - continue - if file.endswith(".wks") and wks_file + ".wks" == file: - fullpath = os.path.join(canned_wks_dir, file) - return fullpath + for canned_wks_dir in layers_canned_wks_dir: + for root, dirs, files in os.walk(canned_wks_dir): + for file in files: + if file.endswith("~") or file.endswith("#"): + continue + if file.endswith(".wks") and wks_file + ".wks" == file: + fullpath = os.path.join(canned_wks_dir, file) + return fullpath return None @@ -113,32 +128,31 @@ def list_canned_images(scripts_path): """ List the .wks files in the canned image dir, minus the extension. """ - canned_wks_dir = os.path.join(scripts_path, CANNED_IMAGE_DIR) + layers_canned_wks_dir = build_canned_image_list(scripts_path) - for root, dirs, files in os.walk(canned_wks_dir): - for file in files: - if file.endswith("~") or file.endswith("#"): - continue - if file.endswith(".wks"): - fullpath = os.path.join(canned_wks_dir, file) - f = open(fullpath, "r") - lines = f.readlines() - for line in lines: - desc = "" - idx = line.find("short-description:") - if idx != -1: - desc = line[idx + len("short-description:"):].strip() - break - basename = os.path.splitext(file)[0] - print " %s\t\t%s" % (basename, desc) + for canned_wks_dir in layers_canned_wks_dir: + for root, dirs, files in os.walk(canned_wks_dir): + for file in files: + if file.endswith("~") or file.endswith("#"): + continue + if file.endswith(".wks"): + fullpath = os.path.join(canned_wks_dir, file) + f = open(fullpath, "r") + lines = f.readlines() + for line in lines: + desc = "" + idx = line.find("short-description:") + if idx != -1: + desc = line[idx + len("short-description:"):].strip() + break + basename = os.path.splitext(file)[0] + print " %s\t\t%s" % (basename.ljust(30), desc) def list_canned_image_help(scripts_path, fullpath): """ List the help and params in the specified canned image. """ - canned_wks_dir = os.path.join(scripts_path, CANNED_IMAGE_DIR) - f = open(fullpath, "r") lines = f.readlines() found = False diff --git a/scripts/wic b/scripts/wic index 442334030f..2d3fd09d71 100755 --- a/scripts/wic +++ b/scripts/wic @@ -214,6 +214,12 @@ def wic_list_subcommand(args, usage_str): (options, args) = parser.parse_args(args) + bitbake_env_lines = find_bitbake_env_lines(None) + if not bitbake_env_lines: + print "Couldn't get bitbake environment, exiting." + sys.exit(1) + set_bitbake_env_lines(bitbake_env_lines) + if not wic_list(args, scripts_path, options.properties_file): logging.error("Bad list arguments, exiting\n") parser.print_help()