Skip to content
Snippets Groups Projects
Commit fb7a840d authored by Duncan Coutts's avatar Duncan Coutts
Browse files

Use the version macros when building Setup.hs

The design called for allowing deps to be specified, and for the
Setup.hs to be able to use the same version macros as in other code.
This patch completes that second part.
parent 17959b8c
No related branches found
No related tags found
No related merge requests found
...@@ -46,6 +46,8 @@ import Distribution.Simple.Compiler ...@@ -46,6 +46,8 @@ import Distribution.Simple.Compiler
( Compiler(compilerId), compilerFlavor, PackageDB(..), PackageDBStack ) ( Compiler(compilerId), compilerFlavor, PackageDB(..), PackageDBStack )
import Distribution.Simple.PreProcess import Distribution.Simple.PreProcess
( runSimplePreProcessor, ppUnlit ) ( runSimplePreProcessor, ppUnlit )
import Distribution.Simple.Build.Macros
( generatePackageVersionMacros )
import Distribution.Simple.Program import Distribution.Simple.Program
( ProgramConfiguration, emptyProgramConfiguration ( ProgramConfiguration, emptyProgramConfiguration
, getProgramSearchPath, getDbProgramOutput, runDbProgram, ghcProgram , getProgramSearchPath, getDbProgramOutput, runDbProgram, ghcProgram
...@@ -57,6 +59,7 @@ import Distribution.Simple.Program.Run ...@@ -57,6 +59,7 @@ import Distribution.Simple.Program.Run
import qualified Distribution.Simple.Program.Strip as Strip import qualified Distribution.Simple.Program.Strip as Strip
import Distribution.Simple.BuildPaths import Distribution.Simple.BuildPaths
( defaultDistPref, exeExtension ) ( defaultDistPref, exeExtension )
import Distribution.Simple.Command import Distribution.Simple.Command
( CommandUI(..), commandShowOptions ) ( CommandUI(..), commandShowOptions )
import Distribution.Simple.Program.GHC import Distribution.Simple.Program.GHC
...@@ -548,7 +551,16 @@ externalSetupMethod verbosity options pkg bt mkargs = do ...@@ -548,7 +551,16 @@ externalSetupMethod verbosity options pkg bt mkargs = do
_ -> (ghcProgram, ["-threaded"]) _ -> (ghcProgram, ["-threaded"])
cabalDep = maybe [] (\ipkgid -> [(ipkgid, cabalPkgid)]) cabalDep = maybe [] (\ipkgid -> [(ipkgid, cabalPkgid)])
maybeCabalLibInstalledPkgId maybeCabalLibInstalledPkgId
-- We do a few things differently once packages opt-in and declare
-- a custom-settup stanza. In particular we then enforce the deps
-- specified, but also let the Setup.hs use the version macros.
newPedanticDeps = useDependenciesExclusive options'
selectedDeps
| newPedanticDeps = useDependencies options'
| otherwise = useDependencies options' ++ cabalDep
addRenaming (ipid, pid) = (ipid, pid, defaultRenaming) addRenaming (ipid, pid) = (ipid, pid, defaultRenaming)
cppMacrosFile = setupDir </> "setup_macros.h"
ghcOptions = mempty { ghcOptions = mempty {
ghcOptVerbosity = Flag verbosity ghcOptVerbosity = Flag verbosity
, ghcOptMode = Flag GhcModeMake , ghcOptMode = Flag GhcModeMake
...@@ -559,16 +571,17 @@ externalSetupMethod verbosity options pkg bt mkargs = do ...@@ -559,16 +571,17 @@ externalSetupMethod verbosity options pkg bt mkargs = do
, ghcOptSourcePathClear = Flag True , ghcOptSourcePathClear = Flag True
, ghcOptSourcePath = toNubListR [workingDir] , ghcOptSourcePath = toNubListR [workingDir]
, ghcOptPackageDBs = usePackageDB options'' , ghcOptPackageDBs = usePackageDB options''
, ghcOptHideAllPackages = Flag (useDependenciesExclusive options') , ghcOptHideAllPackages = Flag newPedanticDeps
, ghcOptPackages = toNubListR $ , ghcOptCabal = Flag newPedanticDeps
map addRenaming $ , ghcOptPackages = toNubListR $ map addRenaming selectedDeps
if useDependenciesExclusive options' , ghcOptCppIncludes = toNubListR [ cppMacrosFile
then useDependencies options' | newPedanticDeps ]
else useDependencies options'
++ cabalDep
, ghcOptExtra = toNubListR extraOpts , ghcOptExtra = toNubListR extraOpts
} }
let ghcCmdLine = renderGhcOptions compiler ghcOptions let ghcCmdLine = renderGhcOptions compiler ghcOptions
when newPedanticDeps $
rewriteFile cppMacrosFile (generatePackageVersionMacros
[ pid | (_ipid, pid) <- selectedDeps ])
case useLoggingHandle options of case useLoggingHandle options of
Nothing -> runDbProgram verbosity program conf ghcCmdLine Nothing -> runDbProgram verbosity program conf ghcCmdLine
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment