Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Проект Yocto

Глава 23 из книги "Архитектура приложений с открытым исходным кодом", том 2.

Оригинал: The Yocto Project
Автор: Elizabeth Flanagan
Перевод: А.Панин

Механизм межпроцессного взаимодействия системы BitBake

Так как мы уже достаточно хорошо знакомы с тем, как система сборки Poky использует файлы конфигурации, рецепты и уровни для создания образов встраиваемых систем, мы подготовлены к тому, чтобы взглянуть под капот системы BitBake и изучить метод объединения этих компонентов. Начиная с основного исполняемого файла системы BitBake, bitbake/bin/bake, мы можем приступить к рассмотрению процесса, выполняемого BitBake для настройки необходимой для начала сборки инфраструктуры. Первым интересующим нас элементом является механизм межпроцессного взаимодействия (Interparocess Communications - IPC) из состава BitBake. Изначально в рамках BitBake не было представлено концепции клиент-серверного взаимодействия. Эти функции были добавлены в BitBake спустя некоторое время для запуска множества процессов в рамках сборки, так как изначально система была однопоточной, а также для добавления альтернативных пользовательских возможностей.

Обзор механизма межпроцессного взаимодействия системы BitBake
Рисунок 23.3: Обзор механизма межпроцессного взаимодействия системы BitBake

Все сборки, выполняемые с помощью системы Poky, начинаются с создания экземпляра пользовательского интерфейса. Пользовательский интерфейс предоставляет механизмы для записи данных событий, состояния и прогресса сборки наряду с механизмами приема событий выполнения задач сборки посредством модуля событий BitBake. Используемым по умолчанию пользовательским интерфейсом является интерфейс knotty, представляющий собой интерфейс командной строки системы BitBake. Он назван knotty или "(no)tty" из-за того, что работает как с tty-устройствами, так и с файлами, являясь одним из нескольких поддерживаемых интерфейсов. Одним из дополнительных пользовательских интерфейсов является интерфейс Hob. Hob является графическим интерфейсом для BitBake, напоминающим "BitBake commander". В дополнение к стандартным функциям, которые вы можете обнаружить в пользовательском интерфейсе интерфейсе knotty, Hob (разработанный Joshua Lock) предоставляет возможность модификации конфигурационных файлов, добавления дополнительных уровней и пакетов, а также полномасштабного изменения параметров процесса сборки.

Пользовательские интерфейсы системы BitBake имеют возможность отправлять команды следующему подключенному приложением BitBake модулю, реализующему функции сервера BitBake. Как и в случае с пользовательскими интерфейсами, BitBake также поддерживает множество различных типов серверов, таких, как XMLRPC. Стандартным сервером, который использует большинство пользователей при запуске системы BitBake с интерфейсом knotty, является сервер процесса BitBake. После запуска сервера приложение BitBake подключает модуль сборки.

Модуль сборки является основной частью BitBake, с помощью которой вызывается большая часть наиболее интересных процессов в ходе сборки с использованием системы Poky. Модуль сборки управляет разбором метаданных, инициирует генерацию деревьев зависимостей и задач, а также непосредственно управляет процессом сборки. Одной из функций архитектуры серверной части BitBake является предоставление различных возможностей раскрытия командного API для опосредованного доступа к нему со стороны пользовательского интерфейса. Модуль команд является рабочим элементом системы BitBake, осуществляющим запуск команд сборки и генерирующим события, которые передаются пользовательскому интерфейсу, минуя обработчик событий BitBake. В тот момент, когда приложение BitBake подключает модуль сборки, он инициализирует хранилище данных BitBake, после чего начинает разбор всех конфигурационных файлов системы сборки Poky. После этого модуль создает объект текущей очереди и начинает сборку.


Далее: Хранилище данных DataSmart системы BitBake