diff options
author | Sylvain Henry <sylvain@haskus.fr> | 2023-01-24 16:32:30 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2023-01-26 12:35:36 -0500 |
commit | 5640cb1d84d3cce4ce0a9e90d29b2b20d2b38c2f (patch) | |
tree | 8796014499051e1cbd7f074ba47af2aad9de0faf | |
parent | f2a0fea09a88693d876fb891ea7c8c97373c4aa6 (diff) | |
download | haskell-5640cb1d84d3cce4ce0a9e90d29b2b20d2b38c2f.tar.gz |
Hadrian: fix doc generation
Was missing dependencies on files generated by templates (e.g.
ghc.cabal)
-rw-r--r-- | hadrian/src/Rules/Documentation.hs | 14 | ||||
-rw-r--r-- | hadrian/src/Rules/Generate.hs | 7 |
2 files changed, 18 insertions, 3 deletions
diff --git a/hadrian/src/Rules/Documentation.hs b/hadrian/src/Rules/Documentation.hs index 10a2c2ce57..89c09fb701 100644 --- a/hadrian/src/Rules/Documentation.hs +++ b/hadrian/src/Rules/Documentation.hs @@ -12,7 +12,7 @@ import Hadrian.BuildPath import Hadrian.Haskell.Cabal import Hadrian.Haskell.Cabal.Type -import Rules.Generate (ghcPrimDependencies) +import Rules.Generate (ghcPrimDependencies, generateTemplateResults) import Base import Context import Expression (getContextData, interpretInContext, (?), package) @@ -68,6 +68,12 @@ pathPath "users_guide" = "docs/users_guide" pathPath "Haddock" = "utils/haddock/doc" pathPath _ = "" +-- Generate files required to build the docs (e.g. ghc.cabal) +needDocDeps :: Action () +needDocDeps = do + -- build .cabal files used by the doc engine to list package versions + generateTemplateResults + -- | Build all documentation documentationRules :: Rules () documentationRules = do @@ -188,6 +194,9 @@ buildSphinxHtml :: FilePath -> Rules () buildSphinxHtml path = do root <- buildRootRules root -/- htmlRoot -/- path -/- "index.html" %> \file -> do + + needDocDeps + let dest = takeDirectory file rstFilesDir = pathPath path rstFiles <- getDirectoryFiles rstFilesDir ["**/*.rst"] @@ -301,6 +310,9 @@ buildSphinxPdf :: FilePath -> Rules () buildSphinxPdf path = do root <- buildRootRules root -/- pdfRoot -/- path <.> "pdf" %> \file -> do + + needDocDeps + withTempDir $ \dir -> do let rstFilesDir = pathPath path rstFiles <- getDirectoryFiles rstFilesDir ["**/*.rst"] diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs index b156c9dfdf..43f722e697 100644 --- a/hadrian/src/Rules/Generate.hs +++ b/hadrian/src/Rules/Generate.hs @@ -2,7 +2,7 @@ module Rules.Generate ( isGeneratedCmmFile, compilerDependencies, generatePackageCode, generateRules, copyRules, generatedDependencies, ghcPrimDependencies, - templateRules + templateRules, generateTemplateResults ) where import qualified Data.Set as Set @@ -243,7 +243,6 @@ templateResults = , "driver/ghci/ghci-wrapper.cabal" , "ghc/ghc-bin.cabal" , "utils/iserv/iserv.cabal" - , "utils/iserv-proxy/iserv-proxy.cabal" , "utils/remote-iserv/remote-iserv.cabal" , "utils/runghc/runghc.cabal" , "libraries/ghc-boot/ghc-boot.cabal" @@ -256,6 +255,10 @@ templateResults = , "libraries/prologue.txt" ] +-- | Generate all the files we know we have a template for +generateTemplateResults :: Action () +generateTemplateResults = need templateResults + templateRules :: Rules () templateRules = do templateResults |%> \out -> do |