Waf (система сборки)

Разработчик(и)Томас Надь
Стабильный релиз
2.0.25 / 1 января 2023 г. ; 2 года назад ( 2023-01-01 )
Репозиторий
  • gitlab.com/ita1024/waf/
Написано вПитон [1]
Операционная системаMS Windows , POSIX
ТипИнструменты разработки программного обеспечения
ЛицензияНовая лицензия BSD (исходный код), CC-BY-NC-ND (документация)
Веб-сайтwaf.io

Waf — это инструмент автоматизации сборки, разработанный для помощи в автоматической компиляции и установке программного обеспечения . Он написан на Python и поддерживается Томасом Наги.

Исходный код Waf представляет собой программное обеспечение с открытым исходным кодом , выпущенное в соответствии с условиями новой лицензии BSD , хотя его сопроводительная документация распространяется под лицензией CC-BY-NC-ND , которая запрещает как модификацию, так и коммерческое распространение: это не позволяет поставщикам, таким как проект Debian , включать документацию Waf в свои дистрибутивы.

История

Томас Надь создал инструмент автоматизации сборки под названием BKsys , который был разработан для размещения поверх SCons , предоставляя более высокий уровень функциональности, аналогичный Autotools . Это было частью усилий по переходу KDE от Autotools к более современной системе сборки на начальных этапах цикла разработки KDE 4. BKsys/SCons был выбран сообществом KDE в качестве новой стандартной системы сборки. [2] Когда Томас Надь решил, что фундаментальные проблемы SCons (в первую очередь плохая масштабируемость) слишком сложны и требуют много времени для исправления, он начал полную переработку , которую назвал Waf . Поскольку BKsys был признан тупиковым вариантом, KDE решила вместо этого перейти на CMake ; [3] однако Waf продолжал поддерживаться как отдельный проект и с тех пор активно развивался и принимался другими сообществами. [ необходима цитата ]

Функции

Возможности WAF:

  • Переносимо на Unix и не-Unix системы
  • Легкий
  • Предлагает язык программирования , полный по Тьюрингу (аналогичный SCons )
  • Поддержка стандартных целей: настройка, сборка, очистка, удаление, установка и удаление
  • Параллельные сборки
  • Цветной вывод и отображение полосы прогресса
  • Скрипты — это модули Python.
  • Интерфейс XML-скрипта и специальный, простой для анализа режим «вывода IDE» для упрощения взаимодействия с интегрированными средами разработки
  • Модульная схема конфигурации с настраиваемым анализом командной строки
  • Режим демона для фоновой перекомпиляции
  • Интеллектуальный поиск исходных файлов ( подобно glob() ) для упрощения обслуживания скриптов
  • Поддержка глобального кэша объектов для избежания ненужных перекомпиляций
  • Поддержка модульных тестов, запускаемых в программах в конце сборки

Waf поддерживает:

  • Препроцессор C / C++ для вычисления зависимостей
  • Fortran поддерживается с помощью автоматического определения зависимостей модулей.
  • Поддержка OCaml и гибридных программ, а также программ GNOME
  • Поддержка языка программирования D (поддерживаются как gdc, так и dmd)
  • Поддержка проектов C# , Java , Python
  • Предоставляет различные инструменты для обработки DocBook , man-страниц , intltool/msgfmt

Waf написан на Python . Вместо того, чтобы быть установленным в качестве необходимого компонента системного программного обеспечения, как в системах сборки, таких как GNU make , он распространяется как скрипт, включающий встроенный архивный файл , предназначенный для запуска для распаковки исходных кодов Waf в исходном дереве проекта.

Лицензия

Исходный код Waf выпускается на условиях New BSD License . Однако намерение Надя состоит в том, чтобы Waf был включен как часть отдельного программного проекта, а не установлен как общесистемная система сборки. С этой целью документация, которая поставляется как часть выпуска Waf, выпускается под лицензией CC-BY-NC-ND , которая запрещает как модификацию, так и коммерческое распространение: это изменение было сделано для того, чтобы помешать проекту Debian включить Waf как общесистемный программный пакет. [4] Хотя изначально Debian просто воздерживался от включения документации, прямой запрос Надя заставил Debian удалить Waf и не рекомендовать его использование в качестве системы сборки. [5]

Разработчик Debian Ян Джексон высказал мнение, что использование Waf, распространяемого в системе сборки программного обеспечения на условиях GNU General Public License ( GNU GPL), будет нарушением условий этой лицензии, поскольку скрипт распаковки создает зашифрованную копию своего оригинального исходного кода, а не «предпочтительную форму для модификации», как того требует формулировка GPL для систем сборки. [6]

Смотрите также

Ссылки

  1. ^ "Waf". Резюме анализа . Ohloh . Получено 2010-12-19 .
  2. ^ Ридделл, Джонатан (11 сентября 2005 г.). «KDE переходит на систему сборки bksys/SCons». KDE Dot News . Получено 9 мая 2012 г.
  3. ^ Унрау, Трой (22 февраля 2007 г.). «Дорога к KDE 4: CMake, новая система сборки для KDE». KDE Dot News . Получено 9 мая 2012 г.
  4. ^ Надь, Томас (2 октября 2009 г.), «Конфигурационная среда в пользовательских целях», пользователи Waf (список рассылки).
  5. ^ Фалавинья, Лука (27 февраля 2010 г.), «Намерение удалить waf из Debian», Debian devel (список рассылки), Debian.
  6. ^ Джексон, Ян (7 февраля 2012 г.), «Не содержит исходного кода для двоичного кода waf», Debian devel (список рассылки), Debian.
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=Waf_(build_system)&oldid=1177964055"