]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
yocto-kernel: create open_user_file() wrapper function
authorTom Zanussi <tom.zanussi@intel.com>
Thu, 13 Dec 2012 04:56:36 +0000 (22:56 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 13 Dec 2012 16:53:21 +0000 (16:53 +0000)
With the addition of custom kernels, we can no longer rely on a
hard-coded /files directory for BSPs - we need to be able to find the
user_config/patches files in a number of different directories.

We now hide the search inside a new open_user_file() function that
accomplishes the same thing as before but with a more flexible scope.

Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
scripts/lib/bsp/kernel.py

index a953372e8f528bf980f12dfbd7ad21addeec00ae..0b7e69bcb9607ed37d2a506887f9eacb7dabc6b2 100644 (file)
@@ -133,6 +133,30 @@ def gen_choices_str(choices):
     return choices_str
 
 
+def open_user_file(scripts_path, machine, userfile, mode):
+    """
+    Find one of the user files (user-config.cfg, user-patches.scc)
+    associated with the machine (could be in files/,
+    linux-yocto-custom/, etc).  Returns the open file if found, None
+    otherwise.
+
+    The caller is responsible for closing the file returned.
+    """
+    layer = find_bsp_layer(scripts_path, machine)
+    linuxdir = os.path.join(layer, "recipes-kernel/linux")
+    linuxdir_list = os.listdir(linuxdir)
+    for fileobj in linuxdir_list:
+        fileobj_path = os.path.join(linuxdir, fileobj)
+        if os.path.isdir(fileobj_path):
+            userfile_name = os.path.join(fileobj_path, userfile)
+            try:
+                f = open(userfile_name, mode)
+                return f
+            except IOError:
+                continue
+    return None
+
+
 def read_config_items(scripts_path, machine):
     """
     Find and return a list of config items (CONFIG_XXX) in a machine's
@@ -140,10 +164,7 @@ def read_config_items(scripts_path, machine):
     """
     config_items = []
 
-    layer = find_bsp_layer(scripts_path, machine)
-    cfg = os.path.join(layer, "recipes-kernel/linux/files/user-config.cfg")
-
-    f = open(cfg, "r")
+    f = open_user_file(scripts_path, machine, "user-config.cfg", "r")
     lines = f.readlines()
     for line in lines:
         s = line.strip()
@@ -159,10 +180,7 @@ def write_config_items(scripts_path, machine, config_items):
     Write (replace) the list of config items (CONFIG_XXX) in a
     machine's user-defined config fragment [user-config.cfg].
     """
-    layer = find_bsp_layer(scripts_path, machine)
-    cfg = os.path.join(layer, "recipes-kernel/linux/files/user-config.cfg")
-
-    f = open(cfg, "w")
+    f = open_user_file(scripts_path, machine, "user-config.cfg", "w")
     for item in config_items:
         f.write(item + "\n")
     f.close()
@@ -377,10 +395,7 @@ def read_patch_items(scripts_path, machine):
     """
     patch_items = []
 
-    layer = find_bsp_layer(scripts_path, machine)
-    patches = os.path.join(layer, "recipes-kernel/linux/files/user-patches.scc")
-
-    f = open(patches, "r")
+    f = open_user_file(scripts_path, machine, "user-patches.scc", "r")
     lines = f.readlines()
     for line in lines:
         s = line.strip()
@@ -399,11 +414,7 @@ def write_patch_items(scripts_path, machine, patch_items):
     Write (replace) the list of patches in a machine's user-defined
     patch list [user-patches.scc].
     """
-    layer = find_bsp_layer(scripts_path, machine)
-
-    patches = os.path.join(layer, "recipes-kernel/linux/files/user-patches.scc")
-
-    f = open(patches, "w")
+    f = open_user_file(scripts_path, machine, "user-patches.scc", "w")
     for item in patch_items:
         pass
         # this currently breaks do_patch, but is really what we want