2016-03-28 5 views
0

Ich habe ein Paket, das Autotools für Build/Install/etc verwendet. Es ist ein Python-Modul in C++ geschrieben. (Dies ist nicht wichtig, außer zu wissen, dass die Python-Skripte, die ich installieren muss, nicht Teil dessen sind, was gebaut wird, dh sie sind kein xxxxx_SOURCES Primärer.) Dieses Modul wird nur für einige "Komponententests" für einen Treiber verwendet das unser Team in einer HW-Lösung verteilt. Aus verschiedenen Gründen muss ich die Python-Unit-Tests mit dem System "installieren".benutzerdefinierte Installation hook und rpmbuild

Da diese Python-Skripts nicht Teil des Moduls sind, verwalte ich die Installation separat im Makefile. Hier ist, was ich in meinem 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 

Dies funktioniert gut, außer während rpmbuild für das Modul. Die install-exec-hook Regel wird nicht korrekt geschrieben, um das Verzeichnis zu erstellen, in dem der RPM-Prozess es umleitet. Das heißt, wenn mkdir - $(prefix)/... ausgeführt wird, versucht das Skript buchstäblich, das Verzeichnis zu erstellen: /opt/oursw/.... Wie sollte diese Regel umgeschrieben werden, damit rpmbuild sie an der gleichen Stelle wie die Installation für das Modul platziert?

Antwort

0

Sie möchten allen diesen Verzeichnissen $(DESTDIR) als Präfix hinzufügen. Das ist standard for autotools installs.

Nebenbei möchten Sie vielleicht auch auf das Suffix _SCRIPTS schauen, das "make install" erlaubt, Ihre Skripte für Sie auf die "offizielle" Weise zu kopieren, die Notwendigkeit für diesen Hack an erster Stelle entfernend.

+0

Vielen Dank. Am Ende hatte ich genau das gemacht, aber als Experiment. Der Prozess, den ich nutze, um meine Präsenz in diesem Team zu erreichen, setzt DESTDIR beim Aufruf von 'make install'. Ich wollte wirklich meine eigene Frage nicht beantworten und ich war mir nicht sicher, ob ich das richtig mache. –