自定义安装钩子和rpmbuild

时间:2016-03-28 17:52:17

标签: makefile rpm autotools rpmbuild

我有一个使用autotools进行构建/安装/等的包。它是一个用C ++编写的Python模块。 (除非知道我必须安装的python脚本不是正在构建的部分,即它们不是xxxxx_SOURCES主要部分,否则这并不重要。)该模块仅用于某些单元测试"对于我们的团队在硬件解决方案中分发的驱动程序。出于各种原因,我需要安装" python单元用系统测试。

由于这些python脚本不是模块的一部分,因此我在Makefile中单独管理安装。这是我Makefile.am中的内容:

EXTRA_DIST = setupenv.sh bootstrap tests

dist-hook:
    rm -rf $$(find $(distdir)/tests -name \*.swp -o -name \*.pyc)


install-exec-hook:
    mkdir -p $(prefix)/unit_tests/unittest2
    for f in tests/*.py; do \
        cp $$f $(prefix)/unit_tests; \
    done

    for f in tests/unittest2/*.py; do \
        cp $$f $(prefix)/unit_tests/unittest2; \
    done

uninstall-hook:
    rm -r $(prefix)/unit_tests

除了模块的rpmbuild期间,这项工作正常。 install-exec-hook规则未正确写入以生成rpm进程重定向的目录。也就是说,当执行mkdir - $(prefix)/...时,脚本会逐字地尝试创建目录: / opt / oursw /...。该规则应该如何重写,以便rpmbuild将它们放在与模块安装相同的位置?

1 个答案:

答案 0 :(得分:0)

您希望将$(DESTDIR)添加为所有这些目录的前缀。那是standard for autotools installs

顺便说一下,你也可以查看_SCRIPTS后缀,它允许“make install”以“官方”方式为你复制你的脚本,从而消除了对这个黑客的需求首先。