wic: Create and use new functions for getting bitbake variables
authorTom Zanussi <tom.zanussi@linux.intel.com>
Tue, 4 Feb 2014 01:16:55 +0000 (19:16 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 4 Feb 2014 12:57:35 +0000 (12:57 +0000)
Add get_bitbake_var() and bitbake_env_lines() functions for use by
plugins, which will need access to them for customization.

(From OE-Core rev: f0bb47b0d7ab6520c105ce131844269172de3efd)

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
scripts/lib/image/engine.py
scripts/lib/mic/utils/oe/misc.py
scripts/wic

index 0e8b89e..2dd98b9 100644 (file)
@@ -60,16 +60,26 @@ def verify_build_env():
     return True
 
 
-def find_artifacts(image_name):
+def find_bitbake_env_lines(image_name):
     """
-    Gather the build artifacts for the current image (the image_name
-    e.g. core-image-minimal) for the current MACHINE set in local.conf
+    If image_name is empty, plugins might still be able to use the
+    environment, so set it regardless.
     """
     bitbake_env_cmd = "bitbake -e %s" % image_name
     rc, bitbake_env_lines = exec_cmd(bitbake_env_cmd)
     if rc != 0:
-        print "Couldn't get '%s' output, exiting." % bitbake_env_cmd
-        sys.exit(1)
+        print "Couldn't get '%s' output." % bitbake_env_cmd
+        return None
+
+    return bitbake_env_lines
+
+
+def find_artifacts(image_name):
+    """
+    Gather the build artifacts for the current image (the image_name
+    e.g. core-image-minimal) for the current MACHINE set in local.conf
+    """
+    bitbake_env_lines = get_bitbake_env_lines()
 
     rootfs_dir = kernel_dir = hdddir = staging_data_dir = native_sysroot = ""
 
index 097d44c..77dfe03 100644 (file)
@@ -109,6 +109,15 @@ def add_wks_var(key, val):
 
 BOOTDD_EXTRA_SPACE = 16384
 
+__bitbake_env_lines = ""
+
+def set_bitbake_env_lines(bitbake_env_lines):
+    global __bitbake_env_lines
+    __bitbake_env_lines = bitbake_env_lines
+
+def get_bitbake_env_lines():
+    return __bitbake_env_lines
+
 def get_line_val(line, key):
     """
     Extract the value from the VAR="val" string
@@ -118,3 +127,10 @@ def get_line_val(line, key):
         stripped_line = stripped_line.replace('\"', '')
         return stripped_line
     return None
+
+def get_bitbake_var(key):
+    for line in __bitbake_env_lines.split('\n'):
+        if (get_line_val(line, key)):
+            val = get_line_val(line, key)
+            return val
+    return None
index b6fd16c..4ea5569 100755 (executable)
@@ -98,6 +98,12 @@ def wic_create_subcommand(args, usage_str):
 
     print "Creating image(s)...\n"
 
+    bitbake_env_lines = find_bitbake_env_lines(options.image_name)
+    if not bitbake_env_lines:
+        print "Couldn't get bitbake environment, exiting."
+        sys.exit(1)
+    set_bitbake_env_lines(bitbake_env_lines)
+
     bootimg_dir = staging_data_dir = hdddir = ""
 
     if options.image_name: