Время выполнения Bitbake vs build

У меня возникли проблемы с пониманием рецептов битбака. (Мне плохо написано, что мне нужно изменить, я обычно читал и понимал весь механизм, но, к сожалению, я нахожусь в плотном графике). Не могли бы вы помочь мне понять разницу между RDEPENDS и DEPENDS. Я прочитал ссылку, и я знаю, что они стоят за зависимость от выполнения и строят зависимость соответственно, но каков эффект на нее в рецепте битбокса? Насколько я понимаю, если пакет A зависит от другого B, B должен быть построен и готов к включению A для сборки. Bitbake не связан с временем выполнения, он существует только для создания и развертывания пакетов. Так в чем же разница?

Ответ 1

Как вы говорите, битбаке занимается созданием и развертыванием пакетов, и ему необходимо развернуть все пакеты, необходимые для удовлетворения зависимостей времени выполнения от целевой системы.

Если ваш рецепт говорит, что цель T DEPENDS на целевой P, которая сообщает битбаке, что он должен построить P до T, потому что T не может быть построен без P.

Если в вашем рецепте указано, что T RDEPENDS на P, это говорит Bitbake, что он должен развернуть P в целевой системе, если он разворачивает T, потому что T не может использоваться без P.

Например, вы не можете создавать tar без компилятора C, но вам не нужен компилятор C для использования tar. Вы можете развернуть tar без развертывания компилятора C. Так что DEPEND.

С другой стороны, вы не можете использовать tar без библиотеки времени выполнения. Если развертывается tar, необходимо также запустить библиотеку времени выполнения C. Так что RDEPEND.

Биты:

  • Если T DEPENDS на P, то T do_configure для зависимости от задачи P do_populate_sysroot.

  • Если T RDEPENDS на P, то T do_build задачу, зависящую от задачи p do_package_write.