Skip to content

Commit c245c8e

Browse files
committed
cabal haddock: imply dependencies, but gentler
1 parent 01217ac commit c245c8e

File tree

9 files changed

+32
-16
lines changed

9 files changed

+32
-16
lines changed

cabal-install/cabal-install.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ library
209209
Distribution.Client.Types
210210
Distribution.Client.Types.AllowNewer
211211
Distribution.Client.Types.BuildResults
212+
Distribution.Client.Types.CurrentCommand
212213
Distribution.Client.Types.ConfiguredId
213214
Distribution.Client.Types.ConfiguredPackage
214215
Distribution.Client.Types.Credentials

cabal-install/src/Distribution/Client/CmdHaddock.hs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import Distribution.Client.ProjectPlanning
3434
)
3535
import Distribution.Client.Setup
3636
( GlobalFlags
37-
, InstallFlags (..)
3837
)
3938
import Distribution.Client.TargetProblem
4039
( TargetProblem (..)
@@ -150,9 +149,7 @@ haddockAction relFlags targetStrings globalFlags = do
150149

151150
let
152151
verbosity = cfgVerbosity normal flags
153-
installDoc = fromFlagOrDefault True (installDocumentation installFlags)
154-
flags' = flags{installFlags = installFlags{installDocumentation = Flag installDoc}}
155-
cliConfig = commandLineFlagsToProjectConfig globalFlags flags' mempty -- ClientInstallFlags, not needed here
152+
cliConfig = commandLineFlagsToProjectConfig globalFlags flags mempty -- ClientInstallFlags, not needed here
156153
projCtx <- establishProjectBaseContext verbosity cliConfig HaddockCommand
157154

158155
let relBaseCtx@ProjectBaseContext{projectConfig = relProjectConfig}

cabal-install/src/Distribution/Client/Install.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1263,7 +1263,7 @@ regenerateHaddockIndex
12631263
| otherwise = return ()
12641264
where
12651265
haddockIndexFileIsRequested =
1266-
fromFlag (installDocumentation installFlags)
1266+
fromFlagOrDefault False (installDocumentation installFlags)
12671267
&& isJust (flagToMaybe (installHaddockIndex installFlags))
12681268

12691269
-- We want to regenerate the index if some new documentation was actually
@@ -1889,7 +1889,7 @@ installUnpackedPackage
18891889

18901890
buildFlags vers =
18911891
emptyBuildFlags{buildCommonFlags = commonFlags vers}
1892-
shouldHaddock = fromFlag (installDocumentation installFlags)
1892+
shouldHaddock = fromFlagOrDefault False (installDocumentation installFlags)
18931893
haddockFlags' vers =
18941894
haddockFlags{haddockCommonFlags = commonFlags vers}
18951895
testsEnabled =

cabal-install/src/Distribution/Client/ProjectOrchestration.hs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ import Distribution.Client.TargetSelector
135135
, reportTargetSelectorProblems
136136
)
137137
import Distribution.Client.Types
138-
( DocsResult (..)
138+
( CurrentCommand (..)
139+
, DocsResult (..)
139140
, GenericReadyPackage (..)
140141
, PackageLocation (..)
141142
, PackageSpecifier (..)
@@ -230,11 +231,6 @@ import System.Posix.Signals (sigKILL, sigSEGV)
230231

231232
#endif
232233

233-
-- | Tracks what command is being executed, because we need to hide this somewhere
234-
-- for cases that need special handling (usually for error reporting).
235-
data CurrentCommand = InstallCommand | HaddockCommand | BuildCommand | ReplCommand | OtherCommand
236-
deriving (Show, Eq)
237-
238234
-- | This holds the context of a project prior to solving: the content of the
239235
-- @cabal.project@, @cabal/config@ and all the local package @.cabal@ files.
240236
data ProjectBaseContext = ProjectBaseContext
@@ -286,6 +282,7 @@ establishProjectBaseContextWithRoot verbosity cliConfig projectRoot currentComma
286282
httpTransport
287283
distDirLayout
288284
cliConfig
285+
currentCommand
289286

290287
let ProjectConfigBuildOnly
291288
{ projectConfigLogsDir

cabal-install/src/Distribution/Client/ProjectPlanning.hs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ rebuildProjectConfig
354354
-> HttpTransport
355355
-> DistDirLayout
356356
-> ProjectConfig
357+
-> CurrentCommand
357358
-> IO
358359
( ProjectConfig
359360
, [PackageSpecifier UnresolvedSourcePackage]
@@ -368,7 +369,8 @@ rebuildProjectConfig
368369
, distProjectCacheDirectory
369370
, distProjectFile
370371
}
371-
cliConfig = do
372+
cliConfig
373+
currentCommand = do
372374
progsearchpath <- liftIO $ getSystemSearchPath
373375

374376
let fileMonitorProjectConfig = newFileMonitor (distProjectCacheFile "config")
@@ -415,14 +417,23 @@ rebuildProjectConfig
415417
notice (verboseStderr verbosity) . render . vcat $
416418
text "Configuration is affected by the following files:" : configfiles
417419

418-
return (projectConfig <> cliConfig, localPackages)
420+
return (commandDefaults currentCommand <> projectConfig <> cliConfig, localPackages)
419421
where
420422
ProjectConfigShared{projectConfigHcFlavor, projectConfigHcPath, projectConfigHcPkg, projectConfigIgnoreProject, projectConfigConfigFile} =
421423
projectConfigShared cliConfig
422424

423425
PackageConfig{packageConfigProgramPaths, packageConfigProgramPathExtra} =
424426
projectConfigLocalPackages cliConfig
425427

428+
-- Some commands may require special defaults
429+
commandDefaults HaddockCommand =
430+
-- `cabal haddock` emplies --enable-documentation, #7462
431+
mempty
432+
{ projectConfigAllPackages = mempty{packageConfigDocumentation = pure True}
433+
, projectConfigLocalPackages = mempty{packageConfigDocumentation = pure True}
434+
}
435+
commandDefaults _ = mempty
436+
426437
-- Read the cabal.project (or implicit config) and combine it with
427438
-- arguments from the command line
428439
--

cabal-install/src/Distribution/Client/Setup.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2275,7 +2275,7 @@ instance Binary InstallFlags
22752275
defaultInstallFlags :: InstallFlags
22762276
defaultInstallFlags =
22772277
InstallFlags
2278-
{ installDocumentation = Flag False
2278+
{ installDocumentation = mempty
22792279
, installHaddockIndex = Flag docIndexFile
22802280
, installDest = Flag Cabal.NoCopyDest
22812281
, installDryRun = Flag False

cabal-install/src/Distribution/Client/Types.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
-- Various common data types for the entire cabal-install system
1818
module Distribution.Client.Types
1919
( module Distribution.Client.Types.AllowNewer
20+
, module Distribution.Client.Types.CurrentCommand
2021
, module Distribution.Client.Types.ConfiguredId
2122
, module Distribution.Client.Types.ConfiguredPackage
2223
, module Distribution.Client.Types.BuildResults
@@ -31,6 +32,7 @@ module Distribution.Client.Types
3132

3233
import Distribution.Client.Types.AllowNewer
3334
import Distribution.Client.Types.BuildResults
35+
import Distribution.Client.Types.CurrentCommand
3436
import Distribution.Client.Types.ConfiguredId
3537
import Distribution.Client.Types.ConfiguredPackage
3638
import Distribution.Client.Types.PackageLocation
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module Distribution.Client.Types.CurrentCommand where
2+
3+
-- | Tracks what command is being executed, because we need to hide this somewhere
4+
-- for cases that need special handling (usually for error reporting).
5+
data CurrentCommand = InstallCommand | HaddockCommand | BuildCommand | ReplCommand | OtherCommand
6+
deriving (Show, Eq)

cabal-install/tests/IntegrationTests2.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ import Distribution.Client.Targets
3333
, UserConstraintScope (UserAnyQualifier)
3434
)
3535
import Distribution.Client.Types
36-
( PackageLocation (..)
36+
( CurrentCommand (..)
37+
, PackageLocation (..)
3738
, PackageSpecifier (..)
3839
, UnresolvedSourcePackage
3940
)
@@ -2186,6 +2187,7 @@ configureProject testdir cliConfig = do
21862187
httpTransport
21872188
distDirLayout
21882189
cliConfig
2190+
OtherCommand
21892191

21902192
let buildSettings =
21912193
resolveBuildTimeSettings

0 commit comments

Comments
 (0)