Skip to content
  • Chris Lamb's avatar
    Ensure cache checksums are deterministic · f098adac
    Chris Lamb authored and Akira TAGOH's avatar Akira TAGOH committed
    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/
    f098adac