dalibo debian packages

The dalibo Debian GNU/Linux repository was used to build an alternate repository using packaging-farm.

analyzing the repository

The repository contains postgres and davical backports for squeeze and lenny (both for i386 and x86_64).

initializing the environment

A squeeze Debian GNU/Linux virtual machine was created. packaging-farm is installed.

separate lenny and squeeze

packaging-farm farm is configured, by default, to build the same package for multiple distributions. However, the dalibo repository contains different packaging for each distribution. For instance postgresql-9.1_9.1.1-1~dlb50+1.dsc for lenny and postgresql-9.1_9.1.1-1~dlb60+1.dsc for squeeze.
The working directories of packaging-farm were configured to avoid collisions:

  • /etc/packaging-farm/squeeze/packaging-farm.conf uses the
  • /var/cache/packaging-farm/squeeze working directory and
  • /var/lib/packaging-farm/squeeze for the resulting packages
  • /etc/packaging-farm/lenny/packaging-farm.conf uses the
  • /var/cache/packaging-farm/lenny working directory and
  • /var/lib/packaging-farm/lenny for the resulting packages

Each packaging-farm command related to lenny is run as follows:

packaging-farm CONFDIR=/etc/packaging-farm/lenny postgresql-9.1

and uses the lenny environment. For squeeze it is:

packaging-farm CONFDIR=/etc/packaging-farm/squeeze postgresql-9.1

Each configuration file sets the target architectures with:

ARCHITECTURES?=x86_64 i386

getting the packages

The postgressql package is downloaded from the dalibo repository and imported into packaging-farm as follows:

cd /var/cache/packaging-farm/squeeze/sources
mkdir postgresql-9.1
cd postgresql-9.1
dget http://debian.dalibo.org/pool/main/p/postgresql-9.1/postgresql-9.1_9.1.1-1~dlb60+1.dsc
packaging-farm CONFDIR=/etc/packaging-farm/squeeze generate

The generated configuration is modified to add the squeeze-backports to the list of repositories ( in /etc/packaging-farm/squeeze/postgresql-9.1.mk )

PACKAGE=postgresql-9.1
LIBDIR ?= /usr/lib/packaging-farm
include /usr/lib/packaging-farm/Makefile

define squeeze_SOURCE_LIST_APPEND
echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >>  $$source_list
endef

and similar operations are done for lenny.

creating the packages

The following commands are run to build the postgresql packages:

packaging-farm CONFDIR=/etc/packaging-farm/squeeze postgresql-9.1
packaging-farm CONFDIR=/etc/packaging-farm/lenny postgresql-9.1

and the result are a dpkg-buildpackage and dpkg-buildsource repositories:

canonical repositories

A meta-package was defined to create a repository that could contain more than one package and more than one architecture. It is defined in the /etc/packaging-farm/squeeze/dalibo.mk file for squeeze:

ROLE = meta-package
PACKAGE=dalibo
DISTRIBUTIONS=squeeze
COMPONENT=main
CHILD_PACKAGES = postgresql-9.1

LIBDIR ?= /usr/lib/packaging-farm
include /usr/lib/packaging-farm/Makefile

And in a similar file for lenny. The packages are then collected with:

packaging-farm CONFDIR=/etc/packaging-farm/squeeze dalibo
packaging-farm CONFDIR=/etc/packaging-farm/lenny dalibo

and the result repositories (containing packages for both i386 and x86_64) can be used as follows: