Buildout

zc.buildout
Тип средство автоматизации сборки
Разработчики Jim Fulton и соавторы
Написана на Python
Операционная система Кроссплатформенное ПО
Последняя версия 2.5.0 (11 ноября 2015 года [1])
Репозиторий github.com/buildout/buil…
Лицензия Zope Public License
Сайт buildout.org

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

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

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

Возможности

Основные возможности Buildout следующие:

  • Создаёт изолированную среду исполнения приложений на Python (наподобие virtualenv).
  • Применяет язык описания зависимостей, похожий по синтаксису на язык INI-файлов. Файлы конфигурации описывают egg-файлы (формат пакетов программного обеспечения на Python, вроде RPM), необходимые для сборки, и другие части (англ. part), например, библиотеки на других языках программирования, требующие компиляции.
  • Использует рецепты (англ. recipe) для расширения функциональных возможностей сборки, выполняя их по очереди[4].
  • Позволяет разрабатывать и вводить программное обеспечение в эксплуатацию, выпускать исходные коды приложения вместе с конфигурацией среды исполнения[5].

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

Структура файла конфигурации может быть схематически представлена следующим образом[6]:

 [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-файлов. Обычно это пакеты, находящиеся в разработке[6].

Опция extends указывает на другой файл конфигурации, который берётся за основу. Тем самым можно разбить конфигурационные файлы buildout на несколько частей. При этом опции можно изменять, присваивая (=), добавляя (+=) или убирая некоторые значения[7]:

 [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[8]:

 [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) и значения ключей в формате часть:опция=значение[7].

Примечания

  1. 2.5.0. Дата обращения: 10 декабря 2015. Архивировано 21 апреля 2016 года.
  2. 1 2 Официальный веб-сайт Buildout. Дата обращения: 2 августа 2012. Архивировано 29 июля 2012 года.
  3. Jacob Kaplan-Moss. Developing Django apps with zc.buildout (2009). Архивировано из оригинала 29 июля 2012 года.
  4. Buildout documentation, Buildout Recipes Архивировано 5 мая 2009 года.
  5. Ziade, 2008, pp. 167-168.
  6. 1 2 Ziade, 2008, pp. 169.
  7. 1 2 Buildout Quick Reference Card. Дата обращения: 2 августа 2012. Архивировано из оригинала 18 октября 2012 года.
  8. MinimalPlone4 на github

Ссылки

Литература

  • Tarek Ziadé. Expert Python Programming. — Packt Publishing Ltd., 2008. — 372 с. — ISBN 978-1-847194-94-7., pp. 168–177
  • Martin Aspeli. Professional Plone 4 Development. — Packt Publishing Ltd., 2011. — 516 с. — ISBN 9781849514422., pp. 38–44
  • Alex Clark. Plone 3.3 Site Administration. — Packt Publishing Ltd., 2010. — 240 с. — ISBN 9781847197047.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.