Зачем Tup нужен один Tupfile на каталог?
Я много читал о системе сборки Tup.
Говорят, что во многих местах tup "не поддерживает рекурсивные правила" и что вам нужно иметь один Tupfile на каталог. Пока что я не видел официального заявления или объяснения.
Правильно ли указано выше?
Если да, то почему и для какой задачи это проблематично? Пример был бы хорош.
3 ответа
Стоит отметить, что в настоящее время Tupfile может создавать файлы в другом каталоге. Вы всегда можете прочитать файлы из другого каталога, поэтому в настоящее время вы можете иметь один Tupfile для всего проекта.
Дополнительная информация здесь: https://groups.google.com/d/msg/tup-users/h7B1YzdgCag/qsOpBs4DIQ8J (немного устаревший) + https://groups.google.com/d/msg/tup-users/-w932WkPBkw/7ckmHJ9WUCEJ (новый синтаксис для использования группы в качестве входных данных)
Если вы используете новый анализатор LUA, у вас также может быть Tupfile "по умолчанию" - см. Здесь http://gittup.org/tup/lua_parser.html и проверьте информацию о Tupdefault.lua.
В некоторых ответах уже упоминалось, что ограничение действительно составляет один Tupfile на каталог, в который вы хотите выводить файлы, вместо одного Tupfile на каталог. В недавнем коммите это ограничение было ослаблено, и tup позволяет размещать выходные файлы также в подкаталогах Tupfile.
Кроме того, с вариантами можно генерировать выходные файлы в любом месте дерева сборки.
Официальное заявление можно найти в руководстве по tup: http://gittup.org/tup/manual.html
Вы должны создать файл с именем "Tupfile" в любом месте иерархии Tup, в котором вы хотите создать выходной файл на основе входных файлов. Входные файлы могут находиться где угодно в иерархии Tup, но выходные файлы должны быть записаны в том же каталоге, что и Tupfile.
(Цитата - 1-й абзац из раздела TUPFILES в руководстве)
AFAIK, это ограничение, которое связано с тем, как Tup хранит зависимости в .tup
subdir, но я не знаю деталей.