GNU/AutoConf | Serie programas | GNU/Linux
GNU Autoconf
Es una herramienta informática para crear shell scripts que configuren automáticamente el código fuente de un software para adaptarlo a diversos sistemas tipo UNIX. Dichos scripts creados por Autoconf son independientes de él cuando se ejecutan en el sistema en el que se quiere usar.
Junto con otras herramientas como Automake, Autoheader o Libtool, Autoconf forma el GNU build system.
Procesa los archivos configure.in o configure.ac (aunque se recomienda emplear configure.ac1). Cuando ejecuta el script de configuración también puede procesar otros archivos como Makefile.in para producir como salida un archivo Makefile.
Autoconf se concibe para intentar salvar las diferencias que existen entre distintos tipos de Unix. Por ejemplo, algunos sistemas Unix pueden tener funcionalidades que no existen o no funcionan en otros sistemas. Autoconf puede detectar ese problema y busca la forma de solucionarlo. La salida de Autoconf es un script denominado configure. Autoconf incluye la herramienta Autoheader que se usa para manejar los archivos de cabecera de C.
Un compilador de scripts de shell
Al igual que con cualquier otro lenguaje informático, para programar correctamente configurar.ac en Autoconf debe comprender qué problema intenta abordar el lenguaje y cómo lo hace.
El problema que aborda Autoconf es que el mundo es un desastre. Después de todo, está utilizando Autoconf para que su paquete se compile fácilmente en todo tipo de sistemas diferentes, algunos de los cuales son extremadamente hostiles. Autoconf mismo paga el precio de estas diferencias: configure debe ejecutarse en todos esos sistemas y, por lo tanto, configure debe limitarse a su mínimo común denominador de características.
Naturalmente, entonces podría pensar en scripts de shell; autoconf quien necesita Un conjunto de funciones de shell correctamente escritas es suficiente para facilitar la escritura de configure scripts a mano. ¡Suspiro! Desafortunadamente, incluso en 2008, donde los shells sin ningún tipo de soporte de funciones son escasos, existen trampas que se deben evitar al utilizarlos. Además, encontrar un shell Bourne que acepte funciones de shell no es trivial, aunque casi siempre hay uno en objetivos de portabilidad interesantes.
Entonces, lo que realmente se necesita es algún tipo de compilador, autoconf que tome un programa Autoconf, configurar.ac, y lo transforme en un script de shell portable, configure.
¿ Cómo autoconf realiza esta tarea?
Hay dos posibilidades obvias: crear un idioma completamente nuevo o ampliar uno existente. La primera opción es atractiva: todo tipo de optimizaciones podrían implementarse fácilmente en el compilador y muchas comprobaciones rigurosas podrían realizarse en el programa Autoconf (p. ej., rechazar cualquier construcción no portátil). Como alternativa, puede ampliar un idioma existente, como el sh idioma (Bourne shell).
Autoconf hace lo último: es una capa encima de sh. Por lo tanto, era más conveniente implementarlo autoconf como un macro expander: un programa que realiza repetidamente expansiones de macros en la entrada de texto, reemplazando llamadas de macros con cuerpos de macros y produciendo un sh script puro al final. En lugar de implementar un expander de macros Autoconf dedicado, es natural usar un lenguaje de macros de uso general existente, como M4, e implementar las extensiones como un conjunto de macros M4.
Fuentes:
Wiki de autoconf: https://es.wikipedia.org/wiki/Autoconf
Wiki de gnu build system: https://es.wikipedia.org/wiki/GNU_build_system
Sitio oficial: https://www.gnu.org/software/autoconf/
Manual autoconf: https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/index.html
https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/index.html
Autoconf index: http://gnu.ist.utl.pt/software/autoconf/manual/html_node/Autoconf-Macro-Index.html
Manual de m4 con autoconf: https://book.huihoo.com/gnu-autoconf-automake-and-libtool/autobook_283.html
Artículo sobre M4Macros: http://www.linuxfocus.org/Castellano/September1999/article111.html


Comentarios
Publicar un comentario