2012-01-14 24 views
6

Actualmente, nuestras instrucciones de instalación son:¿Debería distribuirse un script "configure" si configure.ac está disponible?

autoreconf -fi 
./configure 
... 

El paso autoreconf genera el archivo de configureconfigure.ac y Makefile.in de Makefile.in. Si una de las dependencias (por ejemplo, pkg-config) no está instalada, ambos configure y autoreconf fallan, aunque este último imprime un mensaje de error críptico.

Al liberar tarballs de origen, ¿debe proporcionarse el script configure en el paquete o no? ¿Qué otros archivos deben incluirse si debe distribuirse? También se crearon los directorios build-aux y autom4te.cache y los archivos aclocal.m4.

+2

En un repositorio de SCM, nada autogenerado debe estar presente (incluida la configuración); un tarball debe contener el estado después de autoreconf -fi/autogen.sh/bootstrap (o simplemente use 'make dist'). –

+0

@ jørgensen Haga que una respuesta, no me di cuenta completamente de que 'make dist' es la clave aquí – Lekensteyn

+0

Soy curioso también * why * es bueno distribuir el script de configuración. Para mí, parece igual de fácil (y más limpio) ejecutar 'autogen.sh'. –

Respuesta

6

En un repositorio de SCM, no debe haber nada generado automáticamente (incluida la configuración, pero las digresiones de los desarrolladores aquí). Un tarball debe contener el estado después de autoreconf -fi y/o autogen.sh (o el nombre que elija para él). En tercer lugar, también puede usar make dist, aunque requiere que todos los archivos que aparecerán en el archivo tar estén también enumerados en los Makefiles.

+1

Simplemente se equivoca al respecto, el usuario final no debería necesitar tener autotools instaladas para construir su software. – MoDJ

+1

@MoDJ Solo una nota: con esta solución, el usuario final no necesita tener autotools instaladas (pero los desarrolladores sí). –

3

La secuencia de comandos de configuración debe ser creada por el responsable y distribuida en el archivo tar. Los usuarios finales nunca deben tener que tocarlo, y es una buena idea asegurarse de esto a través del AM_MAINTAINER_MODE si está utilizando automake. De lo contrario, asegúrese de que Makefile.in no vuelva a generar configure cuando se ejecuta para usuarios finales.

Deje automake generar una distribución para usted si quiere saber qué más pertenece allí. El directorio auxiliar build-aux y aclocal.m4 do, automat4e.cache no.

+0

Ah, acabo de echar un vistazo en el repositorio de PHP y parece que los archivos comprimidos que contienen la fuente de git no se deben usar para la distribución. Si lanzo un archivo tar que contiene un script 'configure' (como las descargas de PHP), ¿necesito usar' make dist'? – Lekensteyn

+3

AM_MAINTAINER_MODE siempre ha sido una mala idea. Su autor estuvo de acuerdo con eso hace años. Ahora se considera (en su mayoría) obsoleto, y se habla de eliminarlo de automake. No lo uses. –

+0

@Lekensteyn: 'make dist' funciona espléndidamente para hacer un tarball de distribución, después de todo ese es su trabajo. – thiton

4

Sus instrucciones de instalación están horriblemente rotas. El usuario no debería necesitar tener la cadena de autotool instalada para construir su software. Debe distribuir el script de configuración en su tarball. Tenga en cuenta que no debe incluir el script de configuración en su sistema de control de versiones. (No debe usar su sistema de control de versiones como un sistema de distribución.)

+0

Gracias por responder, ahora sé que se debe usar 'make dist' (funciona perfecto para generar el archivo' configure' y tal). – Lekensteyn

+2

@Lekensteyn - En realidad, siempre debe usar 'make distcheck' –

+0

. Es bueno saber que autotools tiene muchas opciones, pero solo tiene que saberlo ya que la documentación no es concisa. http://www.gnu.org/software/automake/manual/html_node/Preparing-Distributions.html – Lekensteyn

Cuestiones relacionadas