#build #yocto #bitbake #openembedded #recipe
Вопрос:
У меня есть два рецепта, a.bb
amp; b.bb
. Теперь в a.bb do_install
, я создаю sample.txt файл и размещение его в разделе ${S}
"a"
(или, при необходимости, может быть помещен в раздел ${D}
. Теперь, когда b.bb
выполняется , в its do_install
мне нужно получить доступ к sample.txt
a.bb
do_install () {
echo "sample" > ${S}/sample.txt
}
b.bb
do_install () {
//access sample.txt here
}
Я установил такие ЗАВИСИМОСТИ, что a.bb будет выполнено до b.bb.. теперь есть какой-нибудь указатель для достижения описанного выше сценария? в руководстве yocto я вижу ссылки на STAGING_DIR*, но не нашел ни одного полезного примера.
Ответ №1:
Вы не можете получить (надежный) доступ к временным файлам из другого пакета. Каждый пакет создается независимо в своей собственной «песочнице». Если файлы из одного пакета необходимы для других пакетов, их необходимо экспортировать в корневой каталог системы.
Пожалуйста, сгенерируйте sample.txt к sysroot с помощью ${D} во время do_install, а затем вы можете получить к нему доступ по определенному пути в sysroot.
a.bb
do_install () {
echo "sample" > ${D}${includedir}/sample.txt
}
b.bb
do_install () {
// action example
install -m 0644 ${D}${includedir}/sample.txt ${S}/sample_2.txt
}
Переменная ${D} позволяет устанавливать создаваемое программное обеспечение в каталог, отличный от его реальной цели.
Ответ №2:
Это зависит от того, что вы хотите сделать. Если вы хотите использовать заголовочные или библиотечные файлы из рецепта a.bb
, вам следует добавить соответствующий пакет рецепта a.bb
в DEPENDS
in b.bb
. Теперь b.bb
будет автоматически выполняться поиск файлов SYSROOT
во время компиляции/установки.
Или, если вы просто хотите добавить некоторые файлы/изменения в исходный код, затем создайте .patch
для изменения и добавьте SRC_URI
в оба рецепта
a.bb
SRC_URI = "file://sample.patch"
b.bb
SRC_URI = "file://sample.patch"