Ubuntu, CMake y Vala. La combinación perfecta.

Introducción

Siguiendo con mis progresos en Vala y Ubuntu, y tal y como he comentado en alguno de los artículos que he ido escribiendo estos últimos días, había dos asuntos que me tenían algo preocupado. Por una parte la traducción de aplicaciones y por otra la automatización del empaquetado.

En Python, lo tenía todo mas o menos preparado para poder hacer los paquetes con las mínimas preocupaciones, y sobre todo, con la idea de evitar al máximo el número de errores.

Finalmente y después de probar diferentes sistemas de construcción, me he decantado por CMake, básicamente por su sencillez. Todo a pesar, de que con Anjuta estaba realmente cómodo, pero sin embargo, se me ha hecho bastante cuesta arriba el proceso de internacionalización que con CMake es relativamente sencillo.

CMake

CMake es un sistema de construcción de código abierto y multiplataforma. Se trata de un conjunto de herramientas diseñadas para construir, testear y empaquetar softawre. CMake se utiliza para controlar el proceso de compilación de software utilizando una plataforma sencilla y unos archivos de configuración independientes del compilador. CMake, genera makefiles nativos y espacios de trabajo que permite ser utilizados en el medio de compilación que tu elijas.

Esto que la primera vez que lo lees parece tan complejo, es mucho mas sencillo de aplicar. Así, por ejemplo en el caso de Equival, la estructura de directorios y archivos es algo como lo que puedes ver en la siguiente imagen,

equival_017.png

Donde,

  • El directorio CMake contiene todas las herramientas y no es necesario modificar nunca.
  • El directorio debian contiene los archivos correspondientes al paquete debian que construiremos posteriormente.
  • El directorio po contiene las traducciones.
  • El directorio src contienen el código fuente.
  • AUTHORS hace referencia a los autores de la aplicación.
  • CMakeLists.txt. Es el archivo por defecto de todo este asunto. En el se define el nombre del proyecto, variables para el uso en otros módulos, los archivos de configuración. Igualmente indicamos los directorios que formarán parte de esta compilación.
  • COPYING es la licencia de la aplicación.
  • INSTALL explica como instalar la aplicación
  • quickbuild.sh es un ejecutable que he modificado para que haga diferentes trabajos que explicaré mas adelante.
  • README. Explica la aplicación.

Así mismo, dentro de cada uno de los directorios, nos encontraremos otro archivo CMakeLists.txt, donde indica que es lo que tenemos que hacer con cada uno de ellos. Así por ejemplo en el caso de los iconos, tenemos que indicar donde hay que instalar cada archivo.

quickbuild.sh

Este archivo está ligeramente modificado respecto a la versión original que puedes encontrar en otros archivos. Esto es así, para que me ayude tanto a la actualización de traducciones, como para el empaquetado o la subirlo a Launchpad.

De esta forma, si ejecutas ./quickbuild.sh -h, en un terminal verás una salida como la siguiente:

usage: ./quickbuild.sh options

This script helps you to translate your project.

OPTIONS:
   -b Build
   -c Clean
   -d Create debian package
   -h Show this message
   -l Create translation file for language 'language'
   -t Translate all
   -u For upload to ppa
   -v Update version

Donde,

  • -bnos permite compilar el archivo.
  • -c limpia todos los archivos generados con la compilación, empaquetado o subida a Launchapad.
  • -d nos permite crear un paquete debian.
  • -h muestra la ayuda
  • -l crea un nuevo archivo de traducción para un determinado lenguaje.
  • -t realiza labores de internacionalización de la aplicación, como puede ser extraer todas las palabras o frases susceptibles de traducir, adecuar los archivos de traducción, etc.
  • -u permite subir el archivo al repositorio. Este archivo está configurado para subir al repositorio que utilizo de test, ppa:atareao/test, es necesario que lo configures para tu propio repositorio.
  • -v actualiza la versión de tu aplicación a partir de los datos de Changelog en el directorio debian.

Crear tu propia aplicación

Mi recomendación, y es lo que estoy haciendo actualmente yo es partir de los archivos creados para Equival, es decir, del propio proyecto, como semilla para los nuevos proyectos, modificando aquellas partes necesarias, lo que permite crear tu propio proyecto en unos pocos pasos.

Para esto, lo mas sencillo es que te crees tu propia rama de Equival, ejecutando el siguiente comando en un terminal,

bzr branch lp:equival

y que modifiques todos los archivos necesarios, incluido el directorio debian para adaptarlo a tu propio proyecto.

Conclusiones

Desde luego que no ha sido nada fácil llegar hasta aquí, mas bien todo lo contrario. Han sido varias semanas de probar diferentes sistemas de construcción, y una vez decantado por CMake comprender su funcionamiento (que es bastante sencillo) y llegar a completar el script quickbuild.sh que sin lugar a dudas es el corazón de este sistema, permitiéndome con muy poco esfuerzo crear paquetes.

Lo mas importante es dedicar todo el esfuerzo al desarrollo de aplicaciones, invirtiendo el mínimo tiempo posible a la creación de paquetes, que al fin y al cabo es una labor muy tediosa y repetitiva, y que la mayor parte de las ocasiones no aporta nada.

1 comentario en “Ubuntu, CMake y Vala. La combinación perfecta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *