自定义安装挂钩和 rpmbuild
custom install hook and rpmbuild
我有一个为 build/install/etc 使用 autotools 的包。它是一个用 C++ 编写的 Python 模块。 (这并不重要,只是要知道我必须安装的 python 脚本不是正在构建的脚本的一部分,即它们不是 xxxxx_SOURCES
主脚本。)该模块仅用于一些 "unit tests" 用于我们团队在硬件解决方案中分发的驱动程序。由于各种原因,我需要 "install" 对系统进行 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 将它们放在与模块安装相同的位置?
您想添加 $(DESTDIR)
作为所有这些目录的前缀。那是 standard for autotools installs.
顺便说一句,您可能还想查看 _SCRIPTS
后缀,它允许“make install
”以 "official" 方式为您复制脚本,删除首先需要这个技巧。
我有一个为 build/install/etc 使用 autotools 的包。它是一个用 C++ 编写的 Python 模块。 (这并不重要,只是要知道我必须安装的 python 脚本不是正在构建的脚本的一部分,即它们不是 xxxxx_SOURCES
主脚本。)该模块仅用于一些 "unit tests" 用于我们团队在硬件解决方案中分发的驱动程序。由于各种原因,我需要 "install" 对系统进行 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 将它们放在与模块安装相同的位置?
您想添加 $(DESTDIR)
作为所有这些目录的前缀。那是 standard for autotools installs.
顺便说一句,您可能还想查看 _SCRIPTS
后缀,它允许“make install
”以 "official" 方式为您复制脚本,删除首先需要这个技巧。