Buildout — средство автоматизации сборки для программного обеспечения с открытым исходным кодом, написанное на Python. Позволяет создавать, собирать и вводить в действие приложения из нескольких частей. Buildout помогает конфигурировать и в точности воспроизводить сборку программного обеспечения заданной конфигурации.

Buildout используют такие проекты как Django, Zope, Plone, Silva, Pylons и др.

Термин «buildout» применяется также в отношении каталога, в котором развёрнута конфигурация некоторого приложения и содержится файл buildout.cfg, а сам скрипт buildout обычно находится в bin/buildout.

Возможности

Основные возможности Buildout следующие: Создаёт изолированную среду исполнения приложений на Python (наподобие virtualenv). Применяет язык описания зависимостей, похожий по синтаксису на язык INI-файлов. Файлы конфигурации описывают egg-файлы (формат пакетов программного обеспечения на Python, вроде RPM), необходимые для сборки, и другие части (), например, библиотеки на других языках программирования, требующие компиляции. Использует рецепты () для расширения функциональных возможностей сборки, выполняя их по очередиBuildout documentation, Buildout Recipes . Позволяет разрабатывать и вводить программное обеспечение в эксплуатацию, выпускать исходные коды приложения вместе с конфигурацией среды исполнения.

Конфигурация

Структура файла конфигурации может быть схематически представлена следующим образом: [buildout] parts = part1 part2 develop = src/my.package1 src/my.package2 find-links =<nowiki> http://dist.plone.org/thirdparty</nowiki> [part1] recipe = recipe.name1 # ... другие данные [part2] recipe = recipe.name2 # ... другие данные Встретив такой файл конфигурации, buildout будет по очереди рассматривать части, находить указанные в них рецепты, загружая по необходимости указанные в них пакеты с рецептами, запускать рецепты в соответствии с их точками входа (конфигурируются в setup.py пакета). Поиск ссылок на пакеты может быть расширен за счёт добавления списка URL в find-links. Опция develop даёт пути к пакетам, которые должны быть добавлены к набору библиотек в виде egg-файлов. Обычно это пакеты, находящиеся в разработке.

Опция extends указывает на другой файл конфигурации, который берётся за основу. Тем самым можно разбить конфигурационные файлы buildout на несколько частей. При этом опции можно изменять, присваивая (=), добавляя (+=) или убирая некоторые значения: [buildout] extends = mybase.cfg [part-one] key0 = rec0 key1 += rec1 rec2 key2 -= rec3 Файл mybase.cfg для этого примера может выглядеть так: [part-one] key0 = rec0 rec00 key1 = rec0 key2 = rec1 rec2 rec3 Результат: [part-one] key0 = rec0 key1 = rec0 rec1 rec2 key2 = rec1 rec2 Имеются и другие возможности, например, подстановка опций из других частей, клонирование части.

Пример

Пример простого файла конфигурации buildout.cfg для Plone: [buildout] parts = instance extends = <nowiki>http://dist.plone.org/release/4.1/versions.cfg</nowiki> [instance] recipe = plone.recipe.zope2instance eggs = Plone Pillow

Некоторые параметры командной строки

Режимы работы для скрипта buildout могут быть заданы параметрами командной строки: -vУвеличить детализацию сообщений. Может быть использован несколько раз. -qУменьшить детализацию сообщений. Может быть использован несколько раз. -UНе читать файл настроек buildout конкретного пользователя. -oРежим офлайн. Запрещает устанавливать соединения с другими хостами для доступа к частям, пакетам и т. п. -OРежим онлайн (действует по умолчанию). -nПроверять доступность свежих версий пакетов (действует по умолчанию). -NНе проверять обновления пакетов. -cАльтернативный файл конфигурации (по умолчанию: buildout.cfg)

Из командной строки также можно задавать команды (например, buildout install) и значения ключей в формате часть:опция=значение.

Примечания

Ссылки zc.buildout на PyPI Официальный веб-сайт Buildout

Литература

, pp. 168–177 , pp. 38–44

Категория:Инструменты компиляции Категория:Автоматизация сборки Категория:Свободные системы автоматизации сборки Категория:Кроссплатформенное программное обеспечение Категория:Свободное программное обеспечение, написанное на Python