Лучшая текущая практика по версионированию набора слоев Yocto - PullRequest
1 голос
/ 13 марта 2019

Yocto имеет набор независимых репозиториев, содержащих базовую систему ( Poky ) и различные программные компоненты (все meta- * репозитории здесь , а также индекс открытого встраиваемого слоя ). Поэтому, если вы хотите создать образ для конкретного устройства и цели, вам нужно проверить несколько репозиториев.

Все они связаны между собой файлами conf/bblayers.conf и conf/local.conf в каталоге build. Но это каталог сборки - он должен быть одноразовым и содержать только информацию, которую можно легко восстановить по запросу. И это действительно так - за исключением списка слоев в conf/bblayers.conf и пары определений, таких как MACHINE в conf/local.conf, которые определяют целевую систему для построения.

Как мне сделать версию этой информации?

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

Так есть ли лучший вариант? Предпочтительно тот, который позволит избежать каких-либо дополнительных шагов между извлечением / обновлением (с подмодулями или repo), oe-init-build-env сценарием инициализации (который создает каталог сборки, если он не существует) и выполнением bitbake с соответствующим целевым образом?

Ответы [ 2 ]

1 голос
/ 14 марта 2019

На самом деле, repo - это удобный инструмент для управления файлами манифеста со всеми необходимыми репозиториями.

Тогда вы можете использовать TEMPLATECONF для версии local.conf и bblayers.conf. Вот как мы это делаем: https://pelux.io/software-factory/master/chapters/baseplatform/building-PELUX-sources.html

0 голосов
/ 13 марта 2019

Сам дистрибутив Poky использует инструмент Combo Layer , который, кажется, предназначен для решения этой конкретной проблемы. Однако при использовании этого инструмента не очень понятно, как должен выглядеть рабочий процесс.

Что касается файлов по умолчанию bblayers.conf и local.conf, вы можете либо создать версии в любом месте вашего проекта и сделать скрипт, скопирующий их в папку сборки после вызова oe-init-build-env, либо просто использовать meta-poky/conf/bblayers.conf.sample и meta-poky/conf/local.conf.sample , которые автоматически устанавливаются oe-init-build-env при первом создании каталога сборки.

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

...