Yocto — копирование файла, сгенерированного из одного рецепта, в другой рецепт yocto

#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"