2012-04-28 2 views
2

Я пытаюсь использовать autogen.sh (http://buildconf.brlcad.org/) с gummi (http: //dev.midnightcoding .org/projects/gummi), поэтому, когда я вношу изменения, например, configure.ac, в мой патч также не нужно включать изменения в configure. Если загрузить последнюю версию исходного кода Gummi, удалить ро/Makefile.in.in, падение autogen.sh, и запустить его, autogen.sh успешно завершаетсяautogen.sh не производит (re) генерировать po/Makefile.in.in

Preparing the Gummi build system...please wait 

Found GNU Autoconf version 2.68 
Found GNU Automake version 1.11.1 
Found GNU Libtool version 2.4 

Automatically preparing build ... done 

The Gummi build system is now prepared. To build here, run: 
    ./configure 
    make 

но не генерирует ро/Makefile .in.in. Однако, если я запустил intltoolize, который генерирует po/Makefile.in.in. Глядя на источник autogen.sh, можно предположить, что он иногда запускается intltoolize. Это ошибка в autogen.sh? Есть ли способ, которым configure.ac (или какой-либо другой файл) должен сказать autogen для запуска intltoolize? Предполагается, что файлы, созданные intltoolize, должны быть включены во все дистрибутивы?

+0

В общем, лучший способ избежать патчей, которые включают в себя изменения в сгенерированные файлы, такие как configure, - это * не * держать их в управлении версиями. –

ответ

4

Да, autogen.sh должен запускать intltoolize, если пакет использует intltool. Если это не так, это ошибка.

Кстати, хотя этот скрипт вы используете сами вызовы «autogen.sh», на самом деле это не единственный и не только autogen.sh. Это просто общее имя для сценария начальной загрузки. Я предпочитаю просто писать свои собственные, специфичные для каждого проекта. Это может быть так просто, как это:

#!/bin/bash 
autoreconf --force --install || exit 1 
intltoolize --force || exit 1 

Однако, если у вас есть фантазии autogen.sh, который определяет, будет ли работать intltoolize, то он, вероятно, определяет, есть ли вызов IT_PROG_INTLTOOL в configure.ac. Я видел, как это происходит, но я не думаю, что это так. Я смотрю последнюю версию Sourceforge here, и я не могу найти строку «intltool» в любом месте. Я бы сказал, что ваш autogen.sh не совместим с intltool.

Короче:

  • каждый проект должен включать в свой autogen.sh. (Если только команда, необходимая для подготовки системы сборки, является autoreconf.) Gummi этого не делает, так что это ошибка.
  • нет такой вещи, как универсальный autogen.sh. Вы можете взять существующую и скопировать или адаптировать ее, но полностью зависит от исходного пакета, какие шаги необходимо предпринять.