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

Denys Dmytriyenko denys at ti.com
Thu May 22 10:36:06 PDT 2014


On Thu, May 22, 2014 at 01:16:21PM -0400, Maupin, Chase wrote:
> >-----Original Message-----
> >From: Dmytriyenko, Denys
> >Sent: Thursday, May 22, 2014 11:51 AM
> >To: Maupin, Chase
> >Cc: meta-ti at yoctoproject.org
> >Subject: Re: [meta-ti] [PATCH 3/4] setup-defconfig: allow use of
> >in-kernel config fragments
> >
> >On Thu, May 22, 2014 at 12:19:01PM -0400, Denys Dmytriyenko wrote:
> >> On Thu, May 22, 2014 at 11:16:15AM -0500, Chase Maupin wrote:
> >> > * 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.
> >>
> >> I was thinking to do it differently...
> >
> >Basically, I was thinking of embedding the path in the
> >KERNEL_CONFIG_FRAGMENTS
> >variable, similar to how KERNEL_DEVICETREE used to do it:
> >
> >KERNEL_CONFIG_FRAGMENTS = "${WORKDIR}/ipc.cfg
> >${KERNEL_CONFIG_DIR}/non-smp.cfg"
> >
> >This way you could have fragments of the same name and choose
> >which one to
> >use. But the logic in setup-defconfig.inc would be much simpler...
> 
> I also considered this.  I had rejected it because I didn't want to see a 
> bunch of duplicate entries for ${WORKDIR} and ${KERNEL_CONFIG_DIR}.  You are 
> right though that it makes the setup-defconfig simpler.
> 
> Maybe a use case to consider is whether we think we would have fragments in 
> more than 2 locations.  i.e. one in WORKDIR, another in directory x of the 
> kernel, and another in directory y of the kernel.  If we think this would be 
> reasonable to support then your method makes more sense.  What do you think?

Another possible location could be inside a separate git repository. Which I 
was considering initially, as I didn't know where Dan would create it...


> >> > 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
> >> >
> >> > --
> >> > _______________________________________________
> >> > 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