diff --git a/.gitignore b/.gitignore index 8f1097ae8a1..e9ec3b6322f 100644 --- a/.gitignore +++ b/.gitignore @@ -68,6 +68,7 @@ register.sh # windows test artifacts cabal-testsuite/**/*.exe cabal-testsuite/**/*.bat +cabal-testsuite/**/haddocks # python artifacts from documentation builds *.pyc diff --git a/Cabal/src/Distribution/Simple/Haddock.hs b/Cabal/src/Distribution/Simple/Haddock.hs index 16a97a6eb03..8e90f6f6dd3 100644 --- a/Cabal/src/Distribution/Simple/Haddock.hs +++ b/Cabal/src/Distribution/Simple/Haddock.hs @@ -432,7 +432,7 @@ createHaddockIndex createHaddockIndex verbosity programDb comp platform flags = do let args = fromHaddockProjectFlags flags (haddockProg, _version) <- - getHaddockProg verbosity programDb comp args (haddockProjectQuickJump flags) + getHaddockProg verbosity programDb comp args (Flag True) runHaddock verbosity defaultTempFileOptions comp platform haddockProg False args -- ------------------------------------------------------------------------------ @@ -489,12 +489,12 @@ fromHaddockProjectFlags :: HaddockProjectFlags -> HaddockArgs fromHaddockProjectFlags flags = mempty { argOutputDir = Dir (fromFlag $ haddockProjectDir flags) - , argQuickJump = haddockProjectQuickJump flags - , argGenContents = haddockProjectGenContents flags - , argGenIndex = haddockProjectGenIndex flags + , argQuickJump = Flag True + , argGenContents = Flag True + , argGenIndex = Flag True , argPrologueFile = haddockProjectPrologue flags , argInterfaces = fromFlagOrDefault [] (haddockProjectInterfaces flags) - , argLinkedSource = haddockProjectLinkedSource flags + , argLinkedSource = Flag True , argLib = haddockProjectLib flags } @@ -835,7 +835,12 @@ renderArgs verbosity tmpFileOpts version comp platform args k = do ( \o -> outputDir case o of - Html -> "index.html" + Html + | fromFlagOrDefault False (argGenIndex args) -> + "index.html" + Html + | otherwise -> + mempty Hoogle -> pkgstr <.> "txt" ) . fromFlagOrDefault [Html] diff --git a/Cabal/src/Distribution/Simple/Setup/Haddock.hs b/Cabal/src/Distribution/Simple/Setup/Haddock.hs index c1043bbef2d..3efc6640bd2 100644 --- a/Cabal/src/Distribution/Simple/Setup/Haddock.hs +++ b/Cabal/src/Distribution/Simple/Setup/Haddock.hs @@ -381,21 +381,10 @@ data HaddockProjectFlags = HaddockProjectFlags -- * `--gen-index` -- * `--gen-contents` -- * `--hyperlinked-source` - , haddockProjectLocal :: Flag Bool - -- ^ a shortcut option which builds self contained directory which contains - -- all the documentation, it implies: - -- * `--quickjump` - -- * `--gen-index` - -- * `--gen-contents` - -- * `--hyperlinked-source` - -- - -- And it will also pass `--base-url` option to `haddock`. , -- options passed to @haddock@ via 'createHaddockIndex' haddockProjectDir :: Flag String -- ^ output directory of combined haddocks, the default is './haddocks' , haddockProjectPrologue :: Flag String - , haddockProjectGenIndex :: Flag Bool - , haddockProjectGenContents :: Flag Bool , haddockProjectInterfaces :: Flag [(FilePath, Maybe FilePath, Maybe FilePath, Visibility)] -- ^ 'haddocksInterfaces' is inferred by the 'haddocksAction'; currently not -- exposed to the user. @@ -414,8 +403,6 @@ data HaddockProjectFlags = HaddockProjectFlags , haddockProjectForeignLibs :: Flag Bool , haddockProjectInternal :: Flag Bool , haddockProjectCss :: Flag FilePath - , haddockProjectLinkedSource :: Flag Bool - , haddockProjectQuickJump :: Flag Bool , haddockProjectHscolourCss :: Flag FilePath , -- haddockContent is not supported, a fixed value is provided -- haddockIndex is not supported, a fixed value is provided @@ -432,11 +419,8 @@ defaultHaddockProjectFlags :: HaddockProjectFlags defaultHaddockProjectFlags = HaddockProjectFlags { haddockProjectHackage = Flag False - , haddockProjectLocal = Flag False , haddockProjectDir = Flag "./haddocks" , haddockProjectPrologue = NoFlag - , haddockProjectGenIndex = Flag False - , haddockProjectGenContents = Flag False , haddockProjectTestSuites = Flag False , haddockProjectProgramPaths = mempty , haddockProjectProgramArgs = mempty @@ -447,8 +431,6 @@ defaultHaddockProjectFlags = , haddockProjectForeignLibs = Flag False , haddockProjectInternal = Flag False , haddockProjectCss = NoFlag - , haddockProjectLinkedSource = Flag False - , haddockProjectQuickJump = Flag False , haddockProjectHscolourCss = NoFlag , haddockProjectKeepTempFiles = Flag False , haddockProjectVerbosity = Flag normal @@ -501,26 +483,12 @@ haddockProjectOptions _showOrParseArgs = "" ["hackage"] ( concat - [ "A short-cut option to build documentation linked to hackage; " - , "it implies --quickjump, --gen-index, --gen-contents, " - , "--hyperlinked-source and --html-location" + [ "A short-cut option to build documentation linked to hackage." ] ) haddockProjectHackage (\v flags -> flags{haddockProjectHackage = v}) trueArg - , option - "" - ["local"] - ( concat - [ "A short-cut option to build self contained documentation; " - , "it implies --quickjump, --gen-index, --gen-contents " - , "and --hyperlinked-source." - ] - ) - haddockProjectLocal - (\v flags -> flags{haddockProjectLocal = v}) - trueArg , option "" ["output"] @@ -535,20 +503,6 @@ haddockProjectOptions _showOrParseArgs = haddockProjectPrologue (\v flags -> flags{haddockProjectPrologue = v}) (optArg' "PATH" maybeToFlag (fmap Just . flagToList)) - , option - "" - ["gen-index"] - "Generate index" - haddockProjectGenIndex - (\v flags -> flags{haddockProjectGenIndex = v}) - trueArg - , option - "" - ["gen-contents"] - "Generate contents" - haddockProjectGenContents - (\v flags -> flags{haddockProjectGenContents = v}) - trueArg , option "" ["hoogle"] @@ -605,20 +559,6 @@ haddockProjectOptions _showOrParseArgs = haddockProjectCss (\v flags -> flags{haddockProjectCss = v}) (reqArgFlag "PATH") - , option - "" - ["hyperlink-source", "hyperlink-sources", "hyperlinked-source"] - "Hyperlink the documentation to the source code" - haddockProjectLinkedSource - (\v flags -> flags{haddockProjectLinkedSource = v}) - trueArg - , option - "" - ["quickjump"] - "Generate an index for interactive documentation navigation" - haddockProjectQuickJump - (\v flags -> flags{haddockProjectQuickJump = v}) - trueArg , option "" ["hscolour-css"] diff --git a/cabal-install/src/Distribution/Client/CmdHaddockProject.hs b/cabal-install/src/Distribution/Client/CmdHaddockProject.hs index 535d2aacb3d..e402a8db87c 100644 --- a/cabal-install/src/Distribution/Client/CmdHaddockProject.hs +++ b/cabal-install/src/Distribution/Client/CmdHaddockProject.hs @@ -3,7 +3,6 @@ module Distribution.Client.CmdHaddockProject , haddockProjectAction ) where -import Data.Bool (bool) import Distribution.Client.Compat.Prelude hiding (get) import Prelude () @@ -60,8 +59,6 @@ import Distribution.Simple.Compiler ) import Distribution.Simple.Flag ( Flag (..) - , flagElim - , flagToList , fromFlag , fromFlagOrDefault ) @@ -93,6 +90,7 @@ import Distribution.Simple.Utils import Distribution.Types.InstalledPackageInfo (InstalledPackageInfo (..)) import Distribution.Types.PackageId (pkgName) import Distribution.Types.PackageName (unPackageName) +import Distribution.Types.UnitId (unUnitId) import Distribution.Types.Version (mkVersion) import Distribution.Types.VersionRange (orLaterVersion) import Distribution.Verbosity as Verbosity @@ -108,15 +106,6 @@ haddockProjectAction flags _extraArgs globalFlags = do let outputDir = normalise $ fromFlag (haddockProjectDir flags) createDirectoryIfMissingVerbose verbosity True outputDir - when - ( (2 :: Int) - <= ( flagElim 0 (bool 0 1) (haddockProjectHackage flags) - + flagElim 0 (bool 0 1) (haddockProjectLocal flags) - + flagElim 0 (const 1) (haddockProjectHtmlLocation flags) - ) - ) - $ die' verbosity "Options `--local`, `--hackage` and `--html-location` are mutually exclusive`" - warn verbosity "haddock-project command is experimental, it might break in the future" -- build all packages with appropriate haddock flags @@ -142,14 +131,8 @@ haddockProjectAction flags _extraArgs globalFlags = do , haddockForeignLibs = haddockProjectForeignLibs flags , haddockInternal = haddockProjectInternal flags , haddockCss = haddockProjectCss flags - , haddockLinkedSource = - if localOrHackage - then Flag True - else haddockProjectLinkedSource flags - , haddockQuickJump = - if localOrHackage - then Flag True - else haddockProjectQuickJump flags + , haddockLinkedSource = Flag True + , haddockQuickJump = Flag True , haddockHscolourCss = haddockProjectHscolourCss flags , haddockContents = if localStyle @@ -178,7 +161,10 @@ haddockProjectAction flags _extraArgs globalFlags = do -- we need. -- - withContextAndSelectors RejectNoTargets Nothing nixFlags ["all"] globalFlags HaddockCommand $ \targetCtx ctx targetSelectors -> do + withContextAndSelectors RejectNoTargets Nothing + (commandDefaultFlags CmdBuild.buildCommand) + ["all"] globalFlags HaddockCommand + $ \targetCtx ctx targetSelectors -> do baseCtx <- case targetCtx of ProjectContext -> return ctx GlobalContext -> return ctx @@ -235,6 +221,17 @@ haddockProjectAction flags _extraArgs globalFlags = do (orLaterVersion (mkVersion [2, 26, 1])) progs + -- + -- Build project; we need to build dependencies. + -- Issue #8958. + -- + + when localStyle $ + CmdBuild.buildAction + (commandDefaultFlags CmdBuild.buildCommand) + ["all"] + globalFlags + -- -- Build haddocks of each components -- @@ -254,6 +251,8 @@ haddockProjectAction flags _extraArgs globalFlags = do | not localStyle -> return [] Left package -> do + -- TODO: this might not work for public packages with sublibraries. + -- Issue #9026. let packageName = unPackageName (pkgName $ sourcePackageId package) destDir = outputDir packageName fmap catMaybes $ for (haddockInterfaces package) $ \interfacePath -> do @@ -274,6 +273,7 @@ haddockProjectAction flags _extraArgs globalFlags = do case elabLocalToProject package of True -> do let distDirParams = elabDistDirParams sharedConfig' package + unitId = unUnitId (elabUnitId package) buildDir = distBuildDirectory distLayout distDirParams packageName = unPackageName (pkgName $ elabPkgSourceId package) let docDir = @@ -281,7 +281,7 @@ haddockProjectAction flags _extraArgs globalFlags = do "doc" "html" packageName - destDir = outputDir packageName + destDir = outputDir unitId interfacePath = destDir packageName @@ -292,17 +292,23 @@ haddockProjectAction flags _extraArgs globalFlags = do copyDirectoryRecursive verbosity docDir destDir >> return [ - ( packageName + ( unitId , interfacePath , Visible ) ] - False -> return [] + False -> do + warn verbosity + ("haddocks of " + ++ show unitId + ++ " not found in the store") + return [] False | not localStyle -> return [] False -> do let packageName = unPackageName (pkgName $ elabPkgSourceId package) + unitId = unUnitId (elabUnitId package) packageDir = storePackageDirectory (cabalStoreDirLayout cabalLayout) @@ -322,12 +328,17 @@ haddockProjectAction flags _extraArgs globalFlags = do -- generated contents page >> return [ - ( packageName + ( unitId , interfacePath , Hidden ) ] - False -> return [] + False -> do + warn verbosity + ("haddocks of " + ++ show unitId + ++ " not found in the store") + return [] -- -- generate index, content, etc. @@ -336,27 +347,14 @@ haddockProjectAction flags _extraArgs globalFlags = do let flags' = flags { haddockProjectDir = Flag outputDir - , haddockProjectGenIndex = - if localOrHackage - then Flag True - else haddockProjectGenIndex flags - , haddockProjectGenContents = - if localOrHackage - then Flag True - else haddockProjectGenContents flags - , haddockProjectQuickJump = - if localOrHackage - then Flag True - else haddockProjectQuickJump flags - , haddockProjectLinkedSource = haddockLinkedSource haddockFlags , haddockProjectInterfaces = Flag [ ( interfacePath - , Just packageName - , Just packageName + , Just name + , Just name , visibility ) - | (packageName, interfacePath, visibility) <- packageInfos + | (name, interfacePath, visibility) <- packageInfos ] } createHaddockIndex @@ -372,17 +370,9 @@ haddockProjectAction flags _extraArgs globalFlags = do -- transitive dependencies; or depend on `--haddocks-html-location` to -- provide location of the documentation of dependencies. localStyle = - let local = fromFlagOrDefault False (haddockProjectLocal flags) - hackage = fromFlagOrDefault False (haddockProjectHackage flags) + let hackage = fromFlagOrDefault False (haddockProjectHackage flags) location = fromFlagOrDefault False (const True <$> haddockProjectHtmlLocation flags) - in local && not hackage && not location - -- or if none of the flags is given set `localStyle` to `True` - || not local && not hackage && not location - - localOrHackage = - any id $ - flagToList (haddockProjectLocal flags) - ++ flagToList (haddockProjectHackage flags) + in not hackage && not location reportTargetProblems :: Show x => [x] -> IO a reportTargetProblems = diff --git a/cabal-install/tests/IntegrationTests2.hs b/cabal-install/tests/IntegrationTests2.hs index 63297be4d5e..4425a9a03a2 100644 --- a/cabal-install/tests/IntegrationTests2.hs +++ b/cabal-install/tests/IntegrationTests2.hs @@ -38,13 +38,13 @@ import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.PackageConstraint ( PackageProperty(PackagePropertySource) ) -import qualified Distribution.Client.CmdBuild as CmdBuild -import qualified Distribution.Client.CmdRepl as CmdRepl -import qualified Distribution.Client.CmdRun as CmdRun -import qualified Distribution.Client.CmdTest as CmdTest -import qualified Distribution.Client.CmdBench as CmdBench -import qualified Distribution.Client.CmdHaddock as CmdHaddock -import qualified Distribution.Client.CmdListBin as CmdListBin +import qualified Distribution.Client.CmdBuild as CmdBuild +import qualified Distribution.Client.CmdRepl as CmdRepl +import qualified Distribution.Client.CmdRun as CmdRun +import qualified Distribution.Client.CmdTest as CmdTest +import qualified Distribution.Client.CmdBench as CmdBench +import qualified Distribution.Client.CmdHaddock as CmdHaddock +import qualified Distribution.Client.CmdListBin as CmdListBin import Distribution.Package import Distribution.PackageDescription @@ -60,6 +60,10 @@ import Distribution.Version import Distribution.ModuleName (ModuleName) import Distribution.Text import Distribution.Utils.Path +import qualified Distribution.Client.CmdHaddockProject as CmdHaddockProject +import Distribution.Client.Setup (globalStoreDir) +import Distribution.Client.GlobalFlags (defaultGlobalFlags) +import Distribution.Simple.Setup (HaddockProjectFlags(..), defaultHaddockProjectFlags) import qualified Data.Map as Map import qualified Data.Set as Set @@ -154,6 +158,9 @@ tests config = testCase "Test Config options for commented options" testConfigOptionComments, testCase "Test Ignore Project Flag" testIgnoreProjectFlag ] + , testGroup "haddock-project" + [ testCase "dependencies" (testHaddockProjectDependencies config) + ] ] testTargetSelectors :: (String -> IO ()) -> Assertion @@ -2196,3 +2203,36 @@ testIgnoreProjectFlag = do emptyConfig = mempty ignoreSetConfig :: ProjectConfig ignoreSetConfig = mempty { projectConfigShared = mempty { projectConfigIgnoreProject = Flag True } } + + +cleanHaddockProject :: FilePath -> IO () +cleanHaddockProject testdir = do + cleanProject testdir + let haddocksdir = basedir testdir "haddocks" + alreadyExists <- doesDirectoryExist haddocksdir + when alreadyExists $ removePathForcibly haddocksdir + let storedir = basedir testdir "store" + alreadyExists' <- doesDirectoryExist storedir + when alreadyExists' $ removePathForcibly storedir + + +testHaddockProjectDependencies :: ProjectConfig -> Assertion +testHaddockProjectDependencies config = do + (_,_,sharedConfig) <- planProject testdir config + -- `haddock-project` is only supported by `haddock-2.26.1` and above which is + -- shipped with `ghc-9.4` + when (compilerVersion (pkgConfigCompiler sharedConfig) > mkVersion [9,4]) $ do + let dir = basedir testdir + cleanHaddockProject testdir + withCurrentDirectory dir $ do + CmdHaddockProject.haddockProjectAction + defaultHaddockProjectFlags { haddockProjectVerbosity = Flag verbosity } + ["all"] + defaultGlobalFlags { globalStoreDir = Flag "store" } + + let haddock = "haddocks" "async" "async.haddock" + hasHaddock <- doesFileExist haddock + unless hasHaddock $ assertFailure ("File `" ++ haddock ++ "` does not exist.") + cleanHaddockProject testdir + where + testdir = "haddock-project/dependencies" diff --git a/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/a.cabal b/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/a.cabal new file mode 100644 index 00000000000..831be636bec --- /dev/null +++ b/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/a.cabal @@ -0,0 +1,10 @@ +name: a +version: 0.1.0.0 +build-type: Simple +cabal-version: >= 1.10 + +library + exposed-modules: MyLib + build-depends: base, async + hs-source-dirs: src + default-language: Haskell2010 diff --git a/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/cabal.project b/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/cabal.project new file mode 100644 index 00000000000..052c3c8685d --- /dev/null +++ b/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/cabal.project @@ -0,0 +1,8 @@ +packages: . +-- `jobs` is necessary to use `InternalMethod :: SetupMethod`. +jobs: 1 + +documentation: True + +package async + documentation: True diff --git a/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/src/MyLib.hs b/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/src/MyLib.hs new file mode 100644 index 00000000000..b0b955743ad --- /dev/null +++ b/cabal-install/tests/IntegrationTests2/haddock-project/dependencies/src/MyLib.hs @@ -0,0 +1,6 @@ +module MyLib (someFunc) where + +import Control.Concurrent.Async + +someFunc :: IO (Async ()) +someFunc = async (return ()) diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-external.cabal.out b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-external.cabal.out index 3bc46d73e3c..cb4f8288291 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-external.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-external.cabal.out @@ -8,7 +8,7 @@ for mylib-0.1.0.0... Preprocessing library for mylib-0.1.0.0... Running Haddock on library instantiated with Database = for mylib-0.1.0.0... -Documentation created: ../setup-external.cabal.dist/work/mylib/dist/doc/html/mylib/index.html +Documentation created: ../setup-external.cabal.dist/work/mylib/dist/doc/html/mylib/ # Setup copy Installing library in # Setup register @@ -22,7 +22,7 @@ Building library for mysql-0.1.0.0... # Setup haddock Preprocessing library for mysql-0.1.0.0... Running Haddock on library for mysql-0.1.0.0... -Documentation created: ../setup-external.cabal.dist/work/mysql/dist/doc/html/mysql/index.html +Documentation created: ../setup-external.cabal.dist/work/mysql/dist/doc/html/mysql/ # Setup copy Installing library in # Setup register @@ -35,7 +35,7 @@ Building library for postgresql-0.1.0.0... # Setup haddock Preprocessing library for postgresql-0.1.0.0... Running Haddock on library for postgresql-0.1.0.0... -Documentation created: ../setup-external.cabal.dist/work/postgresql/dist/doc/html/postgresql/index.html +Documentation created: ../setup-external.cabal.dist/work/postgresql/dist/doc/html/postgresql/ # Setup copy Installing library in # Setup register @@ -51,7 +51,7 @@ Preprocessing library for mylib-0.1.0.0... Running Haddock on library instantiated with Database = mysql-0.1.0.0:Database.MySQL for mylib-0.1.0.0... -Documentation created: ../setup-external.cabal.dist/work/mylib/dist/doc/html/mylib/index.html +Documentation created: ../setup-external.cabal.dist/work/mylib/dist/doc/html/mylib/ # Setup copy Installing library in # Setup register @@ -69,7 +69,7 @@ Preprocessing library for mylib-0.1.0.0... Running Haddock on library instantiated with Database = postgresql-0.1.0.0:Database.PostgreSQL for mylib-0.1.0.0... -Documentation created: ../setup-external.cabal.dist/work/mylib/dist/doc/html/mylib/index.html +Documentation created: ../setup-external.cabal.dist/work/mylib/dist/doc/html/mylib/ # Setup copy Installing library in # Setup register @@ -84,7 +84,7 @@ Building library for src-0.1.0.0... # Setup haddock Preprocessing library for src-0.1.0.0... Running Haddock on library for src-0.1.0.0... -Documentation created: ../setup-external.cabal.dist/work/src/dist/doc/html/src/index.html +Documentation created: ../setup-external.cabal.dist/work/src/dist/doc/html/src/ # Setup copy Installing library in # Setup register diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-external.out b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-external.out index 5c5386ccee4..299d6a831b3 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-external.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-external.out @@ -8,7 +8,7 @@ for mylib-0.1.0.0... Preprocessing library for mylib-0.1.0.0... Running Haddock on library instantiated with Database = for mylib-0.1.0.0... -Documentation created: ../setup-external.dist/work/mylib/dist/doc/html/mylib/index.html +Documentation created: ../setup-external.dist/work/mylib/dist/doc/html/mylib/ # Setup copy Installing library in # Setup register @@ -22,7 +22,7 @@ Building library for mysql-0.1.0.0... # Setup haddock Preprocessing library for mysql-0.1.0.0... Running Haddock on library for mysql-0.1.0.0... -Documentation created: ../setup-external.dist/work/mysql/dist/doc/html/mysql/index.html +Documentation created: ../setup-external.dist/work/mysql/dist/doc/html/mysql/ # Setup copy Installing library in # Setup register @@ -35,7 +35,7 @@ Building library for postgresql-0.1.0.0... # Setup haddock Preprocessing library for postgresql-0.1.0.0... Running Haddock on library for postgresql-0.1.0.0... -Documentation created: ../setup-external.dist/work/postgresql/dist/doc/html/postgresql/index.html +Documentation created: ../setup-external.dist/work/postgresql/dist/doc/html/postgresql/ # Setup copy Installing library in # Setup register @@ -51,7 +51,7 @@ Preprocessing library for mylib-0.1.0.0... Running Haddock on library instantiated with Database = mysql-0.1.0.0:Database.MySQL for mylib-0.1.0.0... -Documentation created: ../setup-external.dist/work/mylib/dist/doc/html/mylib/index.html +Documentation created: ../setup-external.dist/work/mylib/dist/doc/html/mylib/ # Setup copy Installing library in # Setup register @@ -69,7 +69,7 @@ Preprocessing library for mylib-0.1.0.0... Running Haddock on library instantiated with Database = postgresql-0.1.0.0:Database.PostgreSQL for mylib-0.1.0.0... -Documentation created: ../setup-external.dist/work/mylib/dist/doc/html/mylib/index.html +Documentation created: ../setup-external.dist/work/mylib/dist/doc/html/mylib/ # Setup copy Installing library in # Setup register @@ -84,7 +84,7 @@ Building library for src-0.1.0.0... # Setup haddock Preprocessing library for src-0.1.0.0... Running Haddock on library for src-0.1.0.0... -Documentation created: ../setup-external.dist/work/src/dist/doc/html/src/index.html +Documentation created: ../setup-external.dist/work/src/dist/doc/html/src/ # Setup copy Installing library in # Setup register diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-per-component.out b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-per-component.out index 479b5bcf586..33ac75b0a99 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/setup-per-component.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/setup-per-component.out @@ -8,7 +8,7 @@ for Includes2-0.1.0.0... Preprocessing library 'mylib' for Includes2-0.1.0.0... Running Haddock on library 'mylib' instantiated with Database = for Includes2-0.1.0.0... -Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/index.html +Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/ # Setup copy Installing internal library mylib in # Setup register @@ -22,7 +22,7 @@ Building library 'mysql' for Includes2-0.1.0.0... # Setup haddock Preprocessing library 'mysql' for Includes2-0.1.0.0... Running Haddock on library 'mysql' for Includes2-0.1.0.0... -Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/index.html +Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/ # Setup copy Installing internal library mysql in # Setup register @@ -35,7 +35,7 @@ Building library 'postgresql' for Includes2-0.1.0.0... # Setup haddock Preprocessing library 'postgresql' for Includes2-0.1.0.0... Running Haddock on library 'postgresql' for Includes2-0.1.0.0... -Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/index.html +Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/ # Setup copy Installing internal library postgresql in # Setup register @@ -54,7 +54,7 @@ Preprocessing library 'mylib' for Includes2-0.1.0.0... Running Haddock on library 'mylib' instantiated with Database = mysql-0.1.0.0:Database.MySQL for Includes2-0.1.0.0... -Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/index.html +Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/ # Setup copy Installing internal library mylib in # Setup register @@ -75,7 +75,7 @@ Preprocessing library 'mylib' for Includes2-0.1.0.0... Running Haddock on library 'mylib' instantiated with Database = postgresql-0.1.0.0:Database.PostgreSQL for Includes2-0.1.0.0... -Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/index.html +Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/ # Setup copy Installing internal library mylib in # Setup register @@ -90,7 +90,7 @@ Building library for Includes2-0.1.0.0... # Setup haddock Preprocessing library for Includes2-0.1.0.0... Running Haddock on library for Includes2-0.1.0.0... -Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/index.html +Documentation created: setup-per-component.dist/work/dist/doc/html/Includes2/ # Setup copy Installing library in # Setup register diff --git a/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-explicit.out b/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-explicit.out index 04315267b88..b27b2d8eb1a 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-explicit.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-explicit.out @@ -8,7 +8,7 @@ for sigs-0.1.0.0... Preprocessing library for sigs-0.1.0.0... Running Haddock on library instantiated with Data.Map = for sigs-0.1.0.0... -Documentation created: ../../setup-external-explicit.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/index.html +Documentation created: ../../setup-external-explicit.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/ # Setup copy Installing library in # Setup register @@ -24,7 +24,7 @@ for indef-0.1.0.0... Preprocessing library for indef-0.1.0.0... Running Haddock on library instantiated with Data.Map = for indef-0.1.0.0... -Documentation created: ../../setup-external-explicit.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/index.html +Documentation created: ../../setup-external-explicit.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/ # Setup copy Installing library in # Setup register diff --git a/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-ok.cabal.out b/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-ok.cabal.out index ac6e3652108..6d0abf817af 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-ok.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-ok.cabal.out @@ -8,7 +8,7 @@ for sigs-0.1.0.0... Preprocessing library for sigs-0.1.0.0... Running Haddock on library instantiated with Data.Map = for sigs-0.1.0.0... -Documentation created: ../../setup-external-ok.cabal.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/index.html +Documentation created: ../../setup-external-ok.cabal.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/ # Setup copy Installing library in # Setup register @@ -24,7 +24,7 @@ for indef-0.1.0.0... Preprocessing library for indef-0.1.0.0... Running Haddock on library instantiated with Data.Map = for indef-0.1.0.0... -Documentation created: ../../setup-external-ok.cabal.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/index.html +Documentation created: ../../setup-external-ok.cabal.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/ # Setup copy Installing library in # Setup register @@ -41,7 +41,7 @@ Preprocessing library for sigs-0.1.0.0... Running Haddock on library instantiated with Data.Map = containers-:Data.Map for sigs-0.1.0.0... -Documentation created: ../../setup-external-ok.cabal.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/index.html +Documentation created: ../../setup-external-ok.cabal.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/ # Setup copy Installing library in # Setup register @@ -58,7 +58,7 @@ Preprocessing library for indef-0.1.0.0... Running Haddock on library instantiated with Data.Map = containers-:Data.Map for indef-0.1.0.0... -Documentation created: ../../setup-external-ok.cabal.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/index.html +Documentation created: ../../setup-external-ok.cabal.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/ # Setup copy Installing library in # Setup register diff --git a/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-ok.out b/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-ok.out index 1f57cbd8f5b..8fc173d40f0 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-ok.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes3/setup-external-ok.out @@ -8,7 +8,7 @@ for sigs-0.1.0.0... Preprocessing library for sigs-0.1.0.0... Running Haddock on library instantiated with Data.Map = for sigs-0.1.0.0... -Documentation created: ../../setup-external-ok.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/index.html +Documentation created: ../../setup-external-ok.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/ # Setup copy Installing library in # Setup register @@ -24,7 +24,7 @@ for indef-0.1.0.0... Preprocessing library for indef-0.1.0.0... Running Haddock on library instantiated with Data.Map = for indef-0.1.0.0... -Documentation created: ../../setup-external-ok.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/index.html +Documentation created: ../../setup-external-ok.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/ # Setup copy Installing library in # Setup register @@ -41,7 +41,7 @@ Preprocessing library for sigs-0.1.0.0... Running Haddock on library instantiated with Data.Map = containers-:Data.Map for sigs-0.1.0.0... -Documentation created: ../../setup-external-ok.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/index.html +Documentation created: ../../setup-external-ok.dist/work/repo/sigs-0.1.0.0/dist/doc/html/sigs/ # Setup copy Installing library in # Setup register @@ -58,7 +58,7 @@ Preprocessing library for indef-0.1.0.0... Running Haddock on library instantiated with Data.Map = containers-:Data.Map for indef-0.1.0.0... -Documentation created: ../../setup-external-ok.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/index.html +Documentation created: ../../setup-external-ok.dist/work/repo/indef-0.1.0.0/dist/doc/html/indef/ # Setup copy Installing library in # Setup register diff --git a/cabal-testsuite/PackageTests/Backpack/Reexport1/setup.cabal.out b/cabal-testsuite/PackageTests/Backpack/Reexport1/setup.cabal.out index 3b0668c0fcc..1c8de306e5d 100644 --- a/cabal-testsuite/PackageTests/Backpack/Reexport1/setup.cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Reexport1/setup.cabal.out @@ -6,7 +6,7 @@ Building library for p-0.1.0.0... # Setup haddock Preprocessing library for p-0.1.0.0... Running Haddock on library for p-0.1.0.0... -Documentation created: ../setup.cabal.dist/work/p/dist/doc/html/p/index.html +Documentation created: ../setup.cabal.dist/work/p/dist/doc/html/p/ # Setup copy Installing library in # Setup register @@ -19,4 +19,4 @@ Building library for q-0.1.0.0... # Setup haddock Preprocessing library for q-0.1.0.0... Running Haddock on library for q-0.1.0.0... -Documentation created: ../setup.cabal.dist/work/q/dist/doc/html/q/index.html +Documentation created: ../setup.cabal.dist/work/q/dist/doc/html/q/ diff --git a/cabal-testsuite/PackageTests/Backpack/Reexport1/setup.out b/cabal-testsuite/PackageTests/Backpack/Reexport1/setup.out index 3ce38d24ee1..ee41d01148b 100644 --- a/cabal-testsuite/PackageTests/Backpack/Reexport1/setup.out +++ b/cabal-testsuite/PackageTests/Backpack/Reexport1/setup.out @@ -6,7 +6,7 @@ Building library for p-0.1.0.0... # Setup haddock Preprocessing library for p-0.1.0.0... Running Haddock on library for p-0.1.0.0... -Documentation created: ../setup.dist/work/p/dist/doc/html/p/index.html +Documentation created: ../setup.dist/work/p/dist/doc/html/p/ # Setup copy Installing library in # Setup register @@ -19,4 +19,4 @@ Building library for q-0.1.0.0... # Setup haddock Preprocessing library for q-0.1.0.0... Running Haddock on library for q-0.1.0.0... -Documentation created: ../setup.dist/work/q/dist/doc/html/q/index.html +Documentation created: ../setup.dist/work/q/dist/doc/html/q/ diff --git a/cabal-testsuite/PackageTests/Haddock/setup.cabal.out b/cabal-testsuite/PackageTests/Haddock/setup.cabal.out index 95278d004f6..a13ae638ac4 100644 --- a/cabal-testsuite/PackageTests/Haddock/setup.cabal.out +++ b/cabal-testsuite/PackageTests/Haddock/setup.cabal.out @@ -3,4 +3,4 @@ Configuring Haddock-0.1... # Setup haddock Preprocessing library for Haddock-0.1... Running Haddock on library for Haddock-0.1... -Documentation created: setup.cabal.dist/work/dist/doc/html/Haddock/index.html +Documentation created: setup.cabal.dist/work/dist/doc/html/Haddock/ diff --git a/cabal-testsuite/PackageTests/Haddock/setup.out b/cabal-testsuite/PackageTests/Haddock/setup.out index c86692b999c..a16722bc65c 100644 --- a/cabal-testsuite/PackageTests/Haddock/setup.out +++ b/cabal-testsuite/PackageTests/Haddock/setup.out @@ -3,4 +3,4 @@ Configuring Haddock-0.1... # Setup haddock Preprocessing library for Haddock-0.1... Running Haddock on library for Haddock-0.1... -Documentation created: setup.dist/work/dist/doc/html/Haddock/index.html +Documentation created: setup.dist/work/dist/doc/html/Haddock/ diff --git a/cabal-testsuite/PackageTests/HaddockArgs/quickjump.out b/cabal-testsuite/PackageTests/HaddockArgs/quickjump.out index 36a733d17c3..52809bcc3af 100644 --- a/cabal-testsuite/PackageTests/HaddockArgs/quickjump.out +++ b/cabal-testsuite/PackageTests/HaddockArgs/quickjump.out @@ -14,7 +14,7 @@ for sigs-0.1.0.0... Preprocessing library for sigs-0.1.0.0... Running Haddock on library instantiated with Data.Map = for sigs-0.1.0.0... -Documentation created: dist/doc/html/sigs/index.html +Documentation created: dist/doc/html/sigs/ Installing library in Configuring library for indef-0.1.0.0... Preprocessing library for indef-0.1.0.0... @@ -23,7 +23,7 @@ for indef-0.1.0.0... Preprocessing library for indef-0.1.0.0... Running Haddock on library instantiated with Data.Map = for indef-0.1.0.0... -Documentation created: dist/doc/html/indef/index.html +Documentation created: dist/doc/html/indef/ Installing library in Configuring library for example-1.0... Preprocessing library for example-1.0... @@ -32,4 +32,4 @@ for example-1.0... Preprocessing library for example-1.0... Running Haddock on library instantiated with Data.Map = for example-1.0... -Documentation created: /quickjump.dist/work/dist/build//ghc-/example-1.0/doc/html/example/index.html +Documentation created: /quickjump.dist/work/dist/build//ghc-/example-1.0/doc/html/example/ diff --git a/cabal-testsuite/PackageTests/HaddockNewline/setup.cabal.out b/cabal-testsuite/PackageTests/HaddockNewline/setup.cabal.out index ffc7d101007..7db9a69eefe 100644 --- a/cabal-testsuite/PackageTests/HaddockNewline/setup.cabal.out +++ b/cabal-testsuite/PackageTests/HaddockNewline/setup.cabal.out @@ -3,4 +3,4 @@ Configuring HaddockNewline-0.1.0.0... # Setup haddock Preprocessing library for HaddockNewline-0.1.0.0... Running Haddock on library for HaddockNewline-0.1.0.0... -Documentation created: setup.cabal.dist/work/dist/doc/html/HaddockNewline/index.html +Documentation created: setup.cabal.dist/work/dist/doc/html/HaddockNewline/ diff --git a/cabal-testsuite/PackageTests/HaddockNewline/setup.out b/cabal-testsuite/PackageTests/HaddockNewline/setup.out index 5b5dc51c5cc..57908512556 100644 --- a/cabal-testsuite/PackageTests/HaddockNewline/setup.out +++ b/cabal-testsuite/PackageTests/HaddockNewline/setup.out @@ -3,4 +3,4 @@ Configuring HaddockNewline-0.1.0.0... # Setup haddock Preprocessing library for HaddockNewline-0.1.0.0... Running Haddock on library for HaddockNewline-0.1.0.0... -Documentation created: setup.dist/work/dist/doc/html/HaddockNewline/index.html +Documentation created: setup.dist/work/dist/doc/html/HaddockNewline/ diff --git a/cabal-testsuite/PackageTests/HaddockProject/a.cabal b/cabal-testsuite/PackageTests/HaddockProject/a.cabal new file mode 100644 index 00000000000..831be636bec --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/a.cabal @@ -0,0 +1,10 @@ +name: a +version: 0.1.0.0 +build-type: Simple +cabal-version: >= 1.10 + +library + exposed-modules: MyLib + build-depends: base, async + hs-source-dirs: src + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/HaddockProject/cabal.project b/cabal-testsuite/PackageTests/HaddockProject/cabal.project new file mode 100644 index 00000000000..052c3c8685d --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/cabal.project @@ -0,0 +1,8 @@ +packages: . +-- `jobs` is necessary to use `InternalMethod :: SetupMethod`. +jobs: 1 + +documentation: True + +package async + documentation: True diff --git a/cabal-testsuite/PackageTests/HaddockProject/haddock-project.out b/cabal-testsuite/PackageTests/HaddockProject/haddock-project.out new file mode 100644 index 00000000000..a2f14d6a6f2 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/haddock-project.out @@ -0,0 +1,25 @@ +# cabal v2-update +Downloading the latest package list from test-local-repo +# cabal haddock-project +Warning: haddock-project command is experimental, it might break in the future +Resolving dependencies... +Build profile: -w ghc- -O1 +In order, the following will be built: + - async-2.2.4 (lib) (requires build) + - a-0.1.0.0 (lib) (first run) +Build profile: -w ghc- -O1 +In order, the following will be built: + - async-2.2.4 (lib) (requires build) + - a-0.1.0.0 (lib) (configuration changed) +Configuring library for async-2.2.4... +Preprocessing library for async-2.2.4... +Building library for async-2.2.4... +Preprocessing library for async-2.2.4... +Running Haddock on library for async-2.2.4... +Documentation created: dist/doc/html/async/ +Installing library in +Configuring library for a-0.1.0.0... +Preprocessing library for a-0.1.0.0... +Running Haddock on library for a-0.1.0.0... +Documentation created: /haddock-project.dist/source/dist-newstyle/build//ghc-/a-0.1.0.0/doc/html/a/ +Documentation created: haddocks/index.html diff --git a/cabal-testsuite/PackageTests/HaddockProject/haddock-project.test.hs b/cabal-testsuite/PackageTests/HaddockProject/haddock-project.test.hs new file mode 100644 index 00000000000..6d889a14163 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/haddock-project.test.hs @@ -0,0 +1,13 @@ +import Test.Cabal.Prelude +import System.Directory (doesFileExist, removeDirectory) + +main = cabalTest . withRepo "repo" . withSourceCopy $ do + skipUnlessGhcVersion ">= 9.4.0" + env <- getTestEnv + let testDir = testCurrentDir env + + cabal "haddock-project" ["all"] + let asyncHaddocks = "haddocks" "async" "async.haddock" + liftIO (doesFileExist (testDir asyncHaddocks)) + >>= assertBool ("'" ++ asyncHaddocks ++ "'" ++ "should exist") + diff --git a/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/Control/Concurrent/Async.hs b/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/Control/Concurrent/Async.hs new file mode 100644 index 00000000000..cedaa25747e --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/Control/Concurrent/Async.hs @@ -0,0 +1,25 @@ +module Control.Concurrent.Async ( + Async, + async + ) where + + +-- ----------------------------------------------------------------------------- +-- STM Async API + + +-- | An asynchronous action spawned by 'async' or 'withAsync'. +-- Asynchronous actions are executed in a separate thread, and +-- operations are provided for waiting for asynchronous actions to +-- complete and obtaining their results (see e.g. 'wait'). +-- +data Async a = Async + +-- | Spawn an asynchronous action in a separate thread. +-- +-- Like for 'forkIO', the action may be left running unintentinally +-- (see module-level documentation for details). +-- +-- __Use 'withAsync' style functions wherever you can instead!__ +async :: IO a -> IO (Async a) +async = undefined diff --git a/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/LICENSE b/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/LICENSE new file mode 100644 index 00000000000..0acbb121f46 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/LICENSE @@ -0,0 +1,30 @@ +Copyright (c) 2012, Simon Marlow + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Simon Marlow nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/Setup.hs b/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/Setup.hs new file mode 100644 index 00000000000..9a994af677b --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/Setup.hs @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/async.cabal b/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/async.cabal new file mode 100644 index 00000000000..27736a4eee1 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/repo/async-2.2.4/async.cabal @@ -0,0 +1,22 @@ +name: async +version: 2.2.4 +synopsis: Run IO operations asynchronously and wait for their results +license: BSD3 +license-file: LICENSE +author: Simon Marlow +maintainer: Simon Marlow +copyright: (c) Simon Marlow 2012 +category: Concurrency +build-type: Simple +cabal-version: >=1.10 +homepage: https://github.com/simonmar/async +bug-reports: https://github.com/simonmar/async/issues + +source-repository head + type: git + location: https://github.com/simonmar/async.git + +library + default-language: Haskell2010 + exposed-modules: Control.Concurrent.Async + build-depends: base diff --git a/cabal-testsuite/PackageTests/HaddockProject/src/MyLib.hs b/cabal-testsuite/PackageTests/HaddockProject/src/MyLib.hs new file mode 100644 index 00000000000..b0b955743ad --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockProject/src/MyLib.hs @@ -0,0 +1,6 @@ +module MyLib (someFunc) where + +import Control.Concurrent.Async + +someFunc :: IO (Async ()) +someFunc = async (return ()) diff --git a/cabal-testsuite/PackageTests/InternalLibraries/Haddock/haddock.cabal.out b/cabal-testsuite/PackageTests/InternalLibraries/Haddock/haddock.cabal.out index 9b17115f980..bdc57a81bfd 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/Haddock/haddock.cabal.out +++ b/cabal-testsuite/PackageTests/InternalLibraries/Haddock/haddock.cabal.out @@ -18,10 +18,10 @@ Registering library 'foo-internal-after' for foo-0.1.0.0... # Setup haddock Preprocessing library 'foo-internal-before' for foo-0.1.0.0... Running Haddock on library 'foo-internal-before' for foo-0.1.0.0... -Documentation created: haddock.cabal.dist/work/dist/doc/html/foo/index.html +Documentation created: haddock.cabal.dist/work/dist/doc/html/foo/ Preprocessing library for foo-0.1.0.0... Running Haddock on library for foo-0.1.0.0... -Documentation created: haddock.cabal.dist/work/dist/doc/html/foo/index.html +Documentation created: haddock.cabal.dist/work/dist/doc/html/foo/ Preprocessing library 'foo-internal-after' for foo-0.1.0.0... Running Haddock on library 'foo-internal-after' for foo-0.1.0.0... -Documentation created: haddock.cabal.dist/work/dist/doc/html/foo/index.html +Documentation created: haddock.cabal.dist/work/dist/doc/html/foo/ diff --git a/cabal-testsuite/PackageTests/InternalLibraries/Haddock/haddock.out b/cabal-testsuite/PackageTests/InternalLibraries/Haddock/haddock.out index f808ca88efe..44ee7824244 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/Haddock/haddock.out +++ b/cabal-testsuite/PackageTests/InternalLibraries/Haddock/haddock.out @@ -18,10 +18,10 @@ Registering library 'foo-internal-after' for foo-0.1.0.0... # Setup haddock Preprocessing library 'foo-internal-before' for foo-0.1.0.0... Running Haddock on library 'foo-internal-before' for foo-0.1.0.0... -Documentation created: haddock.dist/work/dist/doc/html/foo/index.html +Documentation created: haddock.dist/work/dist/doc/html/foo/ Preprocessing library for foo-0.1.0.0... Running Haddock on library for foo-0.1.0.0... -Documentation created: haddock.dist/work/dist/doc/html/foo/index.html +Documentation created: haddock.dist/work/dist/doc/html/foo/ Preprocessing library 'foo-internal-after' for foo-0.1.0.0... Running Haddock on library 'foo-internal-after' for foo-0.1.0.0... -Documentation created: haddock.dist/work/dist/doc/html/foo/index.html +Documentation created: haddock.dist/work/dist/doc/html/foo/ diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out index d0ccd26b148..ac34ca8e161 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out @@ -13,4 +13,4 @@ Installing library in Configuring library for B-0.1.0.0... Preprocessing library for B-0.1.0.0... Running Haddock on library for B-0.1.0.0... -Documentation created: /cabal.dist/work/dist/build//ghc-/B-0.1.0.0/doc/html/B/index.html +Documentation created: /cabal.dist/work/dist/build//ghc-/B-0.1.0.0/doc/html/B/ diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputCmd/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputCmd/cabal.out index da6776b14d5..38e56384678 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputCmd/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputCmd/cabal.out @@ -8,4 +8,4 @@ In order, the following will be built: Configuring library for A-0.0.0... Preprocessing library for A-0.0.0... Running Haddock on library for A-0.0.0... -Documentation created: /docs/index.html +Documentation created: /docs/ diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.out index da6776b14d5..38e56384678 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.out @@ -8,4 +8,4 @@ In order, the following will be built: Configuring library for A-0.0.0... Preprocessing library for A-0.0.0... Running Haddock on library for A-0.0.0... -Documentation created: /docs/index.html +Documentation created: /docs/ diff --git a/cabal-testsuite/PackageTests/NewHaddock/ImplyDependencies/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/ImplyDependencies/cabal.out index 7e26a8900bc..9397fb7d076 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/ImplyDependencies/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/ImplyDependencies/cabal.out @@ -11,9 +11,9 @@ Preprocessing library for A-0.1.0.0... Building library for A-0.1.0.0... Preprocessing library for A-0.1.0.0... Running Haddock on library for A-0.1.0.0... -Documentation created: dist/doc/html/A/index.html +Documentation created: dist/doc/html/A/ Installing library in Configuring library for B-0.1.0.0... Preprocessing library for B-0.1.0.0... Running Haddock on library for B-0.1.0.0... -Documentation created: /cabal.dist/work/dist/build//ghc-/B-0.1.0.0/doc/html/B/index.html +Documentation created: /cabal.dist/work/dist/build//ghc-/B-0.1.0.0/doc/html/B/ diff --git a/cabal-testsuite/src/Test/Cabal/Prelude.hs b/cabal-testsuite/src/Test/Cabal/Prelude.hs index 791346b59eb..e0e63ac18f6 100644 --- a/cabal-testsuite/src/Test/Cabal/Prelude.hs +++ b/cabal-testsuite/src/Test/Cabal/Prelude.hs @@ -294,6 +294,7 @@ cabalGArgs global_args cmd args input = do , "get", "unpack" , "info" , "init" + , "haddock-project" ] = [ ] diff --git a/changelog.d/issue-8843 b/changelog.d/issue-8843 new file mode 100644 index 00000000000..fa1c93141fa --- /dev/null +++ b/changelog.d/issue-8843 @@ -0,0 +1,15 @@ +synopsis: changes to haddock-project command + +packages: cabal-install +prs: #8919 +issues: #8843 #8958 +description: { + +- cabal haddock-project by default creates self contained + documentation (formerly it required `--local` switch, which is removed). +- `--gen-contents`, `--gen-index`, `--quickjump` and `--hyperlinked-source` + options where removed as they are always passed to haddock. +- Fixes a bug which prevented to use `haddock-project` with + packages containing sublibraries. + +} diff --git a/doc/cabal-commands.rst b/doc/cabal-commands.rst index d30ec438761..a1a820136be 100644 --- a/doc/cabal-commands.rst +++ b/doc/cabal-commands.rst @@ -705,12 +705,8 @@ By default the documentation will be put in ``./haddocks`` folder, this can be modified with the ``--output`` flag. This command supports two primary modes: building a self contained directory -(by specifying ``--local`` flag) or documentation that links to hackage (with -``--hackage`` flag). Both options imply: ``--quickjump``, ``--gen-index``, -``--gen-contents`` and ``--hyperlinked-source``. - -If neither ``--local`` nor ``--hackage`` option is specified a self contained -directory will only be build if ``--html-location`` is not specified. +(which is the default mode) or documentation that links to hackage (with +``--hackage`` flag). In both cases the html index as well as quickjump index will include all terms and types defined in any of the local packages, but not ones that are included