Сборка зависимых пакетов с помощью BitBake отдельно - PullRequest
0 голосов
/ 27 мая 2019

У нас есть коллекция связанных и частично взаимозависимых пакетов. Они живут в отдельных репозиториях Git. Как:

  • git@bitbucket.company:common
  • git@bitbucket.company:libfoo
    • зависит от common
  • git@bitbucket.company:libbar
    • зависит от common
  • git@bitbucket.compnay:libbarex
    • зависит от libbar
  • git@bitbucket.company:daemon
    • зависит от common
  • final-image (просто рецепт изображения)
    • зависит от libfoo, libbar, libbarex, daemon

Пакеты в настоящее время создаются путем настройки среды Yocto, проверки всех из них и запуска bitbake с целью изображения, которая зависит от всех из них. Оформление осуществляется с помощью логики, содержащей специальную логику Это

git clone https://git.yoctoproject.org/git/poky
git clone -b $BRANCH git@bitbucket.company:common
git clone -b $BRANCH git@bitbucket.company:libfoo
git clone -b $BRANCH git@bitbucket.company:libbar
git clone -b $BRANCH git@bitbucket.company:libbarex
git clone -b $BRANCH git@bitbucket.company:daemon
. poky/oe-init-build-env
../common/add-layers.sh
bitbake final-image

Недостатком является то, что CI-сервер не понимает стороны управления конфигурацией, поэтому он не может делать такие вещи, как построение каждого pull-запроса, не говоря уже о том, чтобы сообщать об этом обратно менеджеру репозитория Git для управления pull-запросом. запросы на него.

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

Но как мне это сделать?

Я могу добавить

bitbake -c populate_sdk final-image

в основную сборку, а затем используйте SDK для сборки отдельных компонентов. Однако это означает, что любые изменения в common должны быть объединены, и SDK должен быть перестроен, прежде чем я смогу собрать libfoo, libbar или daemon, и дополнительно изменения в libbar должны быть объединены, прежде чем я смогу собрать libbarex.

Могу ли я перенести результаты этих инкрементных сборок в какое-то хранилище и вернуть их обратно для сборки зависимого компонента без необходимости перекомпоновки SDK?

...