From bb47ceb356803245c6519566d5aa9603a94baa23 Mon Sep 17 00:00:00 2001
From: Duncan Coutts <duncan@haskell.org>
Date: Fri, 7 Dec 2007 13:03:09 +0000
Subject: [PATCH] Fix hscolour code so it only outputs the css once per-lib or
 exe Rather than for every module in the lib. Tidy the code up a little too.

---
 Distribution/Simple/Haddock.hs | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/Distribution/Simple/Haddock.hs b/Distribution/Simple/Haddock.hs
index 6c6a549ae0..0810511ffb 100644
--- a/Distribution/Simple/Haddock.hs
+++ b/Distribution/Simple/Haddock.hs
@@ -319,28 +319,29 @@ hscolour pkg_descr lbi suffixes (HscolourFlags stylesheet doExes verbosity) = do
 
     withLib pkg_descr () $ \lib -> when (isJust $ library pkg_descr) $ do
         let bi = libBuildInfo lib
-        let modules = exposedModules lib ++ otherModules bi
+            modules = exposedModules lib ++ otherModules bi
+	    outputDir = hscolourPref pkg_descr </> "src"
+	createDirectoryIfMissingVerbose verbosity True outputDir
+	copyCSS hscolourProg outputDir
         inFiles <- getModulePaths lbi bi modules
-        flip mapM_ (zip modules inFiles) $ \(mo, inFile) -> do
-            let outputDir = hscolourPref pkg_descr </> "src"
+        flip mapM_ (zip modules inFiles) $ \(mo, inFile) ->
             let outFile = outputDir </> replaceDot mo <.> "html"
-            createDirectoryIfMissingVerbose verbosity True outputDir
-            copyCSS hscolourProg outputDir
-            rawSystemProgram verbosity hscolourProg
+             in rawSystemProgram verbosity hscolourProg
                      ["-css", "-anchor", "-o" ++ outFile, inFile]
 
     withExe pkg_descr $ \exe -> when doExes $ do
         let bi = buildInfo exe
-        let modules = "Main" : otherModules bi
-        let outputDir = hscolourPref pkg_descr </> exeName exe </> "src"
+            modules = "Main" : otherModules bi
+            outputDir = hscolourPref pkg_descr </> exeName exe </> "src"
         createDirectoryIfMissingVerbose verbosity True outputDir
         copyCSS hscolourProg outputDir
         srcMainPath <- findFile (hsSourceDirs bi) (modulePath exe)
         inFiles <- liftM (srcMainPath :) $ getModulePaths lbi bi (otherModules bi)
-        flip mapM_ (zip modules inFiles) $ \(mo, inFile) -> do
+        flip mapM_ (zip modules inFiles) $ \(mo, inFile) ->
             let outFile = outputDir </> replaceDot mo <.> "html"
-            rawSystemProgram verbosity hscolourProg
+            in rawSystemProgram verbosity hscolourProg
                      ["-css", "-anchor", "-o" ++ outFile, inFile]
+
   where copyCSS hscolourProg dir = case stylesheet of
           Nothing | programVersion hscolourProg >= Just (Version [1,9] []) ->
                     rawSystemProgram verbosity hscolourProg
-- 
GitLab