[meta-ti] [RFC][PATCH 1/2] setup-defconfig.inc: implement config fragments by using in-kernel script

Denys Dmytriyenko denys at ti.com
Mon Apr 14 06:59:20 PDT 2014


On Mon, Apr 14, 2014 at 12:01:16PM +0000, Maupin, Chase wrote:
> >-----Original Message-----
> >From: meta-ti-bounces at yoctoproject.org [mailto:meta-ti-
> >bounces at yoctoproject.org] On Behalf Of Denys Dmytriyenko
> >Sent: Sunday, April 13, 2014 10:50 PM
> >To: meta-ti at yoctoproject.org
> >Subject: [meta-ti] [RFC][PATCH 1/2] setup-defconfig.inc: implement
> >config fragments by using in-kernel script
> >
> >From: Denys Dmytriyenko <denys at ti.com>
> >
> >Signed-off-by: Denys Dmytriyenko <denys at ti.com>
> >---
> > recipes-kernel/linux/setup-defconfig.inc | 27 ++++++++++++++++---
> >--------
> > 1 file changed, 16 insertions(+), 11 deletions(-)
> >
> >diff --git a/recipes-kernel/linux/setup-defconfig.inc b/recipes-
> >kernel/linux/setup-defconfig.inc
> >index ed3bce2..d6e5557 100644
> >--- a/recipes-kernel/linux/setup-defconfig.inc
> >+++ b/recipes-kernel/linux/setup-defconfig.inc
> >@@ -5,27 +5,32 @@ KERNEL_LOCALVERSION ?= ""
> > # 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
> >
> >-addtask setup_defconfig before do_configure after do_patch
> >-do_setup_defconfig() {
> >-    # Always copy the defconfig file to .config to keep
> >consistency
> >-    # between the case where there is a real config and the in
> >kernel
> >-    # tree config
> >-    cp ${WORKDIR}/defconfig ${S}/.config
> >-}
> >-
> > # define our own do_configure that will:
> > #   1. Check the .config file and see if string use-kernel-
> >config= is present
> > #   2. If the use-kernel-config string is present parse out the
> >config to use
> >-#      and run make ${config}
> >+#      and run make $config
> > #   3. else run yes '' | oe_runmake oldconfig like the default
> >do_configure
> > #      does
> > do_configure() {
> >+    # Always copy the defconfig file to .config to keep
> >consistency
> >+    # between the case where there is a real config and the in
> >kernel
> >+    # tree config
> >+    cp ${WORKDIR}/defconfig ${S}/.config
> >+
> >     echo ${KERNEL_LOCALVERSION} > ${B}/.scmversion
> >     echo ${KERNEL_LOCALVERSION} > ${S}/.scmversion
> >     config=`cat ${S}/.config | grep use-kernel-config | cut -d= -
> >f2`
> >-    if [ "x${config}" != "x" ]
> >+    if [ "x$config" != "x" ]
> >     then
> >-        oe_runmake ${config}
> >+        # check for fragments
> >+        fragments=`cat ${S}/.config | grep config-fragment | cut
> >-d= -f2`
> 
> Implementation question here.  Would it be easier to instead list the 
> fragments you want to merge in the recipe?  My reasoning is this:
> 
> 1. You already have a list of all the fragments to pull down in the recipe, 
> so why make it require updating two spots to add a fragment.  For example to 
> add a new fragment you would add it to the SRC_URI in the recipe and then 
> have to modify the defconfig to use it.
> 2. If we keep the list in the recipe we avoid having to store defconfigs 
> based on machine or build type.  For example on the AM335x we could use the 
> same defconfig file as the dra7xx but just specify that we want to add a 
> no-SMP config fragment.  That way as we add new fragments we are not 
> updating each defconfig.
> 3. For things like system test builds where they want to enable options that 
> might hurt performance but are good for debug having the recipe control this 
> would make it easier to add these through a bbappend or an environment 
> variable.  The current way they would have to overlay the entire defconfig 
> which means keeping them in sync rather than appending the recipe to add 
> another config fragment to the list.

Good questions. My primary goal was to keep the syntax the same with Dan's 
kernel integration Jenkins job, so it is just a drop-in replacement. Moving 
the fragment definition from defconfig to the recipe would certainly change 
the syntax and require one to learn another way of doing things...


> >+        oe_runmake $config
> >+        if [ "x$fragments" != "x" ]
> >+        then
> >+            fragnames=`basename -a $fragments`
> >+            ( cd ${WORKDIR} &&
> >${S}/scripts/kconfig/merge_config.sh -m -r -O ${S} ${S}/.config
> >$fragnames 1>&2 )
> >+            yes '' | oe_runmake oldconfig
> >+        fi
> >     else
> >         yes '' | oe_runmake oldconfig
> >     fi
> >--
> >1.9.2
> >
> >--
> >_______________________________________________
> >meta-ti mailing list
> >meta-ti at yoctoproject.org
> >https://lists.yoctoproject.org/listinfo/meta-ti
> -- 
> _______________________________________________
> meta-ti mailing list
> meta-ti at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-ti


More information about the meta-ti mailing list