2016-03-28 4 views
0

У меня есть пакет, который использует autotools для сборки/установки/etc. Это модуль Python, написанный на C++. (Это не важно, кроме как знать, что скрипты python, которые я должен установить, не являются частью того, что строится, т. Е. Они не являются базовыми xxxxx_SOURCES.) Этот модуль используется исключительно для некоторых «модульных тестов» для драйвера что наша команда распределяется в HW-решении. По разным причинам мне нужно «установить» тесты модуля 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

Спасибо. В конце концов я сделал именно это, но как эксперимент. Процесс, который я использую, предварительно назначив свое присутствие в этой команде, устанавливает DESTDIR при вызове 'make install'. Я действительно не хотел отвечать на свой вопрос, и я не был уверен, что делаю это правильно. –