summaryrefslogtreecommitdiff
path: root/hadrian
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2023-01-24 16:32:30 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-01-26 12:35:36 -0500
commit5640cb1d84d3cce4ce0a9e90d29b2b20d2b38c2f (patch)
tree8796014499051e1cbd7f074ba47af2aad9de0faf /hadrian
parentf2a0fea09a88693d876fb891ea7c8c97373c4aa6 (diff)
downloadhaskell-5640cb1d84d3cce4ce0a9e90d29b2b20d2b38c2f.tar.gz
Hadrian: fix doc generation
Was missing dependencies on files generated by templates (e.g. ghc.cabal)
Diffstat (limited to 'hadrian')
-rw-r--r--hadrian/src/Rules/Documentation.hs14
-rw-r--r--hadrian/src/Rules/Generate.hs7
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