প্রোহোস্টার > Блог > ইন্টারনেট খবর > একজন রেড হ্যাট কর্মচারী গোল সমাবেশ পদ্ধতি উপস্থাপন করেছেন। GNU মেক 4.2 এর প্রকাশ
একজন রেড হ্যাট কর্মচারী গোল সমাবেশ পদ্ধতি উপস্থাপন করেছেন। GNU মেক 4.2 এর প্রকাশ
Ричард Джонс (Richard WM Jones), автор libguestfs, работающий в компании Red Hat, পেশ новую сборочную утилиту গোল, нацеленную на устранение недостатков и проблем в утилите make при сохранении общей простоты и понятности сценариев. Утилита make проектировалась в 1976 году и имеет ряд концептуальных недоработок, в Goals планируется устранить эти недоработки, не меняя общей концепции.
Исходный код Goals দ্বারা বিতরণ GPLv2+ এর অধীনে লাইসেন্সপ্রাপ্ত।
Поддержка только одной тактики разрешения зависимостей — «сборочная инструкция запускается, если целевой файл отсутствует, или он старее одной из зависимостей». В Goals планируется реализовать и другие тактики, такие как проверка наличия URL, сравнение времени изменения с любым файлом, оценка сборки пакета в কোজি, сравнение контрольных сумм, запуск тестовых наборов с выборочным пропуском тестов.
При обработке сборочных целей утилита make не разделяет файлы и имена правил, и, как следствие, отсутствует проверка того, что при запуске правила действительно будет создан файл, создание которого заявлено. Например, если при наличии правила с именем «test», запускающего скрипты с тестами, случайно будет создан файл с именем «test», то тесты перестанут вызываться, так как make посчитает, что цель собрана и не требует выполнения каких-либо действий (для обхода проблемы в make можно указать директиву «.PHONY: test»). Goals явно разделяет файлы и имена правил.
Проблема с предоставлением только одного параметра для сборочных инструкций.
В Goals предлагается использовать произвольное число именованных параметров. Например, можно отдельно выделить из имени признак отладочного файла:
Проблемы взаимодействия с shell-интерпретатором. Например, необходимость контролировать экранирование пробелов в именах файлов и каталогов, трата ресурсов на запуск отдельного shell-интерпретатора при выполнении каждой команды, двойная трактовка символа «$» (используется как в shell, так и в make), учёт отступов.
Указанные проблемы решаются в Goals использованием символа «%» вместо «$» для сборочных переменных («$» остаётся только для shell), применением парсера LALR(1), требующего обрамлять пути и имена файлов кавычками и выделять фигурными скобками блоки с кодом. Весь блок команда запускается в одном экземпляре командной оболочки, а внутри блока допускается произвольное форматирование кода, без привязки к специальным пробелам.
Два режима запуска: режим make для сопоставления сборочных целей с именами файлов (например, файл «foo.o» соответствует цели «%name.o»), и режим прямого запуска компиляции:
Тактика сборки определяется специальными правилами, при помощи которых можно определять необходимость пересборки сборочной цели. Если осуществляется привязка к наличию файла, то это явно определяется через соответствующий признак («target» для имени правила и *file(«target») для проверки файла).
Разработчик может определять произвольные признаки сборочных тактик. Признак «*file» определён по умолчанию (@{…} указывает на подавление вывода, а «exit 99» сигнализирует о необходимости пересборки):
tactic *file (filename) = @{
test -f %filename || exit 99
for f in %