wic: add support to look in all layers and get .wks file

.wks file are looked in 'scripts/lib/image/canned-wks' directory on all
BBLAYERS variable returned by bitbake environment. If found, it will
be used.

The user could create your own .wks and keep it inside its layers. For
now the path must be <layer-dir>/scripts/lib/image/canned-wks.

(From OE-Core rev: 1f3e312211f277a1befd707a59a0c0a9bf6cbcbc)

Signed-off-by: João Henrique Ferreira de Freitas <joaohf@gmail.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
João Henrique Ferreira de Freitas 2014-05-14 22:37:27 -03:00 committed by Richard Purdie
parent ac9707c501
commit 8af57a6ca2
2 changed files with 47 additions and 27 deletions

View File

@ -90,6 +90,20 @@ def find_artifacts(image_name):
CANNED_IMAGE_DIR = "lib/image/canned-wks" # relative to scripts 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): 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 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 canned_wks_dir in layers_canned_wks_dir:
for file in files: for root, dirs, files in os.walk(canned_wks_dir):
if file.endswith("~") or file.endswith("#"): for file in files:
continue if file.endswith("~") or file.endswith("#"):
if file.endswith(".wks") and wks_file + ".wks" == file: continue
fullpath = os.path.join(canned_wks_dir, file) if file.endswith(".wks") and wks_file + ".wks" == file:
return fullpath fullpath = os.path.join(canned_wks_dir, file)
return fullpath
return None return None
@ -113,32 +128,31 @@ def list_canned_images(scripts_path):
""" """
List the .wks files in the canned image dir, minus the extension. 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 canned_wks_dir in layers_canned_wks_dir:
for file in files: for root, dirs, files in os.walk(canned_wks_dir):
if file.endswith("~") or file.endswith("#"): for file in files:
continue if file.endswith("~") or file.endswith("#"):
if file.endswith(".wks"): continue
fullpath = os.path.join(canned_wks_dir, file) if file.endswith(".wks"):
f = open(fullpath, "r") fullpath = os.path.join(canned_wks_dir, file)
lines = f.readlines() f = open(fullpath, "r")
for line in lines: lines = f.readlines()
desc = "" for line in lines:
idx = line.find("short-description:") desc = ""
if idx != -1: idx = line.find("short-description:")
desc = line[idx + len("short-description:"):].strip() if idx != -1:
break desc = line[idx + len("short-description:"):].strip()
basename = os.path.splitext(file)[0] break
print " %s\t\t%s" % (basename, desc) basename = os.path.splitext(file)[0]
print " %s\t\t%s" % (basename.ljust(30), desc)
def list_canned_image_help(scripts_path, fullpath): def list_canned_image_help(scripts_path, fullpath):
""" """
List the help and params in the specified canned image. 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") f = open(fullpath, "r")
lines = f.readlines() lines = f.readlines()
found = False found = False

View File

@ -214,6 +214,12 @@ def wic_list_subcommand(args, usage_str):
(options, args) = parser.parse_args(args) (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): if not wic_list(args, scripts_path, options.properties_file):
logging.error("Bad list arguments, exiting\n") logging.error("Bad list arguments, exiting\n")
parser.print_help() parser.print_help()