[yocto] [PATCH 4/8] yocto-bsp: add kernel interface

Tom Zanussi tom.zanussi at intel.com
Fri Mar 2 09:34:39 PST 2012


On Fri, 2012-03-02 at 09:11 -0800, Darren Hart wrote:
> 
> On 03/01/2012 11:01 PM, tom.zanussi at intel.com wrote:
> > From: Tom Zanussi <tom.zanussi at intel.com>
> > 
> > Yocto BSP kernel-related functions, for interacting with the kernel
> > tools and implementing the machinery behind the 'yocto-kernel'
> > command.
> > 
> > Signed-off-by: Tom Zanussi <tom.zanussi at intel.com>
> > ---
> >  scripts/lib/bsp/kernel.py |  679 +++++++++++++++++++++++++++++++++++++++++++++
> >  1 files changed, 679 insertions(+), 0 deletions(-)
> >  create mode 100644 scripts/lib/bsp/kernel.py
> > 
> > diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py
> > new file mode 100644
> > index 0000000..1b88b2f
> > --- /dev/null
> > +++ b/scripts/lib/bsp/kernel.py
> > @@ -0,0 +1,679 @@
> > +# ex:ts=4:sw=4:sts=4:et
> > +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
> > +#
> > +# Copyright 2012 Intel Corporation
> > +# Authored-by:  Tom Zanussi <tom.zanussi at intel.com>
> > +#
> > +# This program is free software; you can redistribute it and/or modify
> > +# it under the terms of the GNU General Public License version 2 as
> > +# published by the Free Software Foundation.
> > +#
> > +# This program is distributed in the hope that it will be useful,
> > +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > +# GNU General Public License for more details.
> > +#
> > +# You should have received a copy of the GNU General Public License along
> > +# with this program; if not, write to the Free Software Foundation, Inc.,
> > +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> > +
> > +import sys
> > +import os
> > +import shutil
> > +from tags import *
> > +import glob
> > +
> > +
> > +def find_bblayers(scripts_path):
> > +    """
> > +    Find and return a sanitized list of the layers found in BBLAYERS.
> > +    """
> > +    bblayers_conf = os.path.join(scripts_path, "../build/conf/bblayers.conf")
> > +
> > +    layers = []
> > +
> > +    f = open(bblayers_conf, "r")
> > +    lines = f.readlines()
> > +    for line in lines:
> > +        line = line.strip()
> > +        in_bblayers = False
> > +        if line.startswith("BBLAYERS"):
> > +            in_bblayers = True
> > +        if line.startswith("/"):
> > +            if line.endswith("\\"):
> > +                line = line[:-1].strip()
> > +            layers.append(line)
> 
> 
> This does not appear to handle something like:
> 
> BBLAYERS = " \
>     /path/to/layer1 \
>     /path/to/layer2"
> 
> Need to strip the " from the end of the last line.
> 
> Also doesn't handle:
> 
> BBLAYERS += "/path/to/layer3"
> 
> As it looks for lines starting with / and doesn't handle the " as
> mentioned above.
> 
> > +    f.close()
> > +
> > +    return layers
> > +
> > +
> > +def find_meta_layer(scripts_path):
> > +    """
> > +    Find and return the meta layer in BBLAYERS.
> > +    """
> > +    layers = find_bblayers(scripts_path)
> > +
> > +    for layer in layers:
> > +        if layer.endswith("meta"):
> > +            return layer
> > +
> > +    return None
> 
> I wonder if you could just use the bitbake-layers show-layers command?
> 
> $ bitbake-layers show-layers
> Parsing recipes..WARNING: No recipes available for:
> 
> /home/dvhart/source/poky/layers/poky-extras/meta-kernel-dev/recipes-kernel/linux/linux-yocto_2.6.34.bbappend
> 
> /home/dvhart/source/poky/layers/meta-intel/meta-fri2/recipes-kernel/linux/linux-yocto-tiny_3.2.bbappend
> 
> /home/dvhart/source/poky/layers/poky-extras/meta-kernel-dev/recipes-kernel/linux/linux-yocto-rt_2.6.34.bbappend
> done.
> 
> layer                 path                                      priority
> ==========================================================================
> meta                  /home/dvhart/source/poky/meta             5
> meta-yocto            /home/dvhart/source/poky/meta-yocto       5
> meta-intel            /home/dvhart/source/poky/layers/meta-intel  5
> meta-fri2
> /home/dvhart/source/poky/layers/meta-intel/meta-fri2  5
> meta-kernel-dev
> /home/dvhart/source/poky/layers/poky-extras/meta-kernel-dev  0
> 
> 
> It's slow as snot in January in Toronto, but it avoids having to
> re-implement all the bblayers parsing and the various corner cases that
> bitbake already handles...
> 

Yeah, good suggestion - makes a lot of sense to me - I'll see what I can
do to leverage that work.

> 
> > +
> > +def find_bsp_layer(scripts_path, machine):
> > +    """
> > +    Find and return a machine's BSP layer in BBLAYERS.
> > +    """
> > +    layers = find_bblayers(scripts_path)
> > +
> > +    for layer in layers:
> > +        if machine in layer:
> > +            return layer
> > +
> > +    print "Unable to find the BSP layer for machine %s." % machine
> > +    print "Please make sure it is listed in bblayers.conf"
> > +    sys.exit(1)
> 
> You would probably need to cache the result of the bitbake-layers as it
> is way to slow to use repeatedly like you need to here...
> 

Right, makes sense.

Thanks,

Tom

> The rest looks good to me.
> 





More information about the yocto mailing list