Как я могу сделать бэкторт systemd из scratchgap в kirkstone?

Вопрос или проблема

У меня есть проблема в моем проекте yocto на kirkstone. В версии systemd 250.4 есть ошибка, которую я хочу исправить, вернув систему из scarthgap. Scarthgap предоставляет версию systemd 255.4, которая содержит необходимое исправление.

Я скачал код с помощью git clone https://git.openembedded.org/openembedded-core и переключился на ветку scarthgap. Это недавняя версия, и точный хэш, на который я переключился, – 3d8948. Цель состоит в том, чтобы включить этот PR

Затем я добавил в свой проект yocto пользовательский слой под названием meta-scarthgap-backports и скопировал каталог systemd из клона openembedded-core. Моя структура файлов выглядит следующим образом.

layers/meta-scarthgap-backports/
├── conf
│   └── layer.conf
└── recipes-core
    └── systemd
        └── ... все файлы из ~/openembedded-core/meta/recipes-core/systemd

Я добавил этот новый слой в свою директорию BBLAYERS, и когда я запускаю bitbake systemd, он только собирает версию 250.4, которая является версией kirkstone.

Я пытался добавить PREFERRED_VERSION_systemd = "255.4" в файл local.conf моего проекта, но перед тем, как он продолжает собирать старую версию, я получаю следующее предупреждение. Я также пробовал PREFERRED_VERSION_systemd_forcevariable, и результат был тем же.

WARNING: preferred version 255.4 of systemd not available (for item systemd)
WARNING: versions of systemd available: 1:250.4

Что мне делать, чтобы мой проект собрал версию systemd, которую я добавил в слой backports?

Ответ или решение

Для того чтобы успешно выполнить бэкапрование systemd с ветки scarthgap в вашу сборку Yocto с веткой kirkstone, вам нужно учесть несколько шагов и настроек. Давайте рассмотрим этот процесс более подробно.

Шаги для бэпортирования systemd

  1. Клонирование репозитория и создание директории:
    Вы уже сделали это правильно, склонировав репозиторий openembedded-core и создав новый слой meta-scarthgap-backports.

  2. Копирование необходимых файлов:
    Убедитесь, что вы скопировали все необходимые файлы systemd из openembedded-core/meta/recipes-core/systemd в ваш слой. Это включает в себя .bb файлы и любые связанные с ними файлы.

  3. Настройка layer.conf:
    Убедитесь, что ваш layer.conf файл корректно прописан и содержит все нужные зависимости.

  4. Изменение PREFERRED_VERSION:
    В вашем local.conf добавьте следующую строку:

    PREFERRED_VERSION_systemd = "255.4"
    PREFERRED_PROVIDER_virtual/systemd = "systemd"
  5. Установка переменной BBFILES:
    В вашем layer.conf убедитесь, что вы указали путь к вашим изменениям. Это важно для того, чтобы BitBake знал, что существует новая версия:

    BBFILES += "${LAYERS_DIR}/meta-scarthgap-backports/recipes-core/systemd/*.bb"
  6. Обновление зависимостей:
    Убедитесь, что все зависимости, которые могут требоваться для новой версии systemd, также обновлены. Это включает библиотеки и любые мета-зависимости, которые могли измениться.

  7. Очистка кэша и сборки:
    После выполнения всех изменений обязательно выполните очистку кэша:

    bitbake -c cleanall systemd

    Затем попробуйте заново отразить сборку:

    bitbake systemd
  8. Проверка наличия ошибок:
    Если сборка все еще использует старую версию или вы получаете предупреждения, проверьте наличие других слоев, которые могут переопределять вашу настройку PREFERRED_VERSION. В каждом слое может быть свой набор переменных с префиксом PREFERRED_VERSION, и они могут конфликтовать друг с другом.

  9. Убедитесь в правильности формата:
    Убедитесь, что формат метаданных в ваших .bb файлах корректен. Например, важно правильно указывать версию и любые изменения, которые были сделаны.

Дополнительные шаги

Если после выполнения всех вышеуказанных шагов вам все равно не удается собрать необходимую версию systemd, вы можете сделать следующее:

  • Проверьте conf/packages.conf: Убедитесь, что в этом файле не прописаны ограничения на версии systemd.
  • Логи сборки: Проверьте логи сборки, чтобы увидеть, какие именно ошибки возникают и какие зависимости могут быть недоступны.
  • Обсудите на форумах: Если вы исчерпали все ресурсы, неплохо было бы обсудить вашу проблему на форумах Yocto или списках рассылки, так как другие разработчики могут иметь аналогичный опыт.

Следуя указанным шагам и рекомендациям, вы должны быть в состоянии успешно бэпортировать systemd с ветки scarthgap в вашу сборку kirkstone. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...