bitbake не находит новый рецепт

Я пытаюсь включить обновленные автоинструменты из текущей версии yocto в мою существующую среду OE без обновления всех моих существующих пакетов, поэтому я добавил yocto в качестве слоя в свой файл conf:

BBLAYERS += " \
...
        ${OEBASE}/sources/meta-yocto/meta \
...
        ${OEBASE}/sources/oe-core/meta \

В исходном слое oe-core у меня есть automake_1.12.3:

../sources/oe-core/meta/recipes-devtools/automake/
├── automake
│   ├── path_prog_fixes.patch
│   ├── prefer-cpio-over-pax-for-ustar-archives.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake_1.12.3.bb
└── automake.inc

В слое йокто:

../sources/meta-yocto/meta/recipes-devtools/automake/
├── automake
│   ├── buildtest.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake_1.14.1.bb
└── automake.inc

Однако bitbake находит только версию 1.12.3:

$ bitbake -s | grep automake
automake                                           :1.12.3-r2                          
automake-native                                    :1.12.3-r2                          
nativesdk-automake                                 :1.12.3-r2  

Однако я уверен, что конфигурация слоя и пути верны, потому что если я создам фиктивный рецепт zz, скопировав / переименовав automake_1.14.1.bb в слой yocto:

../sources/meta-yocto/meta/recipes-devtools/zz
├── automake
│   ├── buildtest.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake.inc
└── zz_1.14.1.bb

тогда bitbake считает, что это нормально:

$ bitbake -s | grep zz
nativesdk-zz                                       :1.14.1-r0                          
zz                                                 :1.14.1-r0                          
zz-native                                          :1.14.1-r0                          

Все это заставляет меня задаться вопросом, есть ли у bitbake какое-то кешированное состояние, из-за которого он пропускает поиск более новой версии automake.

Есть ли способ заставить bitbake игнорировать его кеш и снова выполнять поиск, подробно описывая используемый процесс поиска? (Я использовал -vDDD, но он показал только то, что добавил слой Yocto, а не конкретные детали поиска для данного пакета.

Спасибо, Б


person Brad    schedule 17.04.2015    source источник
comment
Не решение, но вы можете использовать bitbake-layers show-overlayed и bitbake-layers show-recipes, чтобы проверить, какие рецепты доступны. Он покажет, из каких версий и из каких слоев берутся эти рецепты. Если вам нужна дополнительная помощь, опубликуйте вывод этих двух команд, например, пастебин.   -  person Anders    schedule 17.04.2015
comment
Спасибо - не знал о битбэйк-слоях.   -  person Brad    schedule 17.04.2015


Ответы (1)


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

Одним из решений было бы использование PREFERRED_VERSION_automake = "1.14.%". в вашем local.conf, чтобы Bitbake всегда предпочитал версии 1.14.x. В качестве альтернативы вы можете добавить свой собственный слой с высоким приоритетом, содержащий только рецепт автомата.

person Jussi Kukkonen    schedule 17.04.2015
comment
Создание моего собственного слоя - это, по сути, то, что я делаю (на самом деле я не заполняю слой yocto всей полезной нагрузкой yocto, только несколько рецептов). В этом случае приоритет был равным, но не только был равен приоритет, имена слоев в файлах layer.conf тоже были такими же (core), и это, похоже, сбивало с толку. Как только я дал новому слою yocto новое имя, все стало работать так, как я ожидал. Спасибо за совет о PREFERRED_VERSION. - person Brad; 17.04.2015