Для GNOME-приложений представлена новая экспериментальная система сборки BuilDj

11.03.2010 09:56

В рамках проекта 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 нельзя просто сконвертировать в разные форматы определения структуры проекта).