Как условно установить и отправить файлы по рецепту yocto bb? - PullRequest
0 голосов
/ 26 сентября 2019

Мой файл yocto build / conf / auto.conf содержит переменную:

READ_ONLY_FS ?= "true"

Я хочу установить файл конфигурации, который можно изменить, для этого я хочу, чтобы если READ_ONLY_FS было "true",Файл my.conf устанавливается непосредственно в / etc.Но если READ_ONLY_FS имеет значение «false», я хочу, чтобы файл my.conf был установлен в / data / etc, а затем мягко связан с / etc.(/ data - это раздел для чтения и записи)

В настоящее время мой рецепт содержит это как попытку достичь того, что я хотел:

FILES_${PN} += " ${@bb.utils.contains('READ_ONLY_FS', 'true', '', '/data/${sysconfdir}/my.conf', d)}"

do_install_append() {
    install -d ${D}/${sysconfdir}
    if [ "${@bb.utils.contains('READ_ONLY_FS', 'true', 'true', 'false', d)} == "true" ]; then
        install -d ${D}/data/${sysconfdir}
        install -m 0755 ${S}/my.conf ${D}/data/${sysconfdir}/my.conf
        ln -sf ${D}/data/${sysconfdir}/my.conf ${D}/${sysconfdir}/my.conf
    else
        install -m 0755 ${S}/my.conf ${D}/${sysconfdir}/my.conf
    fi    
}

Но я получаю сообщение об ошибке: файлы / каталоги были установлены, ноне отправленЧто я делаю не так?

1 Ответ

0 голосов
/ 26 сентября 2019

Bitbake обычно должен сообщать вам, какие файлы были «установлены, но не отправлены».В вашем случае кажется, что вы устанавливаете /data/${sysconfdir}/my.conf и символическую ссылку на /${sysconfdir}/my.conf, но добавляете только прежний путь к FILES.

Кстати: я думаю, вы можете упростить свой код, удаливусловие в вашем назначении FILES и при непосредственном доступе к READ_ONLY_FS.

Что-то подобное должно работать (совсем не проверено):

FILES_${PN} += "/data/${sysconfdir}/my.conf /${sysconfdir}/my.conf"

do_install_append() {
    install -d ${D}/${sysconfdir}
    if [ ${READ_ONLY_FS} == "true" ]; then
        install -d ${D}/data/${sysconfdir}
        install -m 0755 ${S}/my.conf ${D}/data/${sysconfdir}/my.conf
        ln -sf ${D}/data/${sysconfdir}/my.conf ${D}/${sysconfdir}/my.conf
    else
        install -m 0755 ${S}/my.conf ${D}/${sysconfdir}/my.conf
    fi    
}
...