[meta-ti] [PATCH 3/4] setup-defconfig: allow use of in-kernel config fragments

Chase Maupin Chase.Maupin at ti.com
Thu May 22 09:16:15 PDT 2014


* Allow the use of in-kernel config fragments instead of only
  pulling config fragments from the OE meta data.  The OE meta
  data fragments will still take precedence over in tree .cfg
  files.

Signed-off-by: Chase Maupin <Chase.Maupin at ti.com>
---
 recipes-kernel/linux/setup-defconfig.inc |   36 ++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/recipes-kernel/linux/setup-defconfig.inc b/recipes-kernel/linux/setup-defconfig.inc
index 4277f26..fbe7e96 100644
--- a/recipes-kernel/linux/setup-defconfig.inc
+++ b/recipes-kernel/linux/setup-defconfig.inc
@@ -2,6 +2,10 @@
 # kernel version string.  such as the commit id
 KERNEL_LOCALVERSION ?= ""
 
+# KERNEL_CONFIG_DIR can be set to specify a subdirectory to search for
+# kernel configuration fragments
+KERNEL_CONFIG_DIR ?= ""
+
 # Check the defconfig file and see if it points to an in kernel
 # defconfig that should be used, or if it is a complete config file
 
@@ -27,10 +31,38 @@ do_configure() {
         yes '' | oe_runmake oldconfig
     fi
 
-    # check for fragments
+    # Check for kernel config fragments.  First check the files copied from
+    # the OE meta data since we may want to override kernel config fragments
+    # in the recipe.  If you don't find the fragment in the OE meta data
+    # then check the kernel sources.  If you still can't find it then bail
+    # with an error.
+    # Check if any config fragments are specified.
     if [ ! -z "${KERNEL_CONFIG_FRAGMENTS}" ]
     then
-        ( cd ${WORKDIR} && ${S}/scripts/kconfig/merge_config.sh -m -r -O ${S} ${S}/.config ${KERNEL_CONFIG_FRAGMENTS} 1>&2 )
+        # Variable to hold the assembled list of fragments with absolute paths
+        configs=""
+
+        for f in ${KERNEL_CONFIG_FRAGMENTS}
+        do
+            # Check if the config fragment was copied into the WORKDIR from
+            # the OE meta data
+            if [ -e "${WORKDIR}/$f" ]
+            then
+                echo "Found config in workdir"
+                configs="$configs ""${WORKDIR}/$f"
+            # Check if the fragement is in the kernel sources
+            elif [ -e "${S}/${KERNEL_CONFIG_DIR}/$f" ]
+            then
+                echo "Found config in kernel"
+                configs="$configs ""${S}/${KERNEL_CONFIG_DIR}/$f"
+            else
+                echo "Could not find kernel config fragment $f"
+                exit 1
+            fi
+        done
+
+        # Now that all the fragments are located merge them.
+        ( cd ${WORKDIR} && ${S}/scripts/kconfig/merge_config.sh -m -r -O ${S} ${S}/.config ${configs} 1>&2 )
         yes '' | oe_runmake oldconfig
     fi
 }
-- 
1.7.9.5



More information about the meta-ti mailing list