Reproducible Build

Debian had started to make their build reproducible: Two builds of the same source package should produce bit identical binary packages. This allows anybody to verify that nobody tempered with the build system.

More Linux and BSD distributions joined that effort. For that the project was later moved to

Build date

Many packages include timestamps into the build. For that the environment variable SOURCE_DATE_EPOCH can be set to a number of seconds since the UNIX epoch. Several tolls then use that fixed date instead of the current time. describes this in more detail.

Apache FOP

FOP is a tool to convert an XML description into PDF. It embeds the current time as /CreationDate inside any generated PDF file.

Apache FOP has declined the request to add an overwrite for CreationDate. Here’s a patch to overwrite it using said environment variable.

faketime cannot be used as otherwise the process will stall. To me this looks like FOP or Java does some kind of busy-waiting.o

I tries to add support for SOURCE_DATE_EPOCH into the source, but so far have failed. I need to find some time to continue that.

Written on April 9, 2019