We ought to be able to reproduce the Baserock 6 and Baserock 7 releases, since they were after we include the version of morph used in the metadata.

However download.baserock.org no longer contains those images, and my approach for testing reproducibility is to take an existing system artifact, boot that, use morph branch-from-image to get a workspace, and then build the system.

An alternative approach would be to take a different system, mount the disk image, work out which version of morph to use, then use branch-from-image, telling it to use the baserock directory in the chroot.

Baserock 8

Baserock 8 was built with temporary build branches, but the baserock/release/baserock-8 branch, so instead of using morph branch-from-image we can check that branch out instead.

It is old, so rather than running morph build devel-system-x86_64-generic.morph, you need to run morph build devel-system-x86_64-generic.

Baserock 9

Baserock 9 was built without temporary build branches messing things up.

morph branch-from-image baserock:baserock/morphs baserock/release/baserock-9 is still required to do the checkout.

You still need to strip the .morph of the end of the morphology name, and you may also encounter the warning about disk space availability. Setting --cachedir-min-space=0 --tempdir-min-space=0 will shut it up, but you should probably increase the disk size instead.

Baserock 10

The Baserock 10 release had artifacts that used temporary build branches, so morph checkout baserock:baserock/morphs baserock/release/baserock-10 had to be used.

Using OpenStack

By this point, it was obvious that this needed to be tested in parallel, so the remaining images were modified so they would boot in OpenStack.

This is not sufficient to make them nice images, as they do not have cloud-init. So you need to log in via the console, set up ssh keys, and resize the disk image with btrfs filesystem resize max /.

Baserock 11

By Baserock 11, morph branch-from-image learned to get more from the /baserock metadata, so it no longer needed to be told which repo/ref to start from.

Since Baserock 11 wasn't built from a temporary build branch, it is possible to use morph branch-from-image $BRANCH to get a branch you can build in.

It still needs to have the .morph stripped from the system name.

Baserock 12

As before, but branch-from-image spews a lot of output to the terminal.

Baserock 13

As before, but now it may include the .morph in the filename.

Baserock 14.20

This does not boot cleanly, since /etc/fstab hard-codes /dev/sda. Fixing the fstab and rebooting appears to work.

branch-from-image is broken. This is because the deployment config is now included in /baserock. Removing /baserock/deployment.meta makes it work again, but would break upgrades.

For this reason, this release must be built with morph checkout baserock:baserock/definitions baserock-14.20.

Baserock 14.22

The fstab is also broken for OpenStack here. branch-from-image is also broken. Checkout with morph checkout baserock:baserock/definitions baserock-14.22

Baserock 14.23

The fstab is also broken for OpenStack here. branch-from-image is also broken. Checkout with morph checkout baserock:baserock/definitions baserock-14.23

Baserock 14.24

The fstab is not broken from now onwards. branch-from-image is still broken. Checkout with morph checkout baserock:baserock/definitions baserock-14.24

Baserock 14.26

branch-from-image is still broken. Checkout with morph checkout baserock:baserock/definitions baserock-14.26

Baserock 14.28

branch-from-image is still broken. Checkout with morph checkout baserock:baserock/definitions baserock-14.28, or remove /baserock/deployment.meta.

Baserock 14.29

branch-from-image is still broken. Checkout with morph checkout baserock:baserock/definitions baserock-14.29, or remove /baserock/deployment.meta.