В рамках проекта BuilDj создана новая экспериментальная система организации процесса сборки GNOME-приложений, призванная в будущем уйти от использования пакета AutoTools (automake, autoconf). Система изначально оптимизирована для сборки графических приложений, написанных с использованием языков C, C++, Python, Vala и дающая возможность прозрачного использования близких к GNOME технологий, таких как intltool, pkg-config, mkenums, gtk-doc, .desktop, .pc, XDG, интроспекция gobject.
Для описания правил сборки в BuilDj используется формат JSON, который является более простым для восприятия, чем XML, предоставляя при этом аналогичные возможности. Для непосредственной сборки проекта, правила BuilDj транслируются в набор сборочных файлов, поддерживаемых выбранным фронт-эндом, в роли которого могут выступать такие системы, как AutoTools, CMake, SCons и Waf.
Основные цели развития проекта:
- Простота использования: интуитивность и непротиворечивость создаваемых правил;
- Задействование лучших идей из других систем автоматизации сборки, например, недопустимость использования в формате жестко определенных путей к ресурсам, поддержка автогенерации .pc-файлов и прозрачная поддержка средств интернационализации (i18n);
- Определение в едином файле всех правил сборки, конфигурации и проверки зависимостей;
- Изначальная поддержка кросс-компиляции и гибкой настройки параметров проекта;
- Отделение описания правил сборки от функциональности: сборочный формат является абстрактным, легко интегрируется со средами разработки программ. Непосредственная сборка осуществляется фронт-эндом (Waf, Autotools, CMake).
Желание уйти от использования пакета Autotools связаны с проблемами при портировании программ на другие платформы (зависимость от bash и POSIX); постоянной необходимостью обходить подводные камни; не полным документированием всех функций; необходимостью изучать тонкости использования M4/Autoconf, Automake, Make и Bash; плохой расширяемостью; трудностью с восприятием и разбором правил, составленных другими людьми; проблемами интеграции с IDE (правила autotools нельзя просто сконвертировать в разные форматы определения структуры проекта).
|