Skip to content

Commit 144383e

Browse files
alt-romesMikolaj
authored andcommitted
Cabal: Don't pass -D__HADDOCK_VERSION__ to haddock
We no longer define the `__HADDOCK_VERSION__` macro when invoking GHC through Haddock, since doing so essentially guarantees recompilation during documentation generation. We audited all uses of `__HADDOCK_VERSION__` in hackage, ensuring there was a reasonable path forward to migrate away from using `__HADDOCK_VERSION__` for each, while generating the same documentation as it did before. If you are a user of `__HADDOCK_VERSION__`, please take a look at the discussion in #9177 and reach out to us if your use case is not covered. Reverts the version-cpp flag introduced in the previous commit to avoid a workaround. Instead, we get rid of the problem (`__HADDOCK_VERSION__`) at its root. See the discussion in #9177
1 parent 80f0a65 commit 144383e

File tree

19 files changed

+30
-116
lines changed

19 files changed

+30
-116
lines changed

Cabal/src/Distribution/Simple/Haddock.hs

Lines changed: 4 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ import Distribution.Types.ComponentLocalBuildInfo
8383
import Distribution.Types.ExposedModule
8484
import Distribution.Types.LocalBuildInfo
8585
import Distribution.Types.TargetInfo
86-
import Distribution.Utils.NubList
8786
import Distribution.Utils.Path hiding
8887
( Dir
8988
)
@@ -92,8 +91,6 @@ import qualified Distribution.Utils.ShortText as ShortText
9291
import Distribution.Verbosity
9392
import Distribution.Version
9493

95-
import Language.Haskell.Extension
96-
9794
import Control.Monad
9895
import Data.Either (rights)
9996
import System.Directory (doesDirectoryExist, doesFileExist)
@@ -329,11 +326,6 @@ haddock_setupHooks
329326
[] -> allTargetsInBuildOrder' pkg_descr lbi
330327
_ -> targets
331328

332-
version' =
333-
if flag haddockVersionCPP
334-
then Just version
335-
else Nothing
336-
337329
mtmp
338330
| version >= mkVersion [2, 28, 0] = const Nothing
339331
| otherwise = Just
@@ -380,7 +372,6 @@ haddock_setupHooks
380372
lbi'
381373
clbi
382374
htmlTemplate
383-
version'
384375
exe
385376
let exeArgs' = commonArgs `mappend` exeArgs
386377
runHaddock
@@ -420,7 +411,6 @@ haddock_setupHooks
420411
lbi'
421412
clbi
422413
htmlTemplate
423-
version'
424414
lib
425415
let libArgs' = commonArgs `mappend` libArgs
426416
runHaddock verbosity mbWorkDir tmpFileOpts comp platform haddockProg True libArgs'
@@ -467,7 +457,6 @@ haddock_setupHooks
467457
lbi'
468458
clbi
469459
htmlTemplate
470-
version'
471460
flib
472461
let libArgs' = commonArgs `mappend` flibArgs
473462
runHaddock verbosity mbWorkDir tmpFileOpts comp platform haddockProg True libArgs'
@@ -613,17 +602,13 @@ mkHaddockArgs
613602
-> ComponentLocalBuildInfo
614603
-> Maybe PathTemplate
615604
-- ^ template for HTML location
616-
-> Maybe Version
617-
-- ^ 'Nothing' if the user requested not to define the __HADDOCK_VERSION__
618-
-- macro
619605
-> [SymbolicPath Pkg File]
620606
-> BuildInfo
621607
-> IO HaddockArgs
622-
mkHaddockArgs verbosity mtmp lbi clbi htmlTemplate haddockVersion inFiles bi = do
608+
mkHaddockArgs verbosity mtmp lbi clbi htmlTemplate inFiles bi = do
623609
ifaceArgs <- getInterfaces verbosity lbi clbi htmlTemplate
624610
let vanillaOpts' =
625611
componentGhcOptions normal lbi bi clbi (buildDir lbi)
626-
`mappend` getGhcCppOpts haddockVersion bi
627612
vanillaOpts =
628613
vanillaOpts'
629614
{ -- Starting with Haddock 2.28, we no longer want to run Haddock's
@@ -635,7 +620,6 @@ mkHaddockArgs verbosity mtmp lbi clbi htmlTemplate haddockVersion inFiles bi = d
635620
, ghcOptHiDir = maybe (ghcOptHiDir vanillaOpts') (toFlag . coerceSymbolicPath) mtmp
636621
, ghcOptStubDir = maybe (ghcOptStubDir vanillaOpts') (toFlag . coerceSymbolicPath) mtmp
637622
}
638-
`mappend` getGhcCppOpts haddockVersion bi
639623
sharedOpts =
640624
vanillaOpts
641625
{ ghcOptDynLinkMode = toFlag GhcDynamicOnly
@@ -668,12 +652,9 @@ fromLibrary
668652
-> ComponentLocalBuildInfo
669653
-> Maybe PathTemplate
670654
-- ^ template for HTML location
671-
-> Maybe Version
672-
-- ^ 'Nothing' if the user requested not to define the __HADDOCK_VERSION__
673-
-- macro
674655
-> Library
675656
-> IO HaddockArgs
676-
fromLibrary verbosity mtmp lbi clbi htmlTemplate haddockVersion lib = do
657+
fromLibrary verbosity mtmp lbi clbi htmlTemplate lib = do
677658
inFiles <- map snd `fmap` getLibSourceFiles verbosity lbi lib clbi
678659
args <-
679660
mkHaddockArgs
@@ -682,7 +663,6 @@ fromLibrary verbosity mtmp lbi clbi htmlTemplate haddockVersion lib = do
682663
lbi
683664
clbi
684665
htmlTemplate
685-
haddockVersion
686666
inFiles
687667
(libBuildInfo lib)
688668
return
@@ -699,12 +679,9 @@ fromExecutable
699679
-> ComponentLocalBuildInfo
700680
-> Maybe PathTemplate
701681
-- ^ template for HTML location
702-
-> Maybe Version
703-
-- ^ 'Nothing' if the user requested not to define the __HADDOCK_VERSION__
704-
-- macro
705682
-> Executable
706683
-> IO HaddockArgs
707-
fromExecutable verbosity mtmp lbi clbi htmlTemplate haddockVersion exe = do
684+
fromExecutable verbosity mtmp lbi clbi htmlTemplate exe = do
708685
inFiles <- map snd `fmap` getExeSourceFiles verbosity lbi exe clbi
709686
args <-
710687
mkHaddockArgs
@@ -713,7 +690,6 @@ fromExecutable verbosity mtmp lbi clbi htmlTemplate haddockVersion exe = do
713690
lbi
714691
clbi
715692
htmlTemplate
716-
haddockVersion
717693
inFiles
718694
(buildInfo exe)
719695
return
@@ -731,12 +707,9 @@ fromForeignLib
731707
-> ComponentLocalBuildInfo
732708
-> Maybe PathTemplate
733709
-- ^ template for HTML location
734-
-> Maybe Version
735-
-- ^ 'Nothing' if the user requested not to define the __HADDOCK_VERSION__
736-
-- macro
737710
-> ForeignLib
738711
-> IO HaddockArgs
739-
fromForeignLib verbosity mtmp lbi clbi htmlTemplate haddockVersion flib = do
712+
fromForeignLib verbosity mtmp lbi clbi htmlTemplate flib = do
740713
inFiles <- map snd `fmap` getFLibSourceFiles verbosity lbi flib clbi
741714
args <-
742715
mkHaddockArgs
@@ -745,7 +718,6 @@ fromForeignLib verbosity mtmp lbi clbi htmlTemplate haddockVersion flib = do
745718
lbi
746719
clbi
747720
htmlTemplate
748-
haddockVersion
749721
inFiles
750722
(foreignLibBuildInfo flib)
751723
return
@@ -796,35 +768,6 @@ getReexports LibComponentLocalBuildInfo{componentExposedModules = mods} =
796768
mapMaybe exposedReexport mods
797769
getReexports _ = []
798770

799-
getGhcCppOpts
800-
:: Maybe Version
801-
-- ^ 'Nothing' if the user requested not to define the __HADDOCK_VERSION__
802-
-- macro
803-
-> BuildInfo
804-
-> GhcOptions
805-
getGhcCppOpts haddockVersion bi =
806-
mempty
807-
{ ghcOptExtensions = toNubListR [EnableExtension CPP | needsCpp]
808-
, ghcOptCppOptions = defines
809-
}
810-
where
811-
needsCpp = EnableExtension CPP `elem` usedExtensions bi
812-
defines =
813-
[ "-D__HADDOCK_VERSION__=" ++ show vn
814-
| Just vn <- [versionInt . versionNumbers <$> haddockVersion]
815-
]
816-
where
817-
-- For some list xs = [x, y, z ...], versionInt xs results in
818-
-- x * 1000 + y * 10 + z. E.g.:
819-
-- >>> versionInt [2, 29, 0]
820-
-- 2290
821-
-- >>> versionInt [3, 4]
822-
-- 3040
823-
-- >>> versionInt []
824-
-- 0
825-
versionInt :: [Int] -> Int
826-
versionInt = foldr ((+) . uncurry (*)) 0 . zip [1000, 10, 1]
827-
828771
getGhcLibDir
829772
:: Verbosity
830773
-> LocalBuildInfo

Cabal/src/Distribution/Simple/Setup/Haddock.hs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ data HaddockFlags = HaddockFlags
115115
, haddockBaseUrl :: Flag String
116116
, haddockResourcesDir :: Flag String
117117
, haddockOutputDir :: Flag FilePath
118-
, haddockVersionCPP :: Flag Bool
119118
}
120119
deriving (Show, Generic, Typeable)
121120

@@ -171,7 +170,6 @@ defaultHaddockFlags =
171170
, haddockBaseUrl = NoFlag
172171
, haddockResourcesDir = NoFlag
173172
, haddockOutputDir = NoFlag
174-
, haddockVersionCPP = Flag False
175173
}
176174

177175
haddockCommand :: CommandUI HaddockFlags
@@ -380,13 +378,6 @@ haddockOptions showOrParseArgs =
380378
haddockOutputDir
381379
(\v flags -> flags{haddockOutputDir = v})
382380
(reqArgFlag "DIR")
383-
, option
384-
""
385-
["version-cpp"]
386-
"Define the __HADDOCK_VERSION__ macro when invoking GHC through Haddock. This will likely trigger recompilation during documentation generation."
387-
haddockVersionCPP
388-
(\v flags -> flags{haddockVersionCPP = v})
389-
trueArg
390381
]
391382

392383
emptyHaddockFlags :: HaddockFlags
@@ -451,7 +442,6 @@ data HaddockProjectFlags = HaddockProjectFlags
451442
, -- haddockBaseUrl is not supported, a fixed value is provided
452443
haddockProjectResourcesDir :: Flag String
453444
, haddockProjectOutputDir :: Flag FilePath
454-
, haddockProjectVersionCPP :: Flag Bool
455445
}
456446
deriving (Show, Generic, Typeable)
457447

@@ -477,7 +467,6 @@ defaultHaddockProjectFlags =
477467
, haddockProjectResourcesDir = NoFlag
478468
, haddockProjectOutputDir = NoFlag
479469
, haddockProjectInterfaces = NoFlag
480-
, haddockProjectVersionCPP = Flag False
481470
}
482471

483472
haddockProjectCommand :: CommandUI HaddockProjectFlags
@@ -631,13 +620,6 @@ haddockProjectOptions _showOrParseArgs =
631620
haddockProjectOutputDir
632621
(\v flags -> flags{haddockProjectOutputDir = v})
633622
(reqArgFlag "DIR")
634-
, option
635-
""
636-
["version-cpp"]
637-
"Define the __HADDOCK_VERSION__ macro when invoking GHC through Haddock. This will likely trigger recompilation during documentation generation."
638-
haddockProjectVersionCPP
639-
(\v flags -> flags{haddockProjectVersionCPP = v})
640-
trueArg
641623
]
642624

643625
emptyHaddockProjectFlags :: HaddockProjectFlags

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ haddockProjectAction flags _extraArgs globalFlags = do
150150
, haddockKeepTempFiles = haddockProjectKeepTempFiles flags
151151
, haddockResourcesDir = haddockProjectResourcesDir flags
152152
, haddockOutputDir = haddockProjectOutputDir flags
153-
, haddockVersionCPP = haddockProjectVersionCPP flags
154153
}
155154
nixFlags =
156155
(commandDefaultFlags CmdHaddock.haddockCommand)

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,6 @@ instance Semigroup SavedConfig where
632632
, haddockBaseUrl = combine haddockBaseUrl
633633
, haddockResourcesDir = combine haddockResourcesDir
634634
, haddockOutputDir = combine haddockOutputDir
635-
, haddockVersionCPP = combine haddockVersionCPP
636635
}
637636
where
638637
combine = combine' savedHaddockFlags

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,6 @@ data PackageHashConfigInputs = PackageHashConfigInputs
240240
, pkgHashHaddockBaseUrl :: Maybe String
241241
, pkgHashHaddockResourcesDir :: Maybe String
242242
, pkgHashHaddockOutputDir :: Maybe FilePath
243-
, pkgHashHaddockVersionCPP :: Bool
244243
-- TODO: [required eventually] pkgHashToolsVersions ?
245244
-- TODO: [required eventually] pkgHashToolsExtraOptions ?
246245
}
@@ -350,7 +349,6 @@ renderPackageHashInputs
350349
, opt "haddock-base-url" Nothing (fromMaybe "") pkgHashHaddockBaseUrl
351350
, opt "haddock-resources-dir" Nothing (fromMaybe "") pkgHashHaddockResourcesDir
352351
, opt "haddock-output-dir" Nothing (fromMaybe "") pkgHashHaddockOutputDir
353-
, opt "haddock-version-cpp" False prettyShow pkgHashHaddockVersionCPP
354352
]
355353
++ Map.foldrWithKey (\prog args acc -> opt (prog ++ "-options") [] unwords args : acc) [] pkgHashProgramArgs
356354
where

cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,6 @@ convertLegacyPerPackageFlags
823823
, haddockBaseUrl = packageConfigHaddockBaseUrl
824824
, haddockResourcesDir = packageConfigHaddockResourcesDir
825825
, haddockOutputDir = packageConfigHaddockOutputDir
826-
, haddockVersionCPP = packageConfigHaddockVersionCPP
827826
} = haddockFlags
828827

829828
TestFlags
@@ -1221,7 +1220,6 @@ convertToLegacyPerPackageConfig PackageConfig{..} =
12211220
, haddockBaseUrl = packageConfigHaddockBaseUrl
12221221
, haddockResourcesDir = packageConfigHaddockResourcesDir
12231222
, haddockOutputDir = packageConfigHaddockOutputDir
1224-
, haddockVersionCPP = packageConfigHaddockVersionCPP
12251223
}
12261224

12271225
testFlags =
@@ -1623,7 +1621,6 @@ legacyPackageConfigFieldDescrs =
16231621
, "base-url"
16241622
, "resources-dir"
16251623
, "output-dir"
1626-
, "version-cpp"
16271624
]
16281625
. commandOptionsToFields
16291626
)

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,6 @@ data PackageConfig = PackageConfig
307307
, packageConfigHaddockBaseUrl :: Flag String -- TODO: [required eventually] use this
308308
, packageConfigHaddockResourcesDir :: Flag String -- TODO: [required eventually] use this
309309
, packageConfigHaddockOutputDir :: Flag FilePath -- TODO: [required eventually] use this
310-
, packageConfigHaddockVersionCPP :: Flag Bool -- TODO: [required eventually] use this
311310
, packageConfigHaddockForHackage :: Flag HaddockTarget
312311
, -- Test options
313312
packageConfigTestHumanLog :: Flag PathTemplate

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2280,7 +2280,6 @@ elaborateInstallPlan
22802280
elabHaddockBaseUrl = perPkgOptionMaybe pkgid packageConfigHaddockBaseUrl
22812281
elabHaddockResourcesDir = perPkgOptionMaybe pkgid packageConfigHaddockResourcesDir
22822282
elabHaddockOutputDir = perPkgOptionMaybe pkgid packageConfigHaddockOutputDir
2283-
elabHaddockVersionCPP = perPkgOptionFlag pkgid False packageConfigHaddockVersionCPP
22842283

22852284
elabTestMachineLog = perPkgOptionMaybe pkgid packageConfigTestMachineLog
22862285
elabTestHumanLog = perPkgOptionMaybe pkgid packageConfigTestHumanLog
@@ -4148,7 +4147,6 @@ setupHsHaddockFlags
41484147
, haddockBaseUrl = maybe mempty toFlag elabHaddockBaseUrl
41494148
, haddockResourcesDir = maybe mempty toFlag elabHaddockResourcesDir
41504149
, haddockOutputDir = maybe mempty toFlag elabHaddockOutputDir
4151-
, haddockVersionCPP = maybe mempty toFlag elabHaddockVersionCPP
41524150
}
41534151

41544152
setupHsHaddockArgs :: ElaboratedConfiguredPackage -> [String]
@@ -4307,7 +4305,6 @@ packageHashConfigInputs shared@ElaboratedSharedConfig{..} pkg =
43074305
, pkgHashHaddockBaseUrl = elabHaddockBaseUrl
43084306
, pkgHashHaddockResourcesDir = elabHaddockResourcesDir
43094307
, pkgHashHaddockOutputDir = elabHaddockOutputDir
4310-
, pkgHashHaddockVersionCPP = elabHaddockVersionCPP
43114308
}
43124309
where
43134310
ElaboratedConfiguredPackage{..} = normaliseConfiguredPackage shared pkg

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,6 @@ data ElaboratedConfiguredPackage = ElaboratedConfiguredPackage
302302
, elabHaddockBaseUrl :: Maybe String
303303
, elabHaddockResourcesDir :: Maybe String
304304
, elabHaddockOutputDir :: Maybe FilePath
305-
, elabHaddockVersionCPP :: Bool
306305
, elabTestMachineLog :: Maybe PathTemplate
307306
, elabTestHumanLog :: Maybe PathTemplate
308307
, elabTestShowDetails :: Maybe TestShowDetails

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2437,7 +2437,6 @@ haddockOptions showOrParseArgs =
24372437
, "base-url"
24382438
, "resources-dir"
24392439
, "output-dir"
2440-
, "version-cpp"
24412440
]
24422441
]
24432442

0 commit comments

Comments
 (0)