Fix a recompilation checking bug when a package dependency changes
authorSimon Marlow <marlowsd@gmail.com>
Wed, 17 Feb 2010 13:32:50 +0000 (13:32 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 17 Feb 2010 13:32:50 +0000 (13:32 +0000)
We weren't forcing enough recompilationg when package dependencies
changed, with the result that bumping a package version could lead to
linking failures or other problems later.

The problem/solutation are described on the wiki:

http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/RecompilationAvoidance#Packageversionchanges

compiler/iface/MkIface.lhs

index 702a744..9263bae 100644 (file)
@@ -512,7 +512,12 @@ addFingerprints hsc_env mb_old_fingerprint iface0 new_decls
    -- the export list hash doesn't depend on the fingerprints of
    -- the Names it mentions, only the Names themselves, hence putNameLiterally.
    export_hash <- computeFingerprint dflags putNameLiterally 
-                      (mi_exports iface0, orphan_hash, dep_orphan_hashes)
+                      (mi_exports iface0,
+                       orphan_hash,
+                       dep_orphan_hashes,
+                       dep_pkgs (mi_deps iface0))
+                        -- dep_pkgs: see "Package Version Changes" on
+                        -- wiki/Commentary/Compiler/RecompilationAvoidance
 
    -- put the declarations in a canonical order, sorted by OccName
    let sorted_decls = eltsFM $ listToFM $