У меня возникли проблемы с пониманием рецептов битбака. (Мне плохо написано, что мне нужно изменить, я обычно читал и понимал весь механизм, но, к сожалению, я нахожусь в плотном графике). Не могли бы вы помочь мне понять разницу между RDEPENDS и DEPENDS. Я прочитал ссылку, и я знаю, что они стоят за зависимость от выполнения и строят зависимость соответственно, но каков эффект на нее в рецепте битбокса? Насколько я понимаю, если пакет A зависит от другого B, B должен быть построен и готов к включению A для сборки. Bitbake не связан с временем выполнения, он существует только для создания и развертывания пакетов. Так в чем же разница?
Время выполнения Bitbake vs build
Ответ 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, то Tdo_configure
для зависимости от задачи Pdo_populate_sysroot
. -
Если T
RDEPENDS
на P, то Tdo_build
задачу, зависящую от задачи pdo_package_write
.