我在项目中有一个自定义层。这会与同事分享。
我的发行版 (poky) 它使用旧版本的 alsa。这在构建区域的初始设置时下载。我想用更高版本“替换”那个版本的 alsa 并在我的自定义图层中执行此操作,以便他们不必编辑/替换 poky 中的食谱。
做到这一点的最佳方法是什么?如果我只是下载较新的配方并将其包含在我的图层中(匹配文件系统名称),它会自动使用更高版本还是我需要做其他事情?
我有几个硬件平台(相同的 CPU 等)需要不同的 asound.conf 文件。
我控制目标平台的方式是通过 MACHINE 变量和目标图像(即MACHINE=machine_1 nice bitbake machine-1-bringup-image)
通常,如果只是替换 conf 文件,我只会创建一个 alsa-state.bbappend 并创建一个 do_install_append 函数来替换它。
但是,由于不同的硬件平台需要不同的 conf 文件,我不确定如何处理它。
我已经尝试将一些逻辑放入附加文件 do_install_append 函数中,但它不起作用。它并不总是选择正确的文件(就像它认为没有任何变化,所以它使用以前缓存的 conf?)
这是我尝试过的附加文件之一的示例:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += " \ file://asound_MACHINE1.conf \
file://asound_MACHINE2.conf \ "
do_install_append() {
echo " alsa-state.bbappend MACHINE: ${MACHINE}"
if [ "${MACHINE}" = "machine_1" ]; then
echo " machine_1"
echo " installing ${WORKDIR}/asound_MACHINE1.conf to ${D}${sysconfdir}/asound.conf"
install -m 644 ${WORKDIR}/asound_MACHINE1.conf {D}${sysconfdir}/asound.conf
else
echo " installing ${WORKDIR}/asound_MACHINE2.conf to ${D}${sysconfdir}/asound.conf"
install -m 644 ${WORKDIR}/asound_MACHINE2.conf ${D}${sysconfdir}/asound.conf …Run Code Online (Sandbox Code Playgroud)