AutoSuma (indistintamente summa con una o dos m) es una extensión a las Autotools para instrumentar los conceptos de Sumapack.
Permite la instalación de paquetes desde las fuentes desde sistemas con autoconf/automake, en forma congruente con el sistema de paquetería de cada sistema. Así facilita la tarea del usuario y/o desarrollador. Genera en cualquier sistema paquetes deb, txz, rpm, ebuild, etc..
Los paquetes fuente, originales, son fáciles de usar con Sumapack, y la inexistencia de Sumapack en una computadora que instala un paquete preparado para Sumapack no bloquea las funciones esenciales.
Se proveen macros m4 genéricos y específicos para cada paquete. Con los mismos se puede instruir al configure.ac de un paquete fuente, para que averigüe si los paquetes requeridos para su compilación están instalados. Esta información es volcada a un archivo "lacks". De allí puede ser tomada por un script que los instala. Este script puede ser ejectuado desde un objetivo "prepare" del Makefile.am En particular los archivos que portan información específica del paquete en cada tipo: .spec (de los paquetes rpm), .lsm (de la base de paquetes de GNU/Linux), control (de Debian), .ebuild (de Gentoo) se generan desde un archivo común.
Autogenera las listas de archivos y las dependencias con la información del proyecto fuente, hasta donde es posible. Se debe trabajar con un rosetta.dat específico para esto. Así se facilita la generación de binarios en cada sistema. Puede funcionar con sistemas de cross-tools (compilación en una computadora, de binarios para otra, con diferente arquitectura) y con jaulas de compilación específicas. Es útil para pruebas y desarrollo. Eventualmente para hacer las mismas distros con diferentes sistemas de paquetería, funcionando ortogonalmente. Así ayuda a los fabricantes de distros y repositorios. Que estos paquetes sean usables en otros sistemas ya no depende de estas herramientas, sino de las versiones de librerías y dependencias reales. Genera los paquetes desde cada fuente; la idea es que el papel de un sistema externo que controle los make de cada proyecto fuente sea mínimo. En todo caso se generan los archivos rules, y partes del spec y del ebuild.
Hoja de acciones, comandos y resultados: http://www.sumapack.org/sumapack.svg en formato png:
rosetta ademas de la linea de comando lee ./lacks como fuente para tomar sus datos. es generado al hacer ./configure
llama a sp e instala todo lo que lacks le indica
TEST_PACKS([proyecto1 proyecto2 ])
macro para añadir al configure.ac de un proyecto para testear, e instalar automaticamente las dependencias junto a otros macros que dan datos para cada paquete, y leer variabeles importantes
genera un archivo ./lacks con todos los paquetes necesarios no isntalados, que es leido por rosetta y otro ./needs para referencia de todos los paquetes necesarios
genera changelog del svn e info para spec y demas
scripts que proveen info del sistema
para incluir en makefile.am que generan para cada paqute fuente binarios
todas las makefiles en orden con la filosofia del las autotools
producen binarios para una arquitectura y sistema de acuerdo al nombre canonico "cpu-manufacturer-kernel-operating_system" vigente, uno puede proveerle uno o lo deduce del sistema. Manufacturer es la distro y su version, Las distros en funcion de sus "repositorios". Diferentes repositorios son diferentes distros.
Esto funciona en cualquier sistema, aunque si el sistema donde se genera no es el adecuado, puede haber problemas, no estamos en condiciones ahora de predecir si habra errores o no. Lo ideal es producir en el mismo. (librerias, crosscompiling, etc)
genera todos los formatos: make rpm, deb, txz, tbz, tgz
llama a sumapackbootstrap y genera un paquete bs.tar.gz, que al abrirlo contiene ejecutables autoportados que instalan lo necesario y a sumapack
produce meta datos para rpm.spec .ebuild, no-rules etc a partir de $PACKAGE.summa
permiten identificar si esta instalado el paquete, setean variables necesario para usarlo y generan lacks y needs
hay que generar una base universal de estos, se puede hacer a mano o automaticamente de otros repos.
$PACKAGE.summa
macros .m4
entrada en rosetta.dat
En cuanto al proceso de creación y distribución de software Sumapack plantea incorporar la maxima cantidad posible de informacion extra necesaria hoy aportada por los empaquetadores en los paquetes originales mediante un formato comun, archivo: paquete.summa integrado en el trabajo del configure.ac y los makefiles.am de las autotools.
De tal forma es posible con las makefiles originales generar paquetes binarios de todo tipo y color.
Sumpack genera un archivo en Bash para realizar un proceso de bootstrap que instala Sumapack. Baja las dependencias que Sumapack necesita y finalmente al propio Sumapack. Funciona incluso usando un directorio con los paquetes a usar en un medio portátil como un dvd, para poder instalar el software sin disponer de Internet. Este proceso puede generalizarse para hacer paquetes autoinstalables en cualquier distro.