4

I am attempting to include upgraded autotools from the current yocto version in my existing OE environment without upgrading all of my existing packages, so I added yocto as a layer in my conf file:

BBLAYERS += " \
...
        ${OEBASE}/sources/meta-yocto/meta \
...
        ${OEBASE}/sources/oe-core/meta \

In the original oe-core layer, I have automake_1.12.3:

../sources/oe-core/meta/recipes-devtools/automake/
├── automake
│   ├── path_prog_fixes.patch
│   ├── prefer-cpio-over-pax-for-ustar-archives.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake_1.12.3.bb
└── automake.inc

In the yocto layer:

../sources/meta-yocto/meta/recipes-devtools/automake/
├── automake
│   ├── buildtest.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake_1.14.1.bb
└── automake.inc

However, bitbake is only finding version 1.12.3:

$ bitbake -s | grep automake
automake                                           :1.12.3-r2                          
automake-native                                    :1.12.3-r2                          
nativesdk-automake                                 :1.12.3-r2  

However, i am confident the layer configuration and paths are correct because if I create a dummy recipe zz by copy/renaming automake_1.14.1.bb in the yocto layer:

../sources/meta-yocto/meta/recipes-devtools/zz
├── automake
│   ├── buildtest.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake.inc
└── zz_1.14.1.bb

then, bitbake finds it just fine:

$ bitbake -s | grep zz
nativesdk-zz                                       :1.14.1-r0                          
zz                                                 :1.14.1-r0                          
zz-native                                          :1.14.1-r0                          

This all makes me wonder if bitbake has some sort of cached state that is causing it to skip the search for the newer version of automake.

Is there a way to force bitbake to ignore it's cache and search again and detail the exact search process it is using? (I used -vDDD but it showed only that it added the Yocto layer, not the specific search details for a given package.

Thanks, B

Brad
  • 3,190
  • 1
  • 22
  • 36
  • 2
    Not solution, but you can use `bitbake-layers show-overlayed` and `bitbake-layers show-recipes` to check which recipes are available. It'll show which versions and which layers those recipes comes from. If you need further help, post the output of those two commands to e.g. pastebin. – Anders Apr 17 '15 at 11:03
  • Thanks - didn't know about bitbake-layers. – Brad Apr 17 '15 at 17:36

1 Answers1

6

Layer priority is going to decide which one is used if both layers have a version of a recipe. I'm guessing your original layer has a higher priority (and you probably do not want to change that in your situation). Layer priority is set via BBFILE_PRIORITY.

One solution would be using PREFERRED_VERSION_automake = "1.14.%" in your local.conf to tell bitbake to always prefer 1.14.x versions. Alternatively you could add your own layer with a high priority with just the automake recipe in it.

Craig McQueen
  • 41,871
  • 30
  • 130
  • 181
Jussi Kukkonen
  • 13,857
  • 1
  • 37
  • 54
  • 2
    Creating my own layer is essentially what I'm doing (I'm not actually populating the yocto layer with the entire yocto payload, just a few recipes.) In this case the priority was equal, but not only was the priority equal, the layer names in the layer.conf files were the same ("core") also and that seemed to be confusing things. Once I gave the new yocto layer a new name things started to work as I expected. Thanks for the tip on PREFERRED_VERSION. – Brad Apr 17 '15 at 17:34