Возможна ли зависимость во время выполнения путем включения файла заголовка?

Дело в следующем: есть ipk с именем A и другой с именем B.
B имеет зависимость во время выполнения от A (в соответствии с рецептом bitbake A)
Однако исходный файл в B имеет #include <some_header_in_A>
Это выглядит как зависимость от сборки, но тогда я не могу объяснить себе, почему рецепт bitbake работает с зависимостью во время выполнения.
Приветствуется любая помощь, а также ссылка на какое-то пояснительное руководство.


person lulijeta    schedule 15.06.2015    source источник


Ответы (1)


Вспомните мой ответ на другой ваш вопрос.

  • Если T ЗАВИСИТ от P, тогда задача do_configure T будет зависеть от задачи do_populate_sysroot пользователя P.

  • Если T RDЗАВИСИТ от P, то задача do_build T будет зависеть от задачи do_package_write пользователя P.

Таким образом, тот факт, что ваш B RDEPENDS на вашем A означает, что A уже прошел все этапы вплоть до do_package_write при построении B, включая do_populate_sysroot. Поэтому любые заголовки, которые A экспортирует в sysroot, уже будут там, когда B будет собран, и зависимость времени сборки будет удовлетворена.

Если B включает заголовки, экспортированные A, это является зависимостью времени сборки. Но это не исключает того, что B также зависит от A во время выполнения. На самом деле обычно бывает так, что если B зависит от A во время выполнения, то он также зависит от времени сборки от A именно потому, что ( для пакетов C/C++) зависимость времени выполнения обычно означает, что для сборки B нужны заголовки из A.

Если в вашем рецепте только указано B RDEPENDS на A, то для успеха требуется немного удачи. Если бы случилось так, что do_configure B включала проверку существования заголовков A, и всех зависимостей в play сделал возможным запуск do_configure B до завершения do_populate_sysroot A, тогда эта проверка заголовков A могла завершиться ошибкой .

Чтобы рецепт был полностью правильным и безопасным, в нем должно быть указано, что B RDEPENDS на A и что B DEPENDS на A.

person Mike Kinghan    schedule 15.06.2015