Como crear un repositorio. Subir un paquete con Vala a tu PPA.

Este es uno de los capítulos del tutorial Como crear un repositorio PPA para distribuir tus aplicaciones. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

En los capítulos anteriores vimos como subir un paquete a tu PPA y como crear un paquete con Python, en este capítulo veremos como crear un paquete con Vala para subirlo a tu PPA.

Este será el penúltimo capítulo de este tutorial. El último, lo dedicaremos a subir un paquete deb al repositorio, en base a la sugerencia que hizo Jesús en el artículo anterior.

Si te preguntas porque le he dedicado dos capítulos del tutorial a Python y Vala, esto es porque, por un lado son los dos lenguajes de programación con los que me encuentro más cómodo cuando desarrollo aplicaciones para Ubuntu, y por otro lado, por que entiendo que que son los mas sencillos a la hora de crear una aplicación para GNOME y por ende para Ubuntu.

Si quieres aprender a crear tu paquete con Vala para subirlo a tu PPA, sigue leyendo este artículo.

Como crear un repositorio. Subir un paquete con Vala a tu PPA.

Crear un paquete con Vala para subirlo a tu PPA

Vamos a seguir la misma metodología que venimos haciendo con los capítulos anteriores del tutorial. Vamos a crear un paquete, muy, muy sencillo, que nos servirá para comprender el funcionamiento del empaquetado. Al igual que en casos anteriores, nuestro paquete solo contendrá un icono. El resto de archivos y directorios que encontrarás solo sirven para construir el paquete.

La estructura de archivos de nuestro paquete con Vala

De nuevo, tal y como hice en el capítulo anterior, he creado un repositorio en GitHub con la estructura y archivos necesarios para crear nuestro paquete con Vala.

Mi sugerencia es que utilices este repositorio como punto de partida para crear tu propio paquete. Para ello, simplemente tienes que clonar el repositorio en tu equipo ejecutando la siguiente orden,

git clone https://github.com/atareao/unicono-vala.git

Una vez que hayas clonado el repositorio, el siguiente paso es adecuar el contenido de los archivos a tus necesidades. Sin embargo, es importante que tengas en cuenta que hay algunos directorios y archivos que no es necesario que modifiques. A menos que sepas lo que estás haciendo, es recomendable que no modifiques estos archivos y directorios bajo ningún concepto. Si no estás seguro de lo que estás haciendo es muy probable que modifiques algún aspecto que haga que deje de funcionar.

La información DEBIAN

La estructura de archivos que necesitamos es exactamente la que vimos en el artículo sobre como subir un paquete a tu PPA.

Mantendremos igual los archivos source/format, changelog, compat. Eliminaremos install, aunque también es posible mantenerlo, pero con cuidado de no pisar nuestros propios archivos. Y modificaremos los siguientes,

  • rules. Debemos añadir algunas líneas al final de nuestro archivo rules. Estas líneas son las siguientes,
override_dh_builddeb:
    dh_builddeb -- -Zxz

override_dh_auto_install:
    dh_auto_install --destdir=debian/unicono-vala
  • control. Al igual que sucedía en el capítulo anterior, debemos modificar las dependencias necesarias para construir el paquete. Tenemos que modificar dos líneas. En el apartado Source,
Build-Depends: cmake (>= 2.8),
               debhelper (>= 9.0),
               dh-autoreconf,
               valac (>=0.34)

Mientras que en el apartado Package añadiremos Pre-Depends: dpkg (>= 1.15.6).

cmake

En el repositorio que has clonado, encontrarás un directorio llamado cmake. Este directorio contiene un conjunto de módulos que simplemente nos ayudarán a realizar una serie de operaciones en la construcción de nuestro paquete.

CMakeLists.txt

Dentro de cada directorio, incluido el directorio principal y salvo en los directorios cmake y debian, encontrarás un archivo con el nombre CMakeLists.txt.

El archivo CMakeLists.txt del directorio data, tiene el siguiente aspecto,

install(FILES ubuntu.svg DESTINATION share/icons/hicolor/scalable/apps)

Esto lo que nos indica es que instalará ubuntu.svg en el directorio /usr/share/icons/hicolor/scalable/apps. Sencillo, ¿no?

¿Que directorios se contemplan? Los directorios que queramos incluir deben figurar en el CMakeLists.txt del directorio principal, que comento en el siguiente apartado.

CMakeLists.txt principal

El archivo CMakeLists.txt del directorio principal es algo mas complejo, pero no mucho mas. Aquí debemos indicar algunos parámetros como,

  • versión de cmake que utilizaremos para crear nuestro paquete.
  • el directorio donde se instalará nuestro paquete. Bueno realmente indica el directorio principal. Así en el repositorio que has clonado será /usr. Si lo instaláramos en /opt/extras.ubuntu.com/unicono-vala, nuestro icono iría a /opt/extras.ubuntu.com/unicono-vala/share/icons/hicolor/scalable/apps. Esto era de obligado cumplimiento si querías que tu paquete subiera al centro de software de Ubuntu.
  • nombre del paquete
  • nombre de la versión
  • número de versión
  • comentario
  • descripción
  • autor
  • derechos de copia
  • licencia
  • página web

Además hay algunos otros parámetros que pueden configurarse o modificarse según las necesidades de cada uno. Sin embargo para nuestro propósito, con lo que he indicado hasta ahora es mas que suficiente.

Lo que si que es necesario es, al final del archivo, incluir un listado de todos los directorios que queremos que considere cmake y que a su vez contendrán un archivo CMakeLists.txt.

Así en nuestro caso, que solo contemplamos el directorio data, añadiremos la siguiente línea al final del archivo,

add_subdirectory(data)

Uninstall

Otro archivo que se encuentra en el directorio principal es cmake_uninstall.cmake.in que en principio quedará tal y como está. No es necesario modificarlo, y cuya finalidad es desinstalar nuestro paquete.

Como he indicado anteriormente, a menos que sepas lo que estás haciendo, no conviene modificarlo.

quickbuild.sh

Por último, nos queda un archivo ejecutable que sirve para construir el paquete y subirlo a tu repositorio.

Parámetros a modificar

Antes de continuar, destacar que tienes que modificar tres parámetros para que lo puedas utilizar y que todo funcione como se espera. Estos parámetros son,

  • EMAIL. Tienes que indicar tu dirección de correo electrónico.
  • SIGN. Se corresponde con el id de la clave PGP. Tal y como vimos en el artículo sobre firmar tus paquetes con PGP.
  • PPA. Modifica la PPA para que indique la tuya, aquella sobra la que tienes permisos y que tiene tu clave PGP para que puedas subir tus archivos.

Ejecutando quickbuild.sh

Este archivo ejecutable nos da una serie de opciones que nos permite desde actualizar la versión en el archivo CMakeLists.txt, traducir nuestro paquete (en el caso de que lo tengamos preparado para ello), crear el paquete debian o subirlo a tu repositorio.

Solo tienes que ejecutar el archivo, con la opción, -h y te mostrará la ayuda.

./quickbuild.sh -h

Conclusiones

Como puedes ver al igual que en el caso de Python, crear el paquete con Vala es igual de sencillo, teniendo en cuenta las herramientas que existen en el repositorio de GitHub indicado.

Ahora bien, al igual que en el caso de Python, crear un paquete de esta forma está indicado para cuando queremos hacer un paquete de una aplicación implementada en Vala. De otra forma, es mas interesante utilizar cualquier otro de los procedimientos indicado en artículos anteriores.

Como he indicado en la introducción, queda un último artículo, en el que comentaré como puedes subir paquetes deb a un repositorio personal.