Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .hlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
- ignore: {name: "Functor law", within: [Test.Laws]}
- ignore: {name: "Monoid law, left identity", within: [Test.Laws, UnitTests.Distribution.Utils.NubList]}
- ignore: {name: "Monoid law, right identity", within: [Test.Laws, UnitTests.Distribution.Utils.NubList]}
- ignore: {name: "Replace case with maybe", within: [Distribution.Client.InLibrary]}
- ignore: {name: "Use fmap", within: [Distribution.Client.HttpUtils, Distribution.Simple.SrcDist]}

- group:
Expand Down
6 changes: 3 additions & 3 deletions Cabal-hooks/src/Distribution/Simple/SetupHooks.hs
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ import Data.Map.Strict as Map
A Cabal package with @Hooks@ @build-type@ must define the Haskell module
@SetupHooks@ which defines a value @setupHooks :: 'SetupHooks'@.

These *setup hooks* allow package authors to customise the configuration and
These __setup hooks__ allow package authors to customise the configuration and
building of a package by providing certain hooks that get folded into the
general package configuration and building logic within @Cabal@.

Expand Down Expand Up @@ -359,8 +359,8 @@ following conditions apply:
[N] the rule is new, or
[S] the rule matches with an old rule, and either:

[S1] a file dependency of the rule has been modified/created/deleted, or
a (transitive) rule dependency of the rule is itself stale, or
[S1] a file dependency of the rule has been modified\/created\/deleted,
or a (transitive) rule dependency of the rule is itself stale, or
[S2] the rule is different from the old rule, e.g. the argument stored in
the rule command has changed, or the pointer to the action to run the
rule has changed. (This is determined using the @Eq Rule@ instance.)
Expand Down
4 changes: 2 additions & 2 deletions Cabal/Cabal.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@ library
, directory >= 1.2.7 && < 1.4
, filepath >= 1.4.2 && < 1.6
, pretty >= 1.1.1 && < 1.2
-- segfaults on older macOS versions #11465
, process >= 1.2.1.0 && < 1.6.24 || == 1.6.26.0 || >= 1.6.26.2 && < 1.7
, process >= 1.6.20.0 && < 1.6.24 || == 1.6.26.0 || >= 1.6.26.2 && < 1.7
, time >= 1.4.0.1 && < 1.16

if os(windows)
Expand Down Expand Up @@ -165,6 +164,7 @@ library
Distribution.Simple.UHC
Distribution.Simple.UserHooks
Distribution.Simple.SetupHooks.Errors
Distribution.Simple.SetupHooks.HooksMain
Distribution.Simple.SetupHooks.Internal
Distribution.Simple.SetupHooks.Rule
Distribution.Simple.Utils
Expand Down
111 changes: 65 additions & 46 deletions Cabal/src/Distribution/Simple.hs
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,15 @@ defaultMainWithSetupHooksArgs setupHooks verbHandles =
, hscolourHook = setup_hscolourHook
}
where
preBuildHook =
case SetupHooks.preBuildComponentRules (SetupHooks.buildHooks setupHooks) of
Nothing -> const $ return []
Just pbcRules -> \pbci -> runPreBuildHooks verbHandles pbci pbcRules
postBuildHook =
case SetupHooks.postBuildComponentHook (SetupHooks.buildHooks setupHooks) of
Nothing -> const $ return ()
Just hk -> hk

setup_confHook
:: (GenericPackageDescription, HookedBuildInfo)
-> ConfigFlags
Expand All @@ -188,13 +197,14 @@ defaultMainWithSetupHooksArgs setupHooks verbHandles =
-> BuildFlags
-> IO ()
setup_buildHook pkg_descr lbi hooks flags =
build_setupHooks
(SetupHooks.buildHooks setupHooks)
verbHandles
pkg_descr
lbi
flags
(allSuffixHandlers hooks)
void $
build_setupHooks
(preBuildHook, postBuildHook)
verbHandles
pkg_descr
lbi
flags
(allSuffixHandlers hooks)

setup_copyHook
:: PackageDescription
Expand Down Expand Up @@ -229,14 +239,15 @@ defaultMainWithSetupHooksArgs setupHooks verbHandles =
-> [String]
-> IO ()
setup_replHook pkg_descr lbi hooks flags args =
repl_setupHooks
(SetupHooks.buildHooks setupHooks)
verbHandles
pkg_descr
lbi
flags
(allSuffixHandlers hooks)
args
void $
repl_setupHooks
preBuildHook
verbHandles
pkg_descr
lbi
flags
(allSuffixHandlers hooks)
args

setup_haddockHook
:: PackageDescription
Expand All @@ -245,13 +256,14 @@ defaultMainWithSetupHooksArgs setupHooks verbHandles =
-> HaddockFlags
-> IO ()
setup_haddockHook pkg_descr lbi hooks flags =
haddock_setupHooks
(SetupHooks.buildHooks setupHooks)
verbHandles
pkg_descr
lbi
(allSuffixHandlers hooks)
flags
void $
haddock_setupHooks
preBuildHook
verbHandles
pkg_descr
lbi
(allSuffixHandlers hooks)
flags

setup_hscolourHook
:: PackageDescription
Expand All @@ -260,13 +272,14 @@ defaultMainWithSetupHooksArgs setupHooks verbHandles =
-> HscolourFlags
-> IO ()
setup_hscolourHook pkg_descr lbi hooks flags =
hscolour_setupHooks
(SetupHooks.buildHooks setupHooks)
verbHandles
pkg_descr
lbi
(allSuffixHandlers hooks)
flags
void $
hscolour_setupHooks
preBuildHook
verbHandles
pkg_descr
lbi
(allSuffixHandlers hooks)
flags

-- | A customizable version of 'defaultMain'.
defaultMainWithHooks :: UserHooks -> IO ()
Expand Down Expand Up @@ -930,12 +943,16 @@ simpleUserHooksWithHandles verbHandles =
, testHook = defaultTestHook verbHandles
, benchHook = defaultBenchHook verbHandles
, cleanHook = \p _ _ f -> clean verbHandles p f
, hscolourHook = \p l h f -> hscolour_setupHooks SetupHooks.noBuildHooks verbHandles p l (allSuffixHandlers h) f
, haddockHook = \p l h f -> haddock_setupHooks SetupHooks.noBuildHooks verbHandles p l (allSuffixHandlers h) f
, hscolourHook = \p l h f -> void $ hscolour_setupHooks noBuildHooks verbHandles p l (allSuffixHandlers h) f
, haddockHook = \p l h f -> void $ haddock_setupHooks noBuildHooks verbHandles p l (allSuffixHandlers h) f
, regHook = defaultRegHook verbHandles
, unregHook = \p l _ f -> unregisterWithHandles verbHandles p l f
}
where
noBuildHooks pbci@(SetupHooks.PreBuildComponentInputs{SetupHooks.localBuildInfo = lbi}) =
builtinPreBuildHooks
(buildType (localPkgDescr lbi))
pbci
finalChecks _args flags pkg_descr lbi =
checkForeignDeps pkg_descr lbi (modifyVerbosityFlags lessVerbose verbosity)
where
Expand Down Expand Up @@ -1155,13 +1172,14 @@ defaultBuildHook
-> BuildFlags
-> IO ()
defaultBuildHook verbHandles pkg_descr localbuildinfo hooks flags =
build_setupHooks
SetupHooks.noBuildHooks
verbHandles
pkg_descr
localbuildinfo
flags
(allSuffixHandlers hooks)
void $
build_setupHooks
(builtinPreBuildHooks (buildType pkg_descr), const $ pure ())
verbHandles
pkg_descr
localbuildinfo
flags
(allSuffixHandlers hooks)

defaultReplHook
:: VerbosityHandles
Expand All @@ -1172,14 +1190,15 @@ defaultReplHook
-> [String]
-> IO ()
defaultReplHook verbHandles pkg_descr localbuildinfo hooks flags args =
repl_setupHooks
SetupHooks.noBuildHooks
verbHandles
pkg_descr
localbuildinfo
flags
(allSuffixHandlers hooks)
args
void $
repl_setupHooks
(builtinPreBuildHooks (buildType pkg_descr))
verbHandles
pkg_descr
localbuildinfo
flags
(allSuffixHandlers hooks)
args

defaultRegHook
:: VerbosityHandles
Expand Down
Loading
Loading