Diferencias entre las revisiones 5 y 7 (abarca 2 versiones)
Versión 5 con fecha 2011-06-14 17:57:45
Tamaño: 2190
Comentario:
Versión 7 con fecha 2011-06-14 18:40:22
Tamaño: 7875
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 13: Línea 13:

/0301 Introducción
copiar http://webs.ono.com/gonav/librognome-html/c435.html

/0302 Estructura de un proyecto GNU
/0303 +Archivos de información de un proyecto
/0304 +Archivos de programas y configuración
copiar http://webs.ono.com/gonav/librognome-html/x466.html
Línea 46: Línea 38:
Las herramientas como automake y autoconf se encuentran disponibles en la mayoría de los proyectos open sources de hoy en día. La mayor ventaja en el uso de estas herramientas se debe a que ayudan a la portabilidad de las aplicaciones a nivel de código fuente, abstrayéndose en la medida de lo posible, de las versiones de las herramientas tradicionales disponibles en cada sistema operativo tipo Unix.

Cada vez que un usuario descarga el código fuente de una aplicación que se encuentra empaquetada, se encuentra comunmente con un script llamado configure, el cual al ejecutarse realiza todas las verificaciones y definiciones necesarias para que la aplicación se pueda compilar, y posteriormente instalar, con éxito. Por lo tanto, desde el punto de vista del usuario, el script configure es el inicio del proceso que dejará la aplicación funcional en su sistema.

Desde el punto de vista del desarrollador, el script configure constituye el resultado final de un proceso, que facilita la distribucion de su aplicación para dejarla disponible a la comunidad.

En este trabajo, se explicarán las herramientas que permiten al desarrollador facilitar su trabajo para, finalmente, dejar disponible un script de autoconfiguracion de su aplicación. Además, se explicará la estructura de directorios en un proyecto open source, la mejor manera de dividirlo y los lineamientos para enfrentar un proyecto que pueda ser mantenible a través del tiempo con distintos desarrolladores.

Este tema es relevante debido a que existen falencias en los desarrolladores a nivel nacional en el uso de este tipo de herramientas, a pesar que es un tema de interés y que han manifestado en más de una ocasión su intención de aprender. Por otra parte, está la competencia entre aprender a crear un proyecto y comenzar a programar inmediatamente, muchas veces acompañado por las barreras de entrada que impone la mantención de archivos Makefile y posteriormente el uso de macros m4.

En los proyectos en funcionamiento, la cantidad de archivos y directorios, de alguna forma u otra, contribuyen al distanciamiento de los nuevos contribuyentes al aprendizaje del uso de estas herramientas.
Línea 47: Línea 51:

El proyecto GNU ha establecido estándares para el ordenamiento de los proyectos que han sido seguido por muchos otros proyectos, no necesariamente bajo el alero de la Free Software Foundation. Entre ellos se encuentra la disposición básica de archivos. De manera simplificada se muestra un proyecto "hola-mundo" para ejemplificar el contenido básico de gran parte de los proyectos open source.
Línea 50: Línea 56:
En la figura se muestra el árbol con el contenido de un proyecto. El directorio raíz del proyecto contiene una serie de archivos de textos que permiten mantener un control del proyecto y sirve como primer canal de comunicación con el usuario.

'''Figura 1. Estructura básica de un proyecto'''

{{attachment:hola-mundo-2.png}}



==== Archivos de información obligatorios ====

NEWS,

es un registro de los cambios visibles al usuario donde los cambios más recientes se deben colocar al inicio.

README,

contiene una descripción general del paquete. También es posible indicar instrucciones especiales de instalación o recomendaciones para leer el archivo INSTALL.

AUTHORS,

contiene la lista de nombres de quienes han trabajado en la aplicación.

ChangeLog,

es un registro de todos los cambios que se han efectuado en la aplicación.

COPYING,

especifica los permisos de copia y distribución de la aplicación. Es una buena idea permitir que automake cree este archivo, siempre que se desee licenciar bajo GPL.

INSTALL,

instrucciones de instalación de la aplicación. automake provee un archivo genérico, en donde siempre es aconsejable personalizarlo de acuerdo a los detalles de cada aplicación.


==== Archivos de información opcionales ====

MAINTAINERS,

contiene la lista de nombres de los responsables del proyecto para quien desee ponerse en contacto con ellos.

HACKING,

contiene instrucciones para otros desarrolladores que quieran contribuir a la aplicación. Aquí se incluyen normas de sana convivencia como es el estilo de programación, tipos de autorización para efectuar cambios, etc.

VERSION,

indica la versión del programa.

THANKS,

contiene los créditos a las personas que han contribuido al proyecto pero que no son considerados autores.

TODO,

listado de características que se necesitan llevar a cabo. Permite llevar un orden de prioridades entre los autores y facilitar que potenciales contribuyentes sepan dónde y cómo pueden contribuir. Además, para los usuarios que han solicitado alguna característica es una retroalimentación que indica que sus peticiones están siendo consideradas.
Línea 51: Línea 114:

La estructura que se muestra, corresoponde a la visión del desarrollador. Cuando un programa se distribuye, se entregan en muchos casos archivos generados a partir de ciertos procesos. El caso mas característicos es el script configure, que es un script creado en forma automática.

configure.in,

contiene las reglas de verificación y construcción del proyecto. Es la base para crear el script configure. Las reglas se escriben en macros m4.

Makefile.am,

es el archivo que sirve como entrada al programa automake, quien se encargará de generar en forma automática el archivo Makefile, necesario para construir la aplicación. Debe existir un archivo Makefile.am por cada directorio del proyecto.

src/,

directorio donde se almacena el código fuente de la aplicación. Eventualmente pueden existir más directorios o con otro nombre, pero lo estándar para proyectos que no son bibliotecas o que no son múltiples aplicaciones es denomilarlo src.

autogen.sh,

script que permite automatizar la llamada a cada uno de los programas descritos en la sección. Este script no se muestra en la figura dado que no es obligatorio.

ARTÍCULO EN DESARROLLO

Si quieres colaborar con nosotros completando este apartado o cualquier otra parte del Curso, puedes informarte en el enlace siguiente.

>[Documentación para desarrolladores]

CONTENIDO
Los contenidos y tareas pendientes se indican a continuación:

/0305 Las herramientas autotools (redactar desde cero)
/0306 Lenguajes de programación (redactar desde cero)
/0307 Paquetes necesarios para la compilación (redactar desde cero)

La idea es explicar aquí: 1) cual es la estructura de directorios de un proyecto y describir cada uno de los ficheros, 2) herramientas autotools para general automáticamente dicha estructura, y 3) qué hay que tener instalado para compilar y ejecutar los programas.

* De autotools no explicar conceptos avanzados demasiado tan pronto, solamente lo necesario para entender los conceptos y saber cómo se construyen los ficheros configure.in y Makefile.am.

El subapartado "Las herramientas a través de un ejemplo" se quita de la documentación orignal para llevarlo a los ejemplos del final, que es dónde se van a utilizar.
http://webs.ono.com/gonav/librognome-html/x545.html

* Los subapartados sobre Migración de aplicaciones a Gnome 2 (Cambios a autogen.sh, Pkg-config, Cambios al configure.in, Cambios en Makefile.am, Requerimientos para compilar los módulos, Otros paquetes necesarios para ejecutar GNOME 2) pueden aprovecharse para completar los puntos 2) y 3).
http://webs.ono.com/gonav/librognome-html/a11648.html

Preparación del entorno

Introducción

Las herramientas como automake y autoconf se encuentran disponibles en la mayoría de los proyectos open sources de hoy en día. La mayor ventaja en el uso de estas herramientas se debe a que ayudan a la portabilidad de las aplicaciones a nivel de código fuente, abstrayéndose en la medida de lo posible, de las versiones de las herramientas tradicionales disponibles en cada sistema operativo tipo Unix.

Cada vez que un usuario descarga el código fuente de una aplicación que se encuentra empaquetada, se encuentra comunmente con un script llamado configure, el cual al ejecutarse realiza todas las verificaciones y definiciones necesarias para que la aplicación se pueda compilar, y posteriormente instalar, con éxito. Por lo tanto, desde el punto de vista del usuario, el script configure es el inicio del proceso que dejará la aplicación funcional en su sistema.

Desde el punto de vista del desarrollador, el script configure constituye el resultado final de un proceso, que facilita la distribucion de su aplicación para dejarla disponible a la comunidad.

En este trabajo, se explicarán las herramientas que permiten al desarrollador facilitar su trabajo para, finalmente, dejar disponible un script de autoconfiguracion de su aplicación. Además, se explicará la estructura de directorios en un proyecto open source, la mejor manera de dividirlo y los lineamientos para enfrentar un proyecto que pueda ser mantenible a través del tiempo con distintos desarrolladores.

Este tema es relevante debido a que existen falencias en los desarrolladores a nivel nacional en el uso de este tipo de herramientas, a pesar que es un tema de interés y que han manifestado en más de una ocasión su intención de aprender. Por otra parte, está la competencia entre aprender a crear un proyecto y comenzar a programar inmediatamente, muchas veces acompañado por las barreras de entrada que impone la mantención de archivos Makefile y posteriormente el uso de macros m4.

En los proyectos en funcionamiento, la cantidad de archivos y directorios, de alguna forma u otra, contribuyen al distanciamiento de los nuevos contribuyentes al aprendizaje del uso de estas herramientas.

Estructura de un proyecto GNU

El proyecto GNU ha establecido estándares para el ordenamiento de los proyectos que han sido seguido por muchos otros proyectos, no necesariamente bajo el alero de la Free Software Foundation. Entre ellos se encuentra la disposición básica de archivos. De manera simplificada se muestra un proyecto "hola-mundo" para ejemplificar el contenido básico de gran parte de los proyectos open source.

Archivos de información de un proyecto

En la figura se muestra el árbol con el contenido de un proyecto. El directorio raíz del proyecto contiene una serie de archivos de textos que permiten mantener un control del proyecto y sirve como primer canal de comunicación con el usuario.

Figura 1. Estructura básica de un proyecto

hola-mundo-2.png

Archivos de información obligatorios

NEWS,

es un registro de los cambios visibles al usuario donde los cambios más recientes se deben colocar al inicio.

README,

contiene una descripción general del paquete. También es posible indicar instrucciones especiales de instalación o recomendaciones para leer el archivo INSTALL.

AUTHORS,

contiene la lista de nombres de quienes han trabajado en la aplicación.

ChangeLog,

es un registro de todos los cambios que se han efectuado en la aplicación.

COPYING,

especifica los permisos de copia y distribución de la aplicación. Es una buena idea permitir que automake cree este archivo, siempre que se desee licenciar bajo GPL.

INSTALL,

instrucciones de instalación de la aplicación. automake provee un archivo genérico, en donde siempre es aconsejable personalizarlo de acuerdo a los detalles de cada aplicación.

Archivos de información opcionales

MAINTAINERS,

contiene la lista de nombres de los responsables del proyecto para quien desee ponerse en contacto con ellos.

HACKING,

contiene instrucciones para otros desarrolladores que quieran contribuir a la aplicación. Aquí se incluyen normas de sana convivencia como es el estilo de programación, tipos de autorización para efectuar cambios, etc.

VERSION,

indica la versión del programa.

THANKS,

contiene los créditos a las personas que han contribuido al proyecto pero que no son considerados autores.

TODO,

listado de características que se necesitan llevar a cabo. Permite llevar un orden de prioridades entre los autores y facilitar que potenciales contribuyentes sepan dónde y cómo pueden contribuir. Además, para los usuarios que han solicitado alguna característica es una retroalimentación que indica que sus peticiones están siendo consideradas.

Archivos de programas y configuración

La estructura que se muestra, corresoponde a la visión del desarrollador. Cuando un programa se distribuye, se entregan en muchos casos archivos generados a partir de ciertos procesos. El caso mas característicos es el script configure, que es un script creado en forma automática.

configure.in,

contiene las reglas de verificación y construcción del proyecto. Es la base para crear el script configure. Las reglas se escriben en macros m4.

Makefile.am,

es el archivo que sirve como entrada al programa automake, quien se encargará de generar en forma automática el archivo Makefile, necesario para construir la aplicación. Debe existir un archivo Makefile.am por cada directorio del proyecto.

src/,

directorio donde se almacena el código fuente de la aplicación. Eventualmente pueden existir más directorios o con otro nombre, pero lo estándar para proyectos que no son bibliotecas o que no son múltiples aplicaciones es denomilarlo src.

autogen.sh,

script que permite automatizar la llamada a cada uno de los programas descritos en la sección. Este script no se muestra en la figura dado que no es obligatorio.

Las herramientas autotools

Lenguajes de programación

Paquetes necesarios para la compilación

Documentacion/Desarrollo/PreparacionDelEntorno (última edición 2011-06-14 18:40:22 efectuada por DomingoGonzalez)