Как использовать переменную SSTATE_DUPWHITELIST в yocto

Я постараюсь объяснить это как можно проще. Я попытался включить и собрать пакет «A» в свой образ Yocto, но пакет A зависит от libftdi и ftdi-eeprom. Теперь «ftdi-eeprom» зависит от «libftdi». В более новых версиях "libftdi" tarball также включает исходные коды ftdi-eeprom, и когда вы собираете libftdi, он собирает оба пакета. Хотя из-за способа настройки пакета «A» мне нужны два разных рецепта для каждой зависимости.

Короче говоря, я сделал два рецепта bitbake как можно лучше и успешно построил libftdi. Теперь, когда я запускаю рецепт "ftdi-eeprom", он хочет заполнить некоторые файлы в системном корне, которые уже установлены там с помощью libftdi. Вот где возникает ошибка ... дубликаты!

По-видимому, мне нужно установить переменную SSTATE_DUPWHITELIST и объявить, что эти повторяющиеся файлы безопасны для замены старых в образе (эта перезапись должна произойти). Может кто-нибудь помочь мне с настройкой SSTATE_DUPWHITELIST? Я не настолько профессионален, что работаю с Yocto.

Ошибки, которые появляются на экране, загружаются в Dropbox.

Заранее спасибо!


person bsoren    schedule 21.05.2016    source источник


Ответы (3)


Ответ - вообще не использовать для этого SSTATE_DUPWHITELIST. Вместо этого в do_install рецепта libftdi (или do_install_append, если рецепт сам по себе не определяет do_install) вы должны удалить повторяющиеся файлы из $ {D}, и тогда они не будут размещены, и ошибка не возникнет. .

person bluelightning    schedule 23.05.2016
comment
Да, либо удалите конфликтующие файлы, либо создайте все по одному рецепту и просто поместите файлы eeprom в свой собственный пакет. (Я не рассматривал рассматриваемый рецепт, но это может быть даже лучший подход). - person Anders; 23.05.2016
comment
Спасибо за ответ, ребята, я только начинаю использовать Yocto и все еще учусь. Могу я попросить вас привести пример синтаксиса того, что вы предлагали сделать? Это действительно поможет. Ваше здоровье. - person bsoren; 24.05.2016

Я заставил его работать, используя: SSTATE_DUPWHITELIST = "/"

Не забывайте цитаты. Вот мой отрывок из BB:

SSTATE_DUPWHITELIST = "/"

DEPENDS = ""

do_unpack() {
    mkdir -pv ${S}
    tar xvf ${DL_DIR}/${FILENAME}.tar  -C ${S}
}

do_install() {
    install -d -m 755  ${D}${includedir}
    install -m 644  ${S}/${MYPATH}/inc/myHeader1.h ${D}${includedir}
    install -m 644  ${S}/${MYPATH}/inc/myHeader2.h ${D}${includedir}
    install -m 644  ${S}/${MYPATH}/inc/myHeader3.h ${D}${includedir}
}
person GSBran    schedule 03.08.2018

Мне удалось решить эту проблему, добавив SSTATE_DUPWHITELIST в рецепт пакета bitbake следующим образом:

SSTATE_DUPWHITELIST = "$ {TMPDIR} / PATH / TO / THE / FILES"

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

Надеюсь, это кому-то поможет!

person bsoren    schedule 22.05.2016