Сотрудник Red Hat представил сборочную систему Goals



    Сотрудник компании Red Hat Ричард Джонс, создатель библиотеки libguestfs, представил инструмент Goals, цель которого — устранить недостатки в утилите make, разработанной Стюартом Фельдманом в 1976 году и предназначенной для автоматизации преобразования файлов из одной формы в другую.

    При запуске эта программа читает Makefile с описанием проекта, интерпретирует его содержимое и в зависимости от него предпринимает нужные действия. Основу Makefile составляют правила (rules), которые описывают, каким образом можно преобразовать файл. Правила состоят из целей и зависимостей, где цель — желаемый результат, а зависимость — некие исходные данные (имя файла или имя действия), необходимые для достижения цели.

    Как объясняет портал opennet, сейчас в работе make есть несколько недостатков. Например, утилита поддерживает только одну тактику решения зависимостей. Goals позволяет реализовать несколько тактик, включая проверку наличия URL, сравнение времени изменения с любым файлом, оценку сборки пакета в Koji, сравнение контрольных сумм, запуск тестовых наборов с выборочным пропуском тестов.

    Также make не разделяет файлы и имена правил, что может привести к ошибке: если правило test, запускающее скрипты с тестами, уже есть, и при его наличии случайно будет создан файл с именем test, то тесты перестанут вызываться. Goals разделяет файлы и имена правил. Также Goals позволяет использовать сразу несколько параметров.

    «Если использование одного параметра может быть полезным, то можно использовать и два, и больше параметров», — поясняет Джонс.

    Goals решает также проблему взаимодействия с интерпретатором командной строки, или shell-интерпретатором — программой, которая принимает команды от пользователя и исполняет их. До выпуска Goals, как поясняет opennet, пользователю приходилось запускать отдельный shell-интерпретатор для каждой команды. Также существенной проблемой make была двойная трактовка символа $. В Goals вместо символа $ используется % ($ остаётся только для shell).

    Также Goals делает возможной поддержку задания произвольных имён и параметров, позволяет запускать make в разных режимах. В будущем автор планирует добавить возможность определения значений параметров по умолчанию и поддержка анонимных функций.

    Подробное описание особенностей Goals Джонс опубликовал в своём блоге.

    Комментарии 4

      +2
      en.wikipedia.org/wiki/List_of_build_automation_software вот тут длинный список желающих исправить фатальные недостатки в make.
        +2

        Если убрать оттуда генераторы скриптов и системы сборки написанные на питонах, явах и джааваскриптах, то именно систем сборки, написанных на C, там не так много.


        Тащить ещё и кучу компиляторов если вам нужно собрать программу на C — это не всем нужно.

        +2

        Goats — было бы лучшим названием. А в общем — кажется легким оверкиллом на фоне запросов по URL и т.п., хоть и приятны исправления совместимости с конкретным shell'ом. Но, учитывая, что это RedHat, могут и пропихнуть всем и во все проекты. Впрочем, не всё так плохо, можно и попробовать поиспользовать.


        С другой стороны — написан на OCaml, так что не вижу особенного выигрыша по сравнению с Meson.

          +1
          Также make не разделяет файлы и имена правил, что может привести к ошибке: если правило test, запускающее скрипты с тестами, уже есть, и при его наличии случайно будет создан файл с именем test, то тесты перестанут вызываться.
          Для этого в GNU make есть phony targets:
          .PHONY: test

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое