diff --git a/CHANGES.txt b/CHANGES.txt index 23499c9f8..b6db8af54 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,5 +1,6 @@ Changelog for Shake (* = breaking change) + #810, don't hash files in &%> if you don't have to 0.19.5, released 2021-07-04 #807, fix space leak in Database module #796, fix a bug with newCache dependencies diff --git a/src/Development/Shake/Internal/Rules/Files.hs b/src/Development/Shake/Internal/Rules/Files.hs index a490578d8..9e12fd256 100644 --- a/src/Development/Shake/Internal/Rules/Files.hs +++ b/src/Development/Shake/Internal/Rules/Files.hs @@ -119,7 +119,9 @@ ruleRun opts rebuildFlags k o@(fmap getEx -> old :: Maybe Result) mode = do case v of Just v -> case filesEqualValue opts old v of NotEqual -> rebuild - EqualCheap -> pure $ RunResult ChangedNothing (fromJust o) v + -- See #810, important we pass old (which can be cheaply evaluated) + -- and not v, which might have some lazily-evaluated file hashes in + EqualCheap -> pure $ RunResult ChangedNothing (fromJust o) old EqualExpensive -> pure $ RunResult ChangedStore (runBuilder $ putEx $ Result ver v) v Nothing -> rebuild _ -> rebuild