Hadrian: configure packages with right 'htmldir'
authorAlec Theriault <alec.theriault@gmail.com>
Thu, 27 Dec 2018 21:07:51 +0000 (13:07 -0800)
committerBen Gamari <ben@smart-cactus.org>
Wed, 16 Jan 2019 19:13:03 +0000 (14:13 -0500)
This means that we can query the package DB for haddock interfaces.
Haddock uses this in its testsuite. 'cabal {v1-,v2,}-haddock' also
uses this.

Also thread through to Haddock package-specific overrides of GHC
warnings.

hadrian/src/Settings/Builders/Cabal.hs
hadrian/src/Settings/Builders/Ghc.hs
hadrian/src/Settings/Default.hs
hadrian/src/Settings/Warnings.hs

index 80b9b67..8eedcde 100644 (file)
@@ -13,6 +13,7 @@ cabalBuilderArgs :: Args
 cabalBuilderArgs = builder (Cabal Setup) ? do
     verbosity <- expr getVerbosity
     top       <- expr topDirectory
+    pkg       <- getPackage
     path      <- getContextPath
     stage     <- getStage
     mconcat [ arg "configure"
@@ -25,13 +26,24 @@ cabalBuilderArgs = builder (Cabal Setup) ? do
             , flag CrossCompiling ? pure [ "--disable-executable-stripping"
                                          , "--disable-library-stripping" ]
             , arg "--cabal-file"
-            , arg =<< pkgCabalFile <$> getPackage
+            , arg $ pkgCabalFile pkg
             , arg "--distdir"
             , arg $ top -/- path
             , arg "--ipid"
             , arg "$pkg-$version"
             , arg "--prefix"
             , arg "${pkgroot}/.."
+
+            -- NB: this is valid only because Hadrian puts the @docs@ and
+            -- @libraries@ folders in the same relative position:
+            --
+            --   * libraries in @_build/stageN/libraries@
+            --   * docs in @_build/docs/html/libraries@
+            --
+            -- This doesn't hold if we move the @docs@ folder anywhere else.
+            , arg "--htmldir"
+            , arg $ "${pkgroot}/../../docs/html/libraries/" ++ pkgName pkg
+
             , withStaged $ Ghc CompileHs
             , withStaged (GhcPkg Update)
             , withBuilderArgs (GhcPkg Update stage)
index e2cad2c..a605873 100644 (file)
@@ -83,7 +83,9 @@ findHsDependencies = builder (Ghc FindHsDependencies) ? do
             , getInputs ]
 
 haddockGhcArgs :: Args
-haddockGhcArgs = mconcat [ commonGhcArgs, getContextData hcOpts ]
+haddockGhcArgs = mconcat [ commonGhcArgs
+                         , getContextData hcOpts
+                         , ghcWarningsArgs ]
 
 -- | Common GHC command line arguments used in 'ghcBuilderArgs',
 -- 'ghcCBuilderArgs', 'ghcMBuilderArgs' and 'haddockGhcArgs'.
index 2cadc4f..e2d7644 100644 (file)
@@ -277,4 +277,5 @@ defaultBuilderArgs = mconcat
 
 -- | All 'Package'-dependent command line arguments.
 defaultPackageArgs :: Args
-defaultPackageArgs = mconcat [ packageArgs, warningArgs ]
+defaultPackageArgs = mconcat [ packageArgs
+                             , builder Ghc ? ghcWarningsArgs ]
index 5a9e831..42e7662 100644 (file)
@@ -1,4 +1,4 @@
-module Settings.Warnings (defaultGhcWarningsArgs, warningArgs) where
+module Settings.Warnings (defaultGhcWarningsArgs, ghcWarningsArgs) where
 
 import Expression
 import Oracles.Flag
@@ -18,8 +18,8 @@ defaultGhcWarningsArgs = mconcat
     , flag GccIsClang ? arg "-optc-Wno-unknown-pragmas" ]
 
 -- | Package-specific warnings-related arguments, mostly suppressing various warnings.
-warningArgs :: Args
-warningArgs = builder Ghc ? do
+ghcWarningsArgs :: Args
+ghcWarningsArgs = do
     isIntegerSimple <- (== integerSimple) <$> getIntegerPackage
     mconcat
         [ stage0 ? mconcat