Whilst working on the Reproducible Builds[0] effort, we noticed that fontconfig generates unreproducible cache files. This is due to fc-cache uses the modification timestamps of each directory in the "checksum" and "checksum_nano" members of the _FcCache struct. This is so that it can identify which cache files are valid and/or require regeneration. This patch changes the behaviour of the checksum calculations to prefer the value of the SOURCE_DATE_EPOCH[1] environment variable over the directory's own mtime. This variable can then be exported by build systems to ensure reproducible output. If SOURCE_DATE_EPOCH is not set or is newer than the mtime of the directory, the existing behaviour is unchanged. This work was sponsored by Tails[2]. [0] https://reproducible-builds.org/ [1] https://reproducible-builds.org/specs/source-date-epoch/ [2] https://tails.boum.org/ |
||
---|---|---|
.. | ||
Makefile.am | ||
check-missing-doc | ||
confdir.sgml.in | ||
edit-sgml.c | ||
fcatomic.fncs | ||
fcblanks.fncs | ||
fccache.fncs | ||
fccharset.fncs | ||
fcconfig.fncs | ||
fcconstant.fncs | ||
fcdircache.fncs | ||
fcfile.fncs | ||
fcfontset.fncs | ||
fcformat.fncs | ||
fcfreetype.fncs | ||
fcinit.fncs | ||
fclangset.fncs | ||
fcmatrix.fncs | ||
fcobjectset.fncs | ||
fcobjecttype.fncs | ||
fcpattern.fncs | ||
fcrange.fncs | ||
fcstring.fncs | ||
fcstrset.fncs | ||
fcvalue.fncs | ||
fcweight.fncs | ||
fontconfig-devel.sgml | ||
fontconfig-user.sgml | ||
func.sgml | ||
version.sgml.in |