
#12567: `ghc --make` recompiles unchanged files when using `-fplugin` OPTIONS -------------------------------------+------------------------------------- Reporter: heisenbug | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by heisenbug): Following patch seems to fix the problem: {{{#!diff diff --git a/compiler/iface/MkIface.hs b/compiler/iface/MkIface.hs index 8115583..f6856ae 100644 --- a/compiler/iface/MkIface.hs +++ b/compiler/iface/MkIface.hs @@ -1112,6 +1112,12 @@ checkDependencies hsc_env summary iface return (RecompBecause reason) else return UpToDate + | moduleName mod `elem` pluginModNames (hsc_dflags hsc_env) + -> do traceHiDiffs $ + text "imported module " <> quotes (ppr mod) <> + text " is from package " <> quotes (ppr pkg) <> + text ", and is a plugin" + return UpToDate | otherwise -> if pkg `notElem` (map fst prev_dep_pkgs) then do traceHiDiffs $ }}} Of course I am playing fast and loose with other checks. I should e.g. make sure that it is not regularly found first. Anyway, can somebody review this, so that I know I am going in the right general direction? For example as suggested above, the plugin modules' packages could be saved into the `.hi` files. But I did not find a way to do that, as the DynFlags don't track the packages of plugins, only their `ModuleName`s. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12567#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler