2016-03-28 64 views
0

我有一個包使用自動工具進行構建/安裝/等。它是用C++編寫的Python模塊。 (除了知道我必須安裝的Python腳本不是正在構建的組件的一部分外,這並不重要,也就是說,它們不是主要的xxxxx_SOURCES主體。)此模塊僅用於驅動程序的某些「單元測試」我們的團隊分佈在硬件解決方案中。由於各種原因,我需要用系統「安裝」python單元測試。自定義安裝鉤子和rpmbuild

由於這些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將它們放置在與模塊安裝位置相同的位置?

回答

0

您想要將$(DESTDIR)作爲前綴添加到所有這些目錄中。那是standard for autotools installs

另外,您也可能想看看_SCRIPTS後綴,它允許「make install」以「官方」方式複製您的腳本,從而無需首先解決此問題。

+0

謝謝。最後我做到了這一點,但作爲一個實驗。我在調用'make install'時預先約定了我在這個團隊中的存在的過程,並設置了DESTDIR。我真的不想回答自己的問題,我不確定我是否以正確的方式進行。 –