Bitbake: изменить bbappend в зависимости от скомпилированного изображения

У меня есть два разных изображения, в которых используется много общих пакетов. Одним из них является wpa-supplicant, который предоставляет файл wpa_supplicant.conf, установленный по умолчанию. Однако я хочу, чтобы был установлен мой собственный wpa_supplicant.conf.

Я решил эту проблему с помощью .bbappend в моем слое. Но теперь я хочу, чтобы это добавление применялось только при компиляции одного из изображений, но не другого.

Короче: есть ли способ включить / отключить .bbappend в зависимости от скомпилированного образа?

ПРИМЕЧАНИЯ:

  • Я видел этот ответ, который похож, но создание нового пакета, который устанавливает мой файл, не работает: многие пакеты будут пытаться чтобы установить тот же файл, и Bitbake вернет ошибку.

    • The error here is that I cannot install the same file from two different packages, that's why this is not a duplicate of this question IMO.

Спасибо!


person Javi    schedule 17.02.2017    source источник
comment
@Anders Я ссылаюсь на этот вопрос в своем ответе. Это похоже, но основная проблема, с которой я сталкиваюсь, отличается (не может быть двух пакетов, устанавливающих один и тот же файл), поэтому я спрашиваю о возможности .bbappend.   -  person Javi    schedule 17.02.2017
comment
Ну вопрос был тот же, т.е. единая машина. Его собственный ответ отличается, поскольку он использовал две машины.   -  person Anders    schedule 17.02.2017


Ответы (1)


Что ж, как указано в ответе, на который вы ссылаетесь, вы не можете повлиять на изображение на какой-либо другой рецепт. Причина в том, что каждый рецепт строится независимо от того, какой образ вы создаете.

Предназначены ли разные образы для установки на одном MACHINE? В противном случае у вас могут быть разные wpa_supplicant.conf для каждого MACHINE.

Для того же MACHINE:

  • Использование ROOTFS_POSTPROCESS_COMMAND - один из способов решить эту проблему.
  • Добавьте оба wpa_supplicant.conf-файла (с разными именами) и pkg_post_inst_${PN}(){xxx} скрипт в ваш wpa-supplicant, который во время создания rootfs определяет, какой образ создается, и выбирает правильный wpa_supplicant.conf.
  • Другое решение - удалить wpa_supplicant.conf из пакета wpa-supplicant в вашем bbappend. Создайте два новых пакета wpa-supplicant-conf1 и wpa-supplicant-conf2, которые просто включают соответствующие wpa_supplicant.conf. Эти двое в идеале должны иметь

wpa-supplicant-conf1:

RCONFLICTS_${PN} = "wpa-supplicant-conf2" 

и для wpa-supplicant-conf2

RCONFLICTS_${PN} = "wpa-supplicant-conf1"

в своих рецептах.

person Anders    schedule 17.02.2017
comment
Спасибо за ответ, тип машины такой же, физически платы будет две разные. Я буду исследовать их дальше, потому что я не знаком ни с ROOTFS_POSTPROCESS_COMMAND, ни с pkg_post_inst_${PN}. По поводу третьего решения: как удалить файл с .bbappend? Удаление с помощью do_install_append()? - person Javi; 17.02.2017
comment
Да, rm внутри do_install_append() работает отлично. - person Anders; 17.02.2017
comment
Можно создавать разные идентичные машины или дистрибутивы для разных конфигураций. Например, в раннем тестировании мы использовали DISTRO и MACHINE нашего производителя, но по мере того, как мы уточняли наш собственный образ, мы создали новые конфигурации MACHINE и DISTRO, которые include изменили конфигурации поставщика и изменили их так, как мы хотели работать. - person Harvey; 13.05.2021