Как часто я запускаю autoconf? - PullRequest
3 голосов
/ 25 июня 2009

В моей компании я сейчас работаю над созданием пакета Debian deb из сторонней библиотеки. Библиотека построена с использованием Autotools. Я никогда раньше не работал с Autotools, и мне трудно. Исходные файлы библиотеки содержат файлы configure.in и Makefile.am и каталог m4/. Я могу построить библиотеку, используя эту последовательность:

aclocal -I m4 -I /usr/share/aclocal
autoheader
libtoolize --automake
automake -a
autoconf
./configure
make

В debian/rules файле я бы хотел использовать CDBS. Я написал это:

#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk

Но это не работает. Он жалуется, что файл configure отсутствует. И это правильно, потому что класс Autotools ожидает присутствия этого файла. Но его там нет, и кто-то должен сначала позвонить autoconf и друзьям!

Почему класс Autotools CDBS не позволяет мне звонить autoconf и друзьям? Как мне обойти это?

Отступление:

Когда я использую программу, я не компилирую ее каждый раз, я компилирую ее один раз и повторно использую двоичный файл.

Когда люди устанавливают программное обеспечение, они не компилируют его самостоятельно, сопровождающий компилирует его один раз, и люди повторно используют бинарный пакет.

Когда сопровождающий компилирует пакет, он / она не создает сценарий configure каждый раз, когда компилирует, автор исходной программы создал его один раз, и сопровождающий может повторно его использовать.

Это последнее предложение верно? Потому что мне кажется, что авторы класса Autotools CDBS предполагали такую ​​вещь - они предполагают наличие configure и повторно используют его при компиляции пакета для другой архитектуры. Я прав?

С одной стороны, если можно сгенерировать configure, его нигде не должно быть - если вам это нужно, вы сгенерировали из других файлов. С другой стороны, у авторов класса Autotools CDBS должны быть некоторые причины для реализации этого способа, а не другого.

Резюме:

  • Как мне решить описанную выше проблему класса Autotools CDBS?
  • Как часто я регенерирую configure? (В целом и при сборке пакетов Debian.)

Ответы [ 4 ]

6 голосов
/ 19 июля 2009

Во-первых, ты слишком много работаешь. Вместо запуска aclocal && autoheader && etc ..., Вы можете просто запустить autoreconf. Это гарантирует, что все автоинструменты будут вызываться в правильном порядке (и это легче для пальцев и мозга). Во-вторых, после того, как вы сгенерировали скрипт configure, вы должны создать каталог сборки и запустить 'make dist', чтобы получить tarball, который будет использоваться для генерации deb. В архиве будет скрипт configure. (Еще лучше, просто используйте tarball, сгенерированный апстримом, и вообще не беспокойтесь о запуске autotools.)

1 голос
/ 25 июня 2009

Jasiu,

это правда, что скрипт configure создается автором основной ветки разработки и, как правило, не нуждается в регенерации кем-либо еще. Но иногда, когда есть проблема с исходной конфигурацией, может потребоваться запуск автоинструментов (с более новыми версиями автоинструментов или с обновленными макросами m4).

Обычно вы запускаете автоинструменты, только когда вносите изменения в configure.ac, Makefile.am, макросы m4 и т. Д.

Кстати, если autoconf достаточно новый, вы можете просто вызвать autoreconf для генерации configure. Но если с исходной конфигурацией проблем нет, просто оставьте все как есть.

0 голосов
/ 24 августа 2009

Чтобы ответить на оригинальный вопрос «Почему класс Autotools CDBS не позволяет мне вызывать autoconf и друзей? Как мне обойти это?», Я добавил следующее правило в файл debian / rules:

makebuilddir / your_package_name ::
autoreconf --install

Это правило в основном запускает команду autoreconf --install (которая сгенерирует для вас скрипт configure, если присутствуют файлы configure.ac и Makefile.am) в качестве действия предварительной настройки вашего пакета. Целевое правило задокументировано здесь: http://cdbs -doc.duckcorp.org / en / cdbs-doc.xhtml # id489203

Как сказал adl, разработчики должны иметь возможность запускать autoreconf для регенерации скрипта configure для своей разработки, и, следовательно, в SVN должны быть проверены только файлы configure.ac и Makefile.am. Однако когда исходный код передается конечным пользователям, сценарий конфигурирования должен быть предоставлен, чтобы конечные пользователи могли запускать сценарий конфигурирования без использования инструментов для его генерации.

0 голосов
/ 28 июня 2009

Обычно вы должны собирать пакеты Debian из выпусков, чтобы вы знали, что вы упаковываете - это обычно tarball package-VERSION.tar.gz. В этом случае обычно не требуется запускать автоинструменты, за исключением случая, когда config. {Sub, предположения} слишком старые и не могут работать в целевой системе.

В любом случае, вы задали много вопросов, но первый основан на проблеме:

"Но это не работает. Он жалуется что файл конфигурации отсутствует. "

, который не объясняет, что не удалось. Ваша последовательность в верхней части вопроса включает в себя запуск ./configure, поэтому его нельзя пропустить.

configure всегда присутствует, когда автоинструмент работает правильно, поэтому большинство ваших последующих вопросов довольно запутанные.

...