自定义机器配置继承foo-mach时,其专属覆盖项是否会在构建中生效?
Yocto继承机器配置后原机器专属覆盖项是否生效?
问题描述
我希望创建一个继承现有机器配置的新机器配置,基于名为foo-mach.conf的配置,初始的my-mach配置内容如下:
require conf/machine/foo-mach.conf # Remove some stuff not needed. # Add custom device tree to KERNEL_DEVICETREE. # Etc.
包含foo-mach.conf的BSP层在各类recipes中存在大量foo-mach的机器专属覆盖项,请问针对my-mach执行bitbake构建时,这些依赖的foo-mach机器专属覆盖项是否会被启用?
答案
默认情况下不会启用。
Yocto中,recipes里的机器专属覆盖项通过MACHINEOVERRIDES变量匹配生效,默认该变量仅包含当前机器名(即my-mach)。原BSP层里针对foo-mach的覆盖项,因匹配不到当前机器的MACHINEOVERRIDES,所以不会被触发执行。
解决方案
要让foo-mach的机器专属覆盖项生效,需在my-mach的配置中把foo-mach添加到MACHINEOVERRIDES变量里,修改后的配置如下:
require conf/machine/foo-mach.conf MACHINEOVERRIDES =. "foo-mach:" # Remove some stuff not needed. # Add custom device tree to KERNEL_DEVICETREE. # Etc.
这里的.=操作符会在原有MACHINEOVERRIDES值的基础上追加foo-mach:,构建系统会同时识别并应用针对my-mach和foo-mach的专属覆盖项。
内容的提问来源于stack exchange,提问作者shakta
相关产品推荐
相关产品推荐

