xfce4-goodies, estuve usando mucho dos herramientas que me han
parecido sumamente útiles y me he quedado encantado con ellas. Una de ellas,
de la cual hablare ahora, es
cdbs, la otra es
svn-buildpackage, pero lo dejo para después.
¿Qué es CDBS?
CDBS (common build system
for Debian packages), es un sistema de construcción de paquetes basado en
Makfiles, el cual es extensible y permite modificar los valores
predeterminados que se requieran para adaptarlos a la necesidad específica.
En términos más concretos, es una serie de reglas comunes predeterminadas
y adecuadas para el fichero debian/rules con los cuales
se construiran los paquetes, como por ejemplo las de debhelper.
Un fichero debian/rules, además de ser un Makefile, tiene una
serie de objetivos los cuales tienen ordenes que son ejecutadas por
dpkg-buildpackage para construir el paquete. Usualmente las
reglas son similares para la mayoría de los paquetes, es justamente por esto
que fue creado, la reglas de CDBS se pueden modificar en caso se
requiera especificar una orden en particular para construir nuestro paquete.
Como ejemplo, un fichero debian/rules usando CDBS, es simplemente:
#!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/rules/autotools.mkMientras que un fichero similar usando el método tradicional es:
#!/usr/bin/make -f
package=foo
export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
build: build-stamp
build-stamp:
dh_testdir
./configure --prefix=/usr
$(MAKE)
touch build-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp install-stamp
$(MAKE) distclean
(continúa ...)
Como ven la diferencia es notable, aunque parezca intrigante al
principio. Obviamente el paquete debe tener cdbs como
dependencia para construir (Build-Depends:)
Lo interesante de CDBS y por lo que me ha atraido bastante es que permite tener un control y mantener el paquete fuente bastante limpio y ordenado. Por ejemplo los parches se pueden aplicar al momento de la construcción del paquete, con lo que uno sabe cuales han sido efectuados y tiene mejor control sobre éstos para posteriormente enviarlos al desarrollador principal (de ser el caso).
Ya he adaptado TORCS (nueva versión) a CDBS con muy
buenos resultados, de hecho la regla tarball.mk me sirve mucho
puesto que el desarrollador principal entrega ficheros fuente de una forma
"peculiar" los cuales anteriormente reempaquetaba en forma manual, con la
posible duda sobre su confiabilidad, puesto que estaba generando otro paquete
fuente .orig y no habia forma de comprobar si el md5sum es el
mismo que el de los fuentes originales. Ahora, solamente creo un fichero tar
conteniendo los fuentes de desarrollador principal en su formato original
(también tar comprimido con gzip) y la regla se encarga de hacer el trabajo
de desempaquetar estos al momento de construir el paquete Debian.
CDBS es usado para construir los paquetes de GNOME, Xfce y otros.
Hasta donde lo he usado he encontrado las siguientes pros y contras:
Pros:
debian/rules
svn-builpackage