Ошибка упаковки сценария оболочки с помощью Autotools

Я пытаюсь написать простой пакет Autotool, который просто упаковывает один скрипт. Это может показаться излишним, но скрипт должен быть добавлен в систему сборки для встраиваемой системы, а система сборки спроектирована так, чтобы хорошо работать с Autotools.

У меня есть сценарий оболочки с именем wifi_query.sh. Чтобы упаковать это, я выполнил следующие шаги:

  1. Создал Makefile.am, который содержит следующее:

    bin_SCRIPTS = wifi_query.sh
    CLEANFILES = $(bin_SCRIPTS)
    
  2. Я также создал wifi_query.sh.in, который содержит строку exec wifi_query.sh. Я не уверен, что понимаю назначение файла .in.
  3. Затем я запускаю autoscan.
  4. Затем я запускаю:

    sed -e 's/FULL-PACKAGE-NAME/wifi_query/' \
    -e 's/VERSION/1/' \
    -e 's|BUG-REPORT-ADDRESS|/dev/null|' \
    -e '10i\
    AM_INIT_AUTOMAKE' \
    < configure.scan > configure.ac
    
  5. Выполнить touch NEWS README AUTHORS ChangeLog.

  6. Выполнить autoreconf -iv

  7. ./configure

  8. make distcheck

Когда я запускаю make distcheck, я получаю сообщение об ошибке: «* Нет правила для создания цели 'wifi_query.sh', необходимой для 'all-am'. Стоп.".

Я не понимаю эту ошибку, если бы кто-нибудь мог дать мне какие-либо указатели, это было бы хорошо. Я подозреваю, что ошибка может быть связана с wifi_query.sh.in, но у меня очень ограниченный опыт работы с автоинструментами.


person James    schedule 03.06.2013    source источник
comment
Ваш собственный ответ правильный, wifi_query.sh.in не вызывал проблемы; но это и не должно быть необходимо. Если бы это было так, его целью была бы замена кода, зависящего от платформы, на wifi_query.sh.   -  person ptomato    schedule 04.06.2013
comment
Подумайте об использовании AM_INIT_AUTOMAKE([foreign]), если у вас нет значимого контента для NEWS, README и т. д. Затем вы можете удалить пустые файлы.   -  person chirlu    schedule 06.06.2013


Ответы (1)


Кажется, мне нужно было заменить строку bin_SCRIPTS = wifi_query.sh на dist_bin_SCRIPTS = wifi_query.sh в Makefile.am. Сделав это, кажется, все работает.

person James    schedule 03.06.2013
comment
Это не правильный подход. Если вы используете dist_bin_SCRIPTS, вы не должны использовать wifi_query.sh.in; просто вызовите скрипт wifi_query.sh. Если вы используете wifi_query.sh.in (который, кажется, вам не нужен; если бы он вам нужен, вы бы поняли его назначение), вы должны добавить wifi_query.sh к AC_CONFIG_FILESconfigure.ac), чтобы сгенерировать правило для его построения из wifi_query.sh.in - person William Pursell; 04.06.2013
comment
Да, это правильно, я забыл добавить, что wifi_query.sh.in теперь тоже удален из пакета. - person James; 04.06.2013