[poky] New warning

Paul Eggleton paul.eggleton at linux.intel.com
Fri Jun 22 06:01:39 PDT 2012


On Friday 22 June 2012 05:49:55 Gary Thomas wrote:
> I see now what's causing the warning, but I don't see a good way to fix it.
> 
> I have my own DISTRO, similar to meta-yocto, plus a number of BSP layers. 
> Only one BSP layer will be selected in bblayers.conf.
> 
> My meta tree looks something like this:
>    /local/poky-multi/
>      meta/
>      meta-yocto/
>      meta-ti/
>      meta-MYDISTRO/
>      meta-BSPa/
>      meta-BSPb/
>      ...
>      meta-BSPn/
> A typical build will have this for bblayers.conf:
>    BBLAYERS = " \
>      /local/poky-multi/meta \
>      /local/poky-multi/meta-MYDISTRO \
>      /local/poky-multi/meta-BSPf \
>      /local/poky-multi/meta-ti \
>    "
> 
> The problem is that my generic layer1 has a main recipe which is used by
> only a few of the BSP layers (layerBSPa, layerBSPb, etc).  For example, if
> my configuration selects meta-BSPf, that BSP may not need to use the recipe
> in question, but it's still in meta-MYDISTRO.  More concretely,
> meta-MYDISTRO defines a recipe 'fpga-tool' which needs BSP specific setup
> files like this:
>    % find /local/poky-multi -name "fpga-tools*.bb*"
>    /local/poky-multi/meta-MYDISTRO/packages/fpga/fpga-tools_0.0.bb
>    /local/poky-multi/meta-BSPc/packages/fpga-tools_0.0.bbappend
>    /local/poky-multi/meta-BSPd/packages/fpga-tools_0.0.bbappend
> Notice that there is no fpga-tools setup in meta-BSPa.  If I'm building for
> BSPa, I'll get this warning:
>    WARNING: Unable to get checksum for fpga-tool SRC_URI entry
> fpga_gpio_layout.h: file could not be found WARNING: Unable to get checksum
> for fpga-tool SRC_URI entry video_mux.vme: file could not be found
> 
> I can see how to fix this warning by defining those files with dummy
> versions in meta-MYDISTRO

I guess if I were doing it I would not make the BSP layers depend upon the 
distro layer, as Tomas was suggesting. In any case though I suspect the best 
way to handle this is to use COMPATIBLE_MACHINE which you set to some invalid 
value in your distro layer recipe and then append to that value with the 
actual MACHINE in the bbappend in each BSP, e.g.


meta-MYDISTRO recipes/fpga/fpga-tools_0.0.bb:
...
COMPATIBLE_MACHINE = "not-valid"
...


meta-BSPc recipes/fpga/fpga-tools_0.0.bbappend:
...
COMPATIBLE_MACHINE .= "|machinec"
...


meta-BSPd recipes/fpga/fpga-tools_0.0.bbappend:
...
COMPATIBLE_MACHINE .= "|machined"
...


Then, the recipe will be skipped if it is not available for the current 
MACHINE.

> It gets more complicated as my kernel recipe (in meta-MYDISTRO) references
> files like SRC_URI += "file://${MACHINE}.patch"
> I don't see any way to define a dummy version of this.

Rather than ${MACHINE}.patch, the traditional way to do this is to have a 
generic name for the file and then use a MACHINE-named subdirectory within your 
BSP layers to define the machine-specific version. You can always make the dummy 
patch not apply or specifically check for some aspect added by the dummy in 
do_configure.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the poky mailing list