Worked for a while today on http://propellor.branchable.com/todo/property_to_install_propellor/, with the goal of making propellor build a disk image that itself contains propellor.
The hard part of that turned out to be that inside the chroot it's building, /usr/local/propellor is bind mounted to the one outside the chroot. But this new property needs to populate that directory in the chroot. Simply unmounting the bind mount would break later properties, so some way to temporarily expose the underlying directory was called for.
At first, I thought
unshare -m could be used to do this, but for some
reason that does not work in a chroot. Pity. Ended up going with a
complicated dance, where the bind mount is bind mounted to a temp dir,
then unmounted to expose the underlying directory, and once it's set up,
the temp dir is re-bind-mounted back over it. Ugh.
I was able to reuse Propellor.Bootstrap to bootstrap propellor inside the chroot, which was nice.
Also nice that I'm able to work on this kind of thing at home despite it involving building chroots -- yay for satelite internet!
Today's work was sponsored by Riku Voipio.