Bra*_*rad 3 openembedded bitbake yocto
我试图在现有的OE环境中包含当前yocto版本的升级的autotools而不升级我现有的所有包,所以我在我的conf文件中添加了yocto作为一个层:
BBLAYERS += " \
...
${OEBASE}/sources/meta-yocto/meta \
...
${OEBASE}/sources/oe-core/meta \
Run Code Online (Sandbox Code Playgroud)
在最初的oe-core层,我有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
Run Code Online (Sandbox Code Playgroud)
在yocto层:
../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
Run Code Online (Sandbox Code Playgroud)
但是,bitbake只找到版本1.12.3:
$ bitbake -s | grep automake
automake :1.12.3-r2
automake-native :1.12.3-r2
nativesdk-automake :1.12.3-r2
Run Code Online (Sandbox Code Playgroud)
但是,我确信图层配置和路径是正确的,因为如果我通过在yocto层中复制/重命名automake_1.14.1.bb来创建虚拟配方zz:
../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
Run Code Online (Sandbox Code Playgroud)
然后,bitbake发现它很好:
$ bitbake -s | grep zz
nativesdk-zz :1.14.1-r0
zz :1.14.1-r0
zz-native :1.14.1-r0
Run Code Online (Sandbox Code Playgroud)
这一切让我想知道bitbake是否有某种缓存状态导致它跳过搜索更新版本的automake.
有没有办法强制bitbake忽略它的缓存并再次搜索并详细说明它正在使用的确切搜索过程?(我使用了-vDDD但它只显示它添加了Yocto层,而不是给定包的特定搜索细节.
谢谢,B
如果两个层都具有配方版本,则层优先级将决定使用哪一个.我猜你的原始图层具有更高的优先级(你可能不想在你的情况下改变它).通过设置层优先级BBFILE_PRIORITY.
一个解决方案是PREFERRED_VERSION_automake = "1.14.%"在你的local.conf中使用,告诉bitbake总是喜欢1.14.x版本.或者,您可以添加具有高优先级的自己的图层,其中只包含automake配方.