What is a Reproducable Build?

There are various definitions, but we will use common sense here: if I install a NetBSD release on a machine and come back to it in a year (or 10), it should be possible to create all of the installation again, 100% bitwise identical.

Why are Reproducable Builds a good thing?

There are various advantages, one of them is the possibility to create binary patches later (after changing small things in the source, e.g. for security fixes). They are also useful if you do not trust the official builds, or are doing local builds and want to compare parts supposed to be identical.

The Source

First prerequisite for reproducing a build is to get the same source. With cvs (as we use it now) this either happens via using a relase tag or a date for a checkout. Assuming you do a clean new checkout, examples would be:

cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot co -r netbsd-8-1-RELEASE src xsrc

or

cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot co -D "20190401 12:00UTC" src xsrc

If you are not using a fresh checkout (but updating an existing one) make sure to use the -t option to force cvs to use the commit time (instead of the update time) for updated files.

TBD - page under construction

Add a comment