All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/1] yocto-bsp: fix for [YOCTO #5106]
@ 2013-10-04 14:37 Tom Zanussi
  2013-10-04 14:37 ` [PATCH 1/1] yocto-kernel: Use variable-substituted BBLAYERS Tom Zanussi
  0 siblings, 1 reply; 2+ messages in thread
From: Tom Zanussi @ 2013-10-04 14:37 UTC (permalink / raw)
  To: poky; +Cc: Tom Zanussi

The following changes since commit a02280f99f05b1c21de2a78de9222a2f62a0dabc:

  README.hardware: update genericx86 hardware support (2013-10-01 23:08:21 +0100)

are available in the git repository at:

  git://git.yoctoproject.org/poky-contrib.git tzanussi/yocto-kernel-topdir-fix
  http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=tzanussi/yocto-kernel-topdir-fix

Tom Zanussi (1):
  yocto-kernel: Use variable-substituted BBLAYERS

 scripts/lib/bsp/kernel.py | 93 +++++++++++++++++++----------------------------
 1 file changed, 38 insertions(+), 55 deletions(-)

-- 
1.7.11.4



^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH 1/1] yocto-kernel: Use variable-substituted BBLAYERS
  2013-10-04 14:37 [PATCH 0/1] yocto-bsp: fix for [YOCTO #5106] Tom Zanussi
@ 2013-10-04 14:37 ` Tom Zanussi
  0 siblings, 0 replies; 2+ messages in thread
From: Tom Zanussi @ 2013-10-04 14:37 UTC (permalink / raw)
  To: poky; +Cc: Tom Zanussi

The current find_bblayers() code finds and parses the BBLAYERS
variable manually, and therefore doesn't handle variable substitution,
which causes problems if used.

This change makes find_bblayers() use the variable-substituted
BBLAYERS instead.

Fixes [YOCTO #5106]

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
---
 scripts/lib/bsp/kernel.py | 93 +++++++++++++++++++----------------------------
 1 file changed, 38 insertions(+), 55 deletions(-)

diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py
index 1971e90..5696ca7 100644
--- a/scripts/lib/bsp/kernel.py
+++ b/scripts/lib/bsp/kernel.py
@@ -35,7 +35,7 @@ import subprocess
 from engine import create_context
 
 
-def find_bblayers(scripts_path):
+def find_bblayers():
     """
     Find and return a sanitized list of the layers found in BBLAYERS.
     """
@@ -48,67 +48,50 @@ def find_bblayers(scripts_path):
 
     layers = []
 
-    f = open(bblayers_conf, "r")
-    lines = f.readlines()
-    bblayers_lines = []
-    in_bblayers = False
-    for line in lines:
-        line = line.strip()
-        tokens = line.split()
-        if len(tokens) > 0 and tokens[0] == 'BBLAYERS':
-            bblayers_lines.append(line)
-            in_bblayers = True
-            quotes = line.strip().count('"')
-            if quotes > 1:
-                in_bblayers = False
-            continue
-        if in_bblayers:
-            bblayers_lines.append(line)
-            if line.strip().endswith("\""):
-                in_bblayers = False
-
-    for i, line in enumerate(bblayers_lines):
-        if line.strip().endswith("\\"):
-            bblayers_lines[i] = line.strip().replace('\\', '')
-
-    bblayers_line = " ".join(bblayers_lines)
-
-    openquote = ''
-    for c in bblayers_line:
-        if c == '\"' or c == '\'':
-            if openquote:
-                if c != openquote:
-                    print "Invalid BBLAYERS found in %s, exiting" % bblayers_conf
-                    sys.exit(1)
-                else:
-                    openquote = ''
-            else:
-                openquote = c
-
-    if openquote:
-        print "Invalid BBLAYERS found in %s, exiting" % bblayers_conf
+    bitbake_env_cmd = "bitbake -e"
+    bitbake_env_lines = subprocess.Popen(bitbake_env_cmd, shell=True,
+                                         stdout=subprocess.PIPE).stdout.read()
+
+    if not bitbake_env_lines:
+        print "Couldn't get '%s' output, exiting." % bitbake_env_cmd
         sys.exit(1)
 
-    bblayers_line = bblayers_line.strip().replace('\"', '')
-    bblayers_line = bblayers_line.strip().replace('\'', '')
+    for line in bitbake_env_lines.split('\n'):
+        bblayers = get_line_val(line, "BBLAYERS")
+        if (bblayers):
+            break
+
+    if not bblayers:
+        print "Couldn't find BBLAYERS in 'bitbake -e' output, exiting." % \
+            bitbake_env_cmd
+        sys.exit(1)
 
-    raw_layers = bblayers_line.split()
+    raw_layers = bblayers.split()
 
     for layer in raw_layers:
         if layer == 'BBLAYERS' or '=' in layer:
             continue
         layers.append(layer)
 
-    f.close()
-
     return layers
 
 
-def find_meta_layer(scripts_path):
+def get_line_val(line, key):
+    """
+    Extract the value from the VAR="val" string
+    """
+    if line.startswith(key + "="):
+        stripped_line = line.split('=')[1]
+        stripped_line = stripped_line.replace('\"', '')
+        return stripped_line
+    return None
+
+
+def find_meta_layer():
     """
     Find and return the meta layer in BBLAYERS.
     """
-    layers = find_bblayers(scripts_path)
+    layers = find_bblayers()
 
     for layer in layers:
         if layer.endswith("meta"):
@@ -117,11 +100,11 @@ def find_meta_layer(scripts_path):
     return None
 
 
-def find_bsp_layer(scripts_path, machine):
+def find_bsp_layer(machine):
     """
     Find and return a machine's BSP layer in BBLAYERS.
     """
-    layers = find_bblayers(scripts_path)
+    layers = find_bblayers()
 
     for layer in layers:
         if layer.endswith(machine):
@@ -154,7 +137,7 @@ def open_user_file(scripts_path, machine, userfile, mode):
 
     The caller is responsible for closing the file returned.
     """
-    layer = find_bsp_layer(scripts_path, machine)
+    layer = find_bsp_layer(machine)
     linuxdir = os.path.join(layer, "recipes-kernel/linux")
     linuxdir_list = os.listdir(linuxdir)
     for fileobj in linuxdir_list:
@@ -309,7 +292,7 @@ def find_filesdir(scripts_path, machine):
     (could be in files/, linux-yocto-custom/, etc).  Returns the name
     of the files dir if found, None otherwise.
     """
-    layer = find_bsp_layer(scripts_path, machine)
+    layer = find_bsp_layer(machine)
     filesdir = None
     linuxdir = os.path.join(layer, "recipes-kernel/linux")
     linuxdir_list = os.listdir(linuxdir)
@@ -474,7 +457,7 @@ def kernel_contents_changed(scripts_path, machine):
     Do what we need to do to notify the system that the kernel
     recipe's contents have changed.
     """
-    layer = find_bsp_layer(scripts_path, machine)
+    layer = find_bsp_layer(machine)
 
     kernel = find_current_kernel(layer, machine)
     if not kernel:
@@ -561,7 +544,7 @@ def find_giturl(context):
     filebase = context["filename"]
     scripts_path = context["scripts_path"]
 
-    meta_layer = find_meta_layer(scripts_path)
+    meta_layer = find_meta_layer()
 
     kerndir = os.path.join(meta_layer, "recipes-kernel/linux")
     bbglob = os.path.join(kerndir, "*.bb")
@@ -739,7 +722,7 @@ def yocto_kernel_available_features_list(scripts_path, machine):
     Display the list of all the kernel features available for use in
     BSPs, as gathered from the set of feature sources.
     """
-    layer = find_bsp_layer(scripts_path, machine)
+    layer = find_bsp_layer(machine)
     kernel = find_current_kernel(layer, machine)
     if not kernel:
         print "Couldn't determine the kernel for this BSP, exiting."
@@ -813,7 +796,7 @@ def yocto_kernel_feature_describe(scripts_path, machine, feature):
     Display the description of a specific kernel feature available for
     use in a BSP.
     """
-    layer = find_bsp_layer(scripts_path, machine)
+    layer = find_bsp_layer(machine)
 
     kernel = find_current_kernel(layer, machine)
     if not kernel:
-- 
1.7.11.4



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-10-04 14:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-04 14:37 [PATCH 0/1] yocto-bsp: fix for [YOCTO #5106] Tom Zanussi
2013-10-04 14:37 ` [PATCH 1/1] yocto-kernel: Use variable-substituted BBLAYERS Tom Zanussi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.