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:
- deb http://dalibo.dachary.org/packaging-farm/lenny/postgresql-9.1/gnulinux/debian/i386/lenny/src/ ./
- deb-src http://dalibo.dachary.org/packaging-farm/lenny/postgresql-9.1/gnulinux/debian/i386/lenny/src/ ./
- deb http://dalibo.dachary.org/packaging-farm/lenny/postgresql-9.1/gnulinux/debian/x86_64/lenny/src/ ./
- deb-src http://dalibo.dachary.org/packaging-farm/lenny/postgresql-9.1/gnulinux/debian/x86_64/lenny/src/ ./
- deb http://dalibo.dachary.org/packaging-farm/squeeze/postgresql-9.1/gnulinux/debian/i386/squeeze/src/ ./
- deb-src http://dalibo.dachary.org/packaging-farm/squeeze/postgresql-9.1/gnulinux/debian/i386/squeeze/src/ ./
- deb http://dalibo.dachary.org/packaging-farm/squeeze/postgresql-9.1/gnulinux/debian/x86_64/squeeze/src/ ./
- deb-src http://dalibo.dachary.org/packaging-farm/squeeze/postgresql-9.1/gnulinux/debian/x86_64/squeeze/src/ ./
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:
- deb http://dalibo.dachary.org/packaging-farm/lenny/dalibo/gnulinux/debian lenny main
- deb-src http://dalibo.dachary.org/packaging-farm/lenny/dalibo/gnulinux/debian lenny main
- deb http://dalibo.dachary.org/packaging-farm/squeeze/dalibo/gnulinux/debian squeeze main
- deb-src http://dalibo.dachary.org/packaging-farm/squeeze/dalibo/gnulinux/debian squeeze main