我有一个食谱,我想防止它成为目标。
我了解,给定食谱xyz.bb
,“神奇地”添加BBCLASSEXTEND += " native nativesdk"
可以满足以下所有条件:
$ bitbake xyz # 1
$ bitbake nativesdk-xyz # 2
$ bitbake xyz-native # 3
我只想 2号和3号。我明确地不希望1号成为可能(也许xyz
拥有GPL v3许可证,所以我从不需要在目标图像中
我尝试命名配方xyz-native.bb
并添加BBCLASSEXTEND += " nativesdk"
,但这产生了如下可构建目标。
$ bitbake xyz-native # which is what I want
$ bitbake nativesdk-xyz-native # which is NOT what I want
我看到的唯一另一个选择是将xyz.bb
重命名为xyz.inc
,然后分别创建nativesdk-xyz.bb
和xyz-native.bb
,而这两个文件都只需要公共xyz.inc
文件
我想念什么?
答案 0 :(得分:1)
您错过了为创建的食谱添加必需的类- native 和 nativesdk
$ grep -rn inherit test-layer/recipes-example/example/
test-layer/recipes-example/example/nativesdk-example_0.1.bb:5:inherit nativesdk
test-layer/recipes-example/example/example-native_0.1.bb:5:inherit native
然后您将看到native和nativesdk食谱:
$ bitbake -s | grep example
example-native :0.1-r0
nativesdk-example :0.1-r0
答案 1 :(得分:0)
您应该创建2个互相包含的比特烤食谱。第一个位烘烤配方将是native和nativesdk,第二个将是目标。在目标Bitbake配方中,您可以像这样在do install步骤中删除与目标文件有关的内容。
xyx.bb(目标配方)
do_install_append() {
rm -f ${D}the_files_which_you_want_do_delete
}
答案 2 :(得分:0)
如果您的情况是许可的,那么有一个更好的解决方案:只需设置INCOMPATIBLE_LICENSES
,然后bitbake就不会让任何与映像不兼容的内容出现。
如果您还有其他神秘的原因想要拒绝让配方的目标版本成功,则可以使用一些匿名Python检查class-target
是否在OVERRIDES
中,如果存在,请提高SkipRecipe
。