Bitbake помещает файлы конфигурации в неправильный пакет.Игнорирование директив FILES_ в моем .bbappend.Следующее место, чтобы посмотреть / как исправить? - PullRequest
0 голосов
/ 03 января 2019

Я создал bbappend для компиляции утилит fw_printenv / setenv из u-boot из существующего (модифицированного) u-boot и установил их в $ {D}.Это работает нормально.Я добавил дополнительный пакет к рецепту и использовал FILES_, чтобы сообщить bitbake, какие пакеты должны иметь какие файлы.Bitbake, кажется, игнорирует директивы FILES_ или что-то еще переопределяет его.Я бы хотел, чтобы содержимое $ {D} / boot было упаковано в u-boot-imx, а $ {D} / sbin и $ {D} / etc - в u-boot-fw-utils-imx.(Я использую Yocto 2.2)

Я пытался FILES_u-boot-fw-utils-imx += "/sbin/* /etc/*".Файлы в / sbin попадают в rpm u-boot-fw-utils-imx, но файл конфигурации в / etc все еще находится в rpm u-boot-imx.Затем я попытался установить FILES_u-boot-imx = "/boot /boot/*" и FILES_remove_u-boot-imx = "/etc/fw_env.config", но файл конфигурации остается в пакете u-boot-imx.

# bitbake -e | grep ^FILES_u-boot
FILES_u-boot-fw-utils-imx=" /sbin/* /etc /etc/fw_env.config"
FILES_u-boot-imx-bin="/usr/bin/* /usr/sbin/*"
FILES_u-boot-imx="/boot /etc"
...

Похоже, что-то настраивает FILES_u-boot-imx после меня.

Большая часть моего файла .bbappend:

do_compile_append() {
    # compile fw_printenv/setenv. default oe_runmake options are broken and yield an x86_64 executable. the inline python strips off the leading space in UBOOT_MACHINE.
    make CROSS_COMPILE=arm-poky-linux-gnueabi- CC="arm-poky-linux-gnueabi-gcc  --sysroot=${STAGING_DIR_TARGET} -I${STAGING_DIR_TCBOOTSTRAP}/usr/include -mfloat-abi=hard" V=1 -C ${S} O=${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()} env
}

do_install_append() {
    install -d ${D}/sbin
    install -d ${D}/etc
    install -m 755 ${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()}/tools/env/fw_printenv ${D}/sbin/fw_printenv
    install -m 755 ${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()}/tools/env/fw_printenv ${D}/sbin/fw_setenv
    echo "/dev/mmcblk1boot0      0xe0000         0x2000" > ${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()}/tools/env/fw_env.custom
    install -m 0644 ${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()}/tools/env/fw_env.custom ${D}/etc/fw_env.config
}

PACKAGES += "u-boot-fw-utils-imx"
INSANE_SKIP_u-boot-imx = "already-stripped ldflags"
INSANE_SKIP_u-boot-fw-utils-imx = "already-stripped ldflags"
FILES_u-boot-imx = "/boot /boot/*"
FILES_u-boot-fw-utils-imx += "/sbin/* /etc /etc/fw_env.config"

Может кто-нибудь объяснить, какчтобы получить мой файл конфигурации в желаемом пакете или указать мне следующее место для поиска?

Кстати: я уверен, что кто-то спросит, почему я не использовал существующие u-boot-fw-utilsрецепт.У меня был рецепт для более ранней версии U-Boot.Когда я запускал этот рецепт, он не компилировался.Однажды я устранил очевидные проблемы, скомпилированные для целевой платформы oe_runmake для x86_64.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Понял!Два наблюдения:

  1. _remove должен быть ПОСЛЕ имени пакета.
  2. удаление / etc не работало, потому что $ {sysconfdir} еще не был раскрыт

Окончательные директивы FILES_:

FILES_u-boot-imx_remove = "${sysconfdir}"
FILES_u-boot-fw-utils-imx = "/sbin /etc"

Спасибо Россу за предложение передать битбэйк -e на меньшее.

0 голосов
/ 03 января 2019

Не используйте bitbake -e | grep, а просто перенаправьте в less, а затем найдите FILES назначения, которые вы ищете.Над назначением будет история того, как была установлена ​​переменная.

...