【问题标题】:Automake: set data file permission patternAutomake:设置数据文件权限模式
【发布时间】:2012-06-27 18:59:16
【问题描述】:

我知道我可以在复制数据文件后使用install-data-hook 做任何我想做的事情,这样我就可以按照我想要的方式调整文件权限。

不过,我的问题在它之前。

我有什么办法可以告诉automake 为任何数据组设置标准权限掩码被复制之前?

我的意思是,我希望生成的 install 使用正确的掩码完成其任务,而不是让它使用标准的 0644 并在它更正所有文件权限之后。

换句话说,我希望任务一开始就完成,而不必稍后再修复。

有可能吗?

谢谢!

【问题讨论】:

    标签: build permissions installation gnu automake


    【解决方案1】:

    Automake 实现了GNU Standards。这些声明应使用命令$(INSTALL_DATA)which should default to $(INSTALL) -m 644 安装数据文件。

    您可以做的是在某些Makefile.am 中覆盖INSTALL_DATA 的值,然后此Makefile.am 安装的所有 数据文件将使用该定义。如果您有两组需要不同模式的数据文件,则必须将它们移动到两个不同的目录中,以便它们拥有自己的Makefile

    【讨论】:

    • 如何在Makefile.am 中设置INSTALL_DATA?如果我尝试INSTALL_DATA = $(INSTALL) -m 600,则会收到错误'INSTALL_DATA' is used but 'INSTALLdir' is undefined
    • 你知道如何按照你的建议覆盖INSTALL_DATA吗?可以在Makefile.am 中完成吗?如果可以,语法是什么?还是必须在另一个文件中完成?
    • 您当然可以使用AC_SUBSTconfigure.ac 覆盖它(但这对所有makefile 都是全局的)。我看不出有什么强烈的理由禁止从Makefile.am 覆盖它;我建议您将此作为错误提交。
    • 我认为原因是automake将INSTALL_DATA识别为"special" variable,类似于bin_PROGRAMSsysconf_DATA等模式。我们如何在 Makefile.am 中更改 INSTALL_DATA 而不让 automake 认为它是一个“特殊”变量?
    • Automake 本身正在从一些 automake 提供的 Makefile 模板中读取 INSTALL_DATA 的定义,并且它具有特定的处理代码来INSTALL_DATA 解释为特殊变量。但是,此代码仅在阅读 automake 提供的模板时才有效,而在阅读用户提供的 Makefile.am(您的情况)时无效。这就是为什么我认为您应该将其作为错误报告给 Automake 开发人员 (bug-automake@gnu.org)。
    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 2014-11-16
    • 2014-09-28
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2013-12-22
    • 2023-03-28
    相关资源
    最近更新 更多