Используя bitbake, возможно ли иметь другой do_install для пакета на основе целевого образа?

У нас есть одна МАШИНА, которую мы используем для создания двух целевых образов; foo-изображение и foobar-изображение. Оба образа используют одну и ту же версию пакета, но мы хотели бы добавить изменение в задачу 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 будет содержать установленный пакет, который выполнил работу в задаче appends, а образ для foo — нет.

Есть ли способ сделать то, что я изложил, или что было бы альтернативой?


person Timothy    schedule 22.10.2015    source источник


Ответы (2)


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

Я бы сделал следующее:

  • В рецепте добавьте 2-й пакет, который включает дополнительные файлы (если это то, что вы хотите сделать).
  • Пусть ваш второй рецепт изображения включает этот второй пакет.

Другая возможность, в зависимости от того, сможете ли вы определить, какой образ вы создали, — это добавить post_install-скрипт, который сделает модификацию за вас. Третьим, возможно, менее хорошим вариантом было бы внести изменения в файл ROOTFS_POSTPROCESS_COMMAND.

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

person Anders    schedule 23.10.2015

После некоторого размышления мы, вероятно, подумали об этом задом наперед. Вероятно, мы хотим внедрить разделение на уровне MACHINE. Поскольку в конечном итоге оба продукта будут отдельными, это имеет смысл. Это позволит нам вносить изменения в пакеты для этого конкретного продукта.

Наши линии сборки станут:

MACHINE=custom1 bitbake foo-image
MACHINE=custom2 bitbake foobar-image

И наша задача установки для пакета может быть:

do_install (){
    //Some work
}

do_install_append_custom2(){
   //Some more work
}
person Timothy    schedule 23.10.2015