• Simon Marlow's avatar
    Use MD5 checksums for recompilation checking (fixes #1372, #1959) · 526c3af1
    Simon Marlow authored
    This is a much more robust way to do recompilation checking.  The idea
    is to create a fingerprint of the ABI of an interface, and track
    dependencies by recording the fingerprints of ABIs that a module
    depends on.  If any of those ABIs have changed, then we need to
    In bug #1372 we weren't recording dependencies on package modules,
    this patch fixes that by recording fingerprints of package modules
    that we depend on.  Within a package there is still fine-grained
    recompilation avoidance as before.
    We currently use MD5 for fingerprints, being a good compromise between
    efficiency and security.  We're not worried about attackers, but we
    are worried about accidental collisions.
    All the MD5 sums do make interface files a bit bigger, but compile
    times on the whole are about the same as before.  Recompilation
    avoidance should be a bit more accurate than in 6.8.2 due to fixing
    #1959, especially when using -O.