[commit: hadrian] master: Fix Haddock (#496) (8d6945d)

git at git.haskell.org git at git.haskell.org
Sat Feb 24 15:11:14 UTC 2018


Repository : ssh://git@git.haskell.org/hadrian

On branch  : master
Link       : http://git.haskell.org/hadrian.git/commitdiff/8d6945d970926ae77ea0d05a2b6590920eabc985

>---------------------------------------------------------------

commit 8d6945d970926ae77ea0d05a2b6590920eabc985
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date:   Sat Feb 3 01:56:47 2018 +0000

    Fix Haddock (#496)
    
    See #492.


>---------------------------------------------------------------

8d6945d970926ae77ea0d05a2b6590920eabc985
 src/Rules/Documentation.hs | 13 ++++++++-----
 src/Rules/Generate.hs      |  6 ++++++
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/Rules/Documentation.hs b/src/Rules/Documentation.hs
index 5a5698c..3043f8b 100644
--- a/src/Rules/Documentation.hs
+++ b/src/Rules/Documentation.hs
@@ -117,8 +117,11 @@ allHaddocks = do
     sequence [ pkgHaddockFile $ vanillaContext Stage1 pkg
              | pkg <- pkgs, isLibrary pkg, isHsPackage pkg ]
 
-haddockHtmlLib :: FilePath
-haddockHtmlLib = "inplace/lib/html/haddock-util.js"
+-- TODO: This is fragile and will break if @README.md@ is removed. We need to
+-- improve the story of program runtime dependencies on directories.
+-- See: https://github.com/snowleopard/hadrian/issues/492.
+haddockHtmlResourcesStamp :: FilePath
+haddockHtmlResourcesStamp = "inplace/lib/html/README.md"
 
 -- | Find the haddock files for the dependencies of the current library
 haddockDependencies :: Context -> Action [FilePath]
@@ -135,8 +138,8 @@ buildPackageDocumentation :: Context -> Rules ()
 buildPackageDocumentation context at Context {..} = when (stage == Stage1) $ do
 
     -- Js and Css files for haddock output
-    when (package == haddock) $ haddockHtmlLib %> \_ -> do
-        let dir = takeDirectory haddockHtmlLib
+    when (package == haddock) $ haddockHtmlResourcesStamp %> \_ -> do
+        let dir = takeDirectory haddockHtmlResourcesStamp
         liftIO $ removeFiles dir ["//*"]
         copyDirectory "utils/haddock/haddock-api/resources/html" dir
 
@@ -144,7 +147,7 @@ buildPackageDocumentation context at Context {..} = when (stage == Stage1) $ do
     "//" ++ pkgName package <.> "haddock" %> \file -> do
         haddocks <- haddockDependencies context
         srcs <- hsSources context
-        need $ srcs ++ haddocks ++ [haddockHtmlLib]
+        need $ srcs ++ haddocks ++ [haddockHtmlResourcesStamp]
 
         -- Build Haddock documentation
         -- TODO: pass the correct way from Rules via Context
diff --git a/src/Rules/Generate.hs b/src/Rules/Generate.hs
index 8e2b65d..8616da0 100644
--- a/src/Rules/Generate.hs
+++ b/src/Rules/Generate.hs
@@ -141,6 +141,12 @@ generatePackageCode context@(Context stage pkg _) =
         when (pkg == rts) $ "//" ++ dir -/- "cmm/AutoApply.cmm" %> \file ->
             build $ target context GenApply [] [file]
 
+-- TODO: These rules copy runtime dependencies of some executables, such as GHC
+-- itself (file @ghc-usage.txt@) or Hsc2Hs (file @template-hsc.h@). Ideally,
+-- these rules should be moved to package-specific settings, so that they can be
+-- discovered more easily. We also need to add proper support for runtime
+-- dependencies on directories, which is the case for Haddock -- for the current
+-- workaround see "Rules.Documentation.haddockHtmlResourcesStamp".
 copyRules :: Rules ()
 copyRules = do
     (inplaceLibPath -/- "ghc-usage.txt")     <~ return "driver"



More information about the ghc-commits mailing list