As of launchpad-buildd 149, deployed to production on 2017-09-04, Launchpad’s build farm now uses LXD containers rather than chroots to build snaps. This applies both to snaps configured directly on Launchpad and those built via build.snapcraft.io. Let us know if you see any odd build failures that didn’t happen before and that aren’t reproducible using
snapcraft cleanbuild, but so far this seems to have been fairly smooth.
The background for this is that we want to support build-snaps to allow snaps to be used as build-dependencies, and that isn’t very practical when using chroots. We’ve also switched live filesystem builds to use LXD containers in the same way, in order that they can start consuming build tools as snaps.
This work involved a lot of refactoring to convert chunks of launchpad-buildd’s build logic from ad-hoc shell scripts to unit-tested Python code, so a useful side-effect should be that future changes will be easier and safer.