Most of FreeBSD builds "reproducibly" (aka. with two builds producing identical binaries) but there are a few deviations from this. It would be great if these could be eliminated.

Known problem files in HEAD

/var/db/mergemaster.mtree

Contains user and host names, and the build time.

/boot/{loader, pxeboot, userboot.so, zfsloader}

Contain build time/date.

/boot/kernel/kernel

Contains time/date, user, and host. See https://reviews.freebsd.org/D4347.

Kernel modules with full paths (in non-debug sections)

Reported by the Debian GNU/kFreeBSD folks. Specifying .PATH: $(.CURDIR)/foo/bar in a Makefile expands ${.CURDIR} to an absolute path. Debian used relative paths instead: .PATH foo/bar. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=757629

tests/sys/geom/class/uzip

Filesystem image file produced by makefs(8) includes date or other metadata.

Triage required

The build option survey (from phk@, recently resurrected by bz@) demonstrated possible non-reproducibility in a number of files unrelated to the option being tested - for example:

                usr/lib/debug/boot/kernel/aacraid.ko.debug file size=429288
                usr/lib/debug/boot/kernel/aacraid.ko.debug file size=429280
                usr/lib/debug/boot/kernel/acpi_asus.ko.debug file size=72032
                usr/lib/debug/boot/kernel/acpi_asus.ko.debug file size=72024
                usr/share/man/mandoc.db file size=5998592
                usr/share/man/mandoc.db file size=5997568
                usr/share/openssl/man/mandoc.db file size=174080
                usr/share/openssl/man/mandoc.db file size=171008

Failures appear to be none, one, or both of the .db files and a variety of different kernel module .debug files.

Possible solutions

Resolved issues

/usr/include/osreldate.h -- copyright year derived from src/COPYRIGHT as of r274458 (Previously the build year was placed in the Copyright statement. This isn't even valid since the passage of time doesn't create new copyrightable work.)

/usr/sbin/amd -- still contains the build OS name and version. Build host and user removed as of r264374.

/usr/sbin/bhyve -- build date/time removed in r267949

/etc/mail/*.cf -- contains the user and host names from the build. Fixed in r277787

/usr/bin/svnlite -- weird things happening here, even after time stamps were removed in r257129. Fixed in an unknown revision.

/usr/share/doc/psd/13.rcs/paper.ascii.gz -- contains the build date. Fixed in r295702.

ReproducibleBuilds (last edited 2016-02-17 14:35:34 by EdMaste)