Acabo de lanzar la primera versión de Multipackager. Se trata de un programa que simplifica la creación de paquetes para múltiples distribuciones y arquitecturas. La idea es sencilla: si tienes instalada Debian de 64 bits, es relativamente sencillo crear un paquete para Debian de 64 bits; pero hacer uno para Debian de 32 bits la cosa empieza a complicarse. Y ya no digamos para hacerlo para Ubuntu de 32 o 64 bits (aunque deriva de Debian, a veces las bibliotecas no son del todo compatibles). Y mejor no hablemos para hacer un paquete para Fedora.
La solución más rápida consiste en usar una máquina virtual con el sistema operativo deseado, pero tiene el inconveniente de que montar una máquina para cada uno es una tarea pesada y engorrosa.
Es justo aquí donde entra en juego Multipackager: aprovechando que estas distribuciones tienen herramientas que permiten generar un sistema base de manera sencilla, se me ocurrió hacer un programa que, dándole una tripla de datos («distribución, versión, arquitectura»; por ejemplo «debian, jessie, i386», o «ubuntu, utopic, amd64»), genere automáticamente una máquina virtual para ella, completamente prístina y limpia de polvo y paja, y la utilice para generar, lo más automáticamente posible, un paquete para un proyecto determinado.
El resultado es que es posible disponer de una lista de dichas triplas y, tan sólo indicando la ruta a un proyecto, Multipackager generará automáticamente cada una de ellas, instalará las dependencias necesarias para el proyecto, compilará el código en su interior, generará el paquete, lo copiará al exterior, y limpiará los datos temporales.
En estos momentos Multipackager puede trabajar con máquinas Debian y Ubuntu (Fedora está en camino), en arquitecturas de 32 y 64 bits, y puede generar paquetes binarios y de Python3. A mayores permite generar una máquina virtual con dicha tripla y lanzar una shell interactiva en su interior, por si necesitamos hacer pruebas o demás. En este caso, al salir no se borra ningún dato temporal, por lo que es posible volver a entrar en cualquier momento.
Por último, incluye una caché de distribuciones para que no sea necesario bajar el sistema base de cada vez (una tarea bastante larga).