From: "João Henrique Ferreira de Freitas" <joaohf@gmail.com>
To: openembedded-core@lists.openembedded.org
Cc: tom.zanussi@linux.intel.com
Subject: [PATCH 1/2] wic: add support to look in all layers and get .wks file
Date: Wed, 14 May 2014 22:37:27 -0300 [thread overview]
Message-ID: <1400117848-4350-2-git-send-email-joaohf@gmail.com> (raw)
In-Reply-To: <1400117848-4350-1-git-send-email-joaohf@gmail.com>
.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.
Signed-off-by: João Henrique Ferreira de Freitas <joaohf@gmail.com>
---
scripts/lib/image/engine.py | 72 +++++++++++++++++++++++++++------------------
scripts/wic | 6 ++++
2 files changed, 49 insertions(+), 29 deletions(-)
diff --git a/scripts/lib/image/engine.py b/scripts/lib/image/engine.py
index 311737a..3bda1bf 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)
-
- 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
+ layers_canned_wks_dir = build_canned_image_list(scripts_path)
+
+ 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)
-
- 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)
+ layers_canned_wks_dir = build_canned_image_list(scripts_path)
+
+ 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 4423340..2d3fd09 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()
--
1.8.3.2
next prev parent reply other threads:[~2014-05-15 2:06 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-15 1:37 [PATCH 0/2] wic: looking by plugins and .wks file in all layers João Henrique Ferreira de Freitas
2014-05-15 1:37 ` João Henrique Ferreira de Freitas [this message]
2014-05-15 1:37 ` [PATCH 2/2] wic: add support to look in all layers and get plugins João Henrique Ferreira de Freitas
2014-06-02 9:25 ` Adrian Calianu
2014-06-04 1:28 ` João Henrique Ferreira de Freitas
2014-05-19 14:00 ` [PATCH 0/2] wic: looking by plugins and .wks file in all layers Tom Zanussi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1400117848-4350-2-git-send-email-joaohf@gmail.com \
--to=joaohf@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=tom.zanussi@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox