Используя bitbake, возможно ли иметь другой do_install для пакета, основанного на целевом образе?
У нас есть одна МАШИНА, которую мы используем для создания двух целевых изображений; foo-image и foobar-image. Оба изображения используют одну и ту же версию пакета, но мы хотели бы добавить изменение в задачу do_install в зависимости от того, какой образ создан. Так что файл рецепта для пакета выглядит примерно так:
do_install (){
//Some work
}
do_install_append_foobar-image(){
//Some foobar work
}
В конце концов, когда мы сделаем сборку для двух изображений:
MACHINE=custom bitbake foo-image
MACHINE=custom bitbake foobar-image
Образ для foobar будет содержать установленный пакет, который выполнил работу в задаче добавления, но образ для foo не будет.
Есть ли способ сделать то, что я изложил или что будет альтернативой?
2 ответа
После некоторых размышлений мы, вероятно, думали об этом задом наперед. Мы, вероятно, хотим внедрить разделение на уровне MACHINE. Так как в конечном итоге оба будут отдельными продуктами, это имеет смысл. Это позволит нам внести изменения в пакеты для этого конкретного продукта.
Наши линии сборки станут:
MACHINE=custom1 bitbake foo-image
MACHINE=custom2 bitbake foobar-image
И наша задача установки пакета может быть:
do_install (){
//Some work
}
do_install_append_custom2(){
//Some more work
}
Нет, вы не можете выполнять разные задачи в рецепте, в зависимости от того, какое изображение строится. Там может быть возможность проверки имени изображения в do_install
хотя я очень не уверен
Я бы сделал следующее:
- В рецепте добавьте 2-й пакет, который включает дополнительные файлы (если это то, что вы хотите сделать).
- Сделайте так, чтобы ваш второй рецепт изображения включал этот второй пакет.
Еще одна возможность, в зависимости от того, можете ли вы определить, какое изображение вы создали, - это добавить post_install
-скрипт, который делает модификацию для вас. Третий, возможно, менее удачный вариант - внести изменения в ROOTFS_POSTPROCESS_COMMAND
,
Какое решение вы выберете, будет зависеть от того, какую настройку вы хотите.