stone-head.org
a subversive act of playful cleverness
Fri, 11 Feb 2005

cdbs

Recientemente, en parte debido al trabajo en los paquetes de 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.mk
Mientras 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:

  • Orden en gestión de paquete fuente
  • Simplicidad en creación y mantenimiento de fichero debian/rules
  • Excelente para gestión de parches
  • Se integra muy bien con svn-builpackage

Contras:
  • El proceso de aprendizaje inicial puede resultar desalentador, pues ...
  • No existe mucha documentación obvia, uno tiene que deducir muchas cosas
  • Requiere un conocimiento mas o menos bueno de como funcionan los ficheros Make

Es posible que cambie todos mis paquetes a este sistema, pues me resulta mas cómodo, práctico y sobre todo ordenado de trabajar.
Posted at: 11 Feb 2005 17:58 - [/debian] permanent link

categorías

tag cloud

archivos

» 2008
Apr (1)
Mar (1)
Jan (2)
» 2007
Oct (2)
Aug (2)
Jul (1)
Jun (4)
May (3)
Apr (1)
Feb (3)
Jan (3)
» 2006
Oct (2)
Sep (2)
Jul (2)
Jun (7)
May (8)
Apr (4)
Mar (11)
Feb (4)
Jan (2)
» 2005
Dec (8)
Nov (4)
Oct (8)
Sep (7)
Aug (9)
Jul (6)
Jun (3)
May (3)
Apr (6)
Mar (4)
Feb (4)
Jan (6)
» 2004
Dec (8)
Nov (9)
Oct (14)
Sep (5)
Aug (10)
May (1)
Apr (10)
Mar (14)
Feb (25)
» 2003
Dec (3)
Nov (4)
Oct (3)
Aug (2)
Jul (3)
Jun (4)
May (8)
Apr (4)
Mar (7)
Feb (5)
cat & cow
Rudy Godoy Guillén
copyright © 2003-2007
Lima, Peru
Aviso legal: El contenido de este blog es opinión del autor. Se permite la cita, reproducción y copia mientras se indique la fuente.