Используя 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,

Какое решение вы выберете, будет зависеть от того, какую настройку вы хотите.

Другие вопросы по тегам