2016-03-28 32 views
0

Oluşturma/yükleme/etc için autotools kullanan bir paketim var. C++ ile yazılmış bir Python modülüdür. (Kurmak zorunda olduğum python betiklerinin, neyin yapıldığının bir parçası olmadığını, yani bir xxxxx_SOURCES birincil olmadıklarını bilmek dışında bu önemli değildir.) Bu modül yalnızca bir sürücü için bazı "birim testleri" için kullanılır. Ekibimizin bir HW çözümünde dağıtması. Çeşitli nedenlerle, python birim testlerini sisteme "yüklemem" gerekiyor.özel yükleme kancası ve rpmbuild

Bu python komut dosyaları modülün bir parçası olmadığından, yüklemeyi Makefile'de ayrı olarak yönetiyorum. İşte benim Makefile.am yanı da bu: Bu modül için rpmbuild haricinde gayet güzel çalışıyor

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 

. Rpm işleminin onu yönlendirdiği dizini yapmak için install-exec-hook kuralı doğru şekilde yazılmamıştır. Yani, mkdir - $(prefix)/... yürütüldüğünde, komut dosyası tam anlamıyla dir: /opt/oursw/.... Bu kural yeniden yazılmalı, böylece rpmbuild onları modülün kurulumuyla aynı yere koyar?

cevap

0

$(DESTDIR) tüm bu dizinlere önek olarak eklemek istersiniz. Bu standard for autotools installs.

bir kenara olarak

, ayrıca ilk etapta bu hack ihtiyacını ortadan kaldırarak, sizin için "resmi" bir şekilde komut dosyalarını kopyalamak için "make install" verir _SCRIPTS soneki, bakmak isteyebilirsiniz.

+0

Teşekkür ederiz. Sonunda sadece bunu yaptım, ama bir deney olarak. Bu takımdaki varlığımdan önce, kullandığım süreç, make install komutunu çağırırken DESTDIR'i ayarlıyor. Gerçekten kendi sorumu cevaplamak istemedim ve bunu doğru şekilde yaptığımdan emin değildim. –