Skip to content
  • Niklas Hambüchen's avatar
    Fix interface hashes including time stamp of dependent files. · 677820ee
    Niklas Hambüchen authored and thoughtpolice's avatar thoughtpolice committed
    
    
    Fixes #8144.
    
    Before, the modification time of e.g. #included files (and everything
    that ends up as a UsageFile, e.g. via addDependentFile) was taken as
    input for the interface hash of a module.
    
    This lead to different hashes for identical inputs on every compilation.
    
    We now use file content hashes instead.
    
    This changes the interface file format.
    You will get "Binary.get(Usage): 50" when you try to do an incremental
    using .hi files that were created with a GHC 7.7 (only) older than this commit.
    
    To calculate the md5 hash (`Fingerprint`) of a file in constant space,
    there now is GHC.Fingerprint.getFileHash, and a fallback version
    for older GHCs that needs to load the file into memory completely
    (only used when compiling stage1 with an older GHC).
    
    Signed-off-by: default avatarAustin Seipp <aseipp@pobox.com>
    677820ee