Over the last couple of weeks, I have been working on getting binary packages for Varnish modules built. In the current version, you need to have a built, unpacked source tree to build a module against. This is being fixed in the next version, but until then, I needed to provide this in the build environment somehow.
RPMs were surprisingly easy, since our RPM build setup is much simpler and doesn’t use mock/mach or other chroot-based tools. Just make a source RPM available and unpack + compile that.
Debian packages on the other hand, they were not easy to get going.
My first problem was to just get the Varnish source package into the
chroot. I ended up making a directory in
which is exposed as
sbuild runs. The other hard part
was getting Varnish itself built.
sbuild exposes two hooks that
could work: a
pre-build hook and a
chroot-setup hook. Neither
worked: Pre-build is called before the chroot is set up, so we can’t
build Varnish. Chroot-setup is run before the build-dependencies are
installed and it runs as the user invoking
sbuild, so it can’t
Sparc32 and similar architectures use the
linux32 tool to set the
personality before building packages. I ended up abusing this, so I
set HOME to a temporary directory where I create a
.sbuildrc which sets
$build_env_cmnd to a script which in turns unpacks the Varnish
source, builds it and then chains to
dpkg-buildpackage. Of course,
the build-dependencies for modules don’t include all the
build-dependencies for Varnish itself, so I have to extract those from
the Varnish source package too.
No source available at this point, mostly because it’s beyond ugly. I’ll see if I can get it cleaned up.