Библиотека сайта rus-linux.net
Проект Yocto
Глава 23 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: The Yocto Project
Автор: Elizabeth Flanagan
Перевод: А.Панин
23.2. Архитектура BitBake
Перед тем, как мы перейдем к подробному рассмотрению части архитектурных решений, примененных в системе BitBake, полезно будет понять то, как BitBake собственно работает. Для того, чтобы в полной мере оценить прогресс развития системы BitBake, мы рассмотрим ее начальную версию, BitBake 1.0. В рамках этого первого релиза BitBake цепочка зависимостей для сборки формировалась на основе зависимостей рецептов. В случае какой-либо ошибки в процессе сборки образа, система BitBake должна была перейти к выполнению следующей задачи и позднее повторить ранее неудачную попытку сборки программного компонента. Очевидно, это означало то, что сборка занимала слишком много времени. Другая особенность работы системы BitBake заключалась в том, что каждая из переменных, используемых рецептами, хранилась в одном очень большом словаре. Учитывая количество рецептов, а также количество переменных и задач, необходимых для завершения сборки образа, можно сделать вывод, что система BitBake 1.0 требовала большого объема памяти для работы. В то время, когда оперативная память была достаточно дорогой и системы работали с меньшим ее объемом, сборки могли заканчиваться неудачами. Ситуация с исчерпанием оперативной памяти (и записью данных в раздел подкачки!) была неприемлема для системы, так как процесс сборки является длительным. В своем первозданном виде система хотя и выполняла поставленные перед ней задачи (иногда), но делала это очень медленно, потребляя чрезмерно большие количества ресурсов. Хуже того, в рамках версии 1.0 системы BitBake не было представлено концепции долговременного кэша данных или разделения данных состояния, а также не было возможности осуществлять инкрементальные сборки, поэтому в случае неудачи при сборке приходилось повторять ее с самого начала.
Краткий обзор различий между актуальной версией 1.13.3 системы BitBake, используемой в рамках системы сборки Poky "edison" и версией 1.0 указывает на появление реализации клиент-серверной архитектуры BitBake, долговременного кэша данных, хранилища данных, а также применение оптимизации путем использования техники копирования при записи данных в хранилище, реализации системы разделения данных состояния и значительных улучшений в алгоритмах формирования цепочек зависимостей для задач и пакетов. Данный эволюционный процесс привел к повышению стабильности, производительности и динамичности функционирования системы. Большая часть этих функций была продиктована необходимостью выполнения более быстрых и надежных процессов сборок с затратами меньшего количества ресурсов. Тремя усовершенствованиями системы BitBake, которые мы будем рассматривать, являются: реализация клиент-серверной архитектуры, оптимизации хранилища данных BitBake и работа по улучшению методов формирования цепочек зависимостей для сборок и задач в рамках BitBake.
Далее: Механизм межпроцессного взаимодействия системы BitBake