Automake: установить шаблон разрешения файла данных

Я знаю, что могу использовать install-data-hook, чтобы делать все, что захочу, после того, как мои файлы данных будут скопированы, и таким образом я могу настроить права доступа к файлам так, как я хочу.

Мой вопрос, тем не менее, становится перед ним.

Могу ли я каким-либо образом указать automake установить стандартную маску разрешений для любой группы данных до ее копирования?

Я имею в виду, что я хочу, чтобы полученный install выполнял свою задачу, используя правильную маску, а не позволял использовать стандартную 0644 и после этого исправлял все права доступа к файлу.

Другими словами, я хочу, чтобы задача сначала выполнялась правильно, а не исправлялась позже.

Возможно ли?

Спасибо!


person j4x    schedule 27.06.2012    source источник


Ответы (1)


Automake реализует стандарты GNU. В них указано, что файлы данных следует устанавливать с помощью команды $(INSTALL_DATA), , которая по умолчанию должна быть $(INSTALL) -m 644.

Что вы можете сделать, так это перезаписать значение INSTALL_DATA в некоторых Makefile.am, тогда все файлы данных, установленные этим Makefile.am, будут использовать это определение. Если у вас есть две группы файлов данных, которым требуются разные режимы, вам придется переместить их в два разных каталога, чтобы у них были свои собственные Makefile.

person adl    schedule 28.06.2012
comment
Как установить INSTALL_DATA в Makefile.am? Если я попробую INSTALL_DATA = $(INSTALL) -m 600, я получу ошибку 'INSTALL_DATA' is used but 'INSTALLdir' is undefined. - person Craig McQueen; 06.12.2012
comment
Вы знаете, как перезаписать INSTALL_DATA, как вы предложили? Можно ли это сделать в Makefile.am — и если да, то каков синтаксис — или это нужно сделать в другом файле? - person Craig McQueen; 20.12.2012
comment
Конечно, вы можете переопределить его из configure.ac с помощью AC_SUBST (но это глобально для всех make-файлов). Я не вижу веских причин, по которым следует запретить переопределение его из Makefile.am; Я предлагаю вам зарегистрировать это как ошибку. - person adl; 20.12.2012
comment
Я думаю, причина в том, что automake идентифицирует INSTALL_DATA как специальную переменную, аналогично таким шаблонам, как bin_PROGRAMS и sysconf_DATA. Как мы можем изменить INSTALL_DATA в Makefile.am, чтобы automake не думал, что это специальная переменная? - person Craig McQueen; 21.12.2012
comment
Сам Automake считывает определение INSTALL_DATA из некоторого предоставленного automake шаблона Makefile и имеет специальный код обработки, чтобы не интерпретировать INSTALL_DATA как специальную переменную. Однако этот код будет работать только при чтении предоставленных automake шаблонов, а не при чтении предоставленных пользователем Makefile.am (ваш случай). Вот почему я думаю, что вы должны сообщить об этом разработчикам Automake как об ошибке ([email protected]). - person adl; 24.12.2012