diff --git a/Cabal/Distribution/Simple/Configure.hs b/Cabal/Distribution/Simple/Configure.hs index a34ac7512a58ff549a7d7d0167989f3679a723e0..3b95144236492226990bf02230032d93ea9d27ad 100644 --- a/Cabal/Distribution/Simple/Configure.hs +++ b/Cabal/Distribution/Simple/Configure.hs @@ -59,6 +59,7 @@ module Distribution.Simple.Configure (configure, localBuildInfoFile, getInstalledPackages, getPackageDBContents, configCompiler, configCompilerAux, + configCompilerEx, configCompilerAuxEx, ccLdOptionsBuildInfo, checkForeignDeps, interpretPackageDbFlags, @@ -302,7 +303,7 @@ configure (pkg_descr0, pbi) cfg (configPackageDBs cfg) -- detect compiler - (comp, compPlatform, programsConfig') <- configCompiler + (comp, compPlatform, programsConfig') <- configCompilerEx (flagToMaybe $ configHcFlavor cfg) (flagToMaybe $ configHcPath cfg) (flagToMaybe $ configHcPkg cfg) programsConfig (lessVerbose verbosity) @@ -853,20 +854,21 @@ ccLdOptionsBuildInfo cflags ldflags = -- ----------------------------------------------------------------------------- -- Determining the compiler details -configCompilerAux :: ConfigFlags -> IO (Compiler, Platform, ProgramConfiguration) -configCompilerAux cfg = configCompiler (flagToMaybe $ configHcFlavor cfg) - (flagToMaybe $ configHcPath cfg) - (flagToMaybe $ configHcPkg cfg) - programsConfig - (fromFlag (configVerbosity cfg)) +configCompilerAuxEx :: ConfigFlags + -> IO (Compiler, Platform, ProgramConfiguration) +configCompilerAuxEx cfg = configCompilerEx (flagToMaybe $ configHcFlavor cfg) + (flagToMaybe $ configHcPath cfg) + (flagToMaybe $ configHcPkg cfg) + programsConfig + (fromFlag (configVerbosity cfg)) where programsConfig = mkProgramsConfig cfg defaultProgramConfiguration -configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath - -> ProgramConfiguration -> Verbosity - -> IO (Compiler, Platform, ProgramConfiguration) -configCompiler Nothing _ _ _ _ = die "Unknown compiler" -configCompiler (Just hcFlavor) hcPath hcPkg conf verbosity = do +configCompilerEx :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath + -> ProgramConfiguration -> Verbosity + -> IO (Compiler, Platform, ProgramConfiguration) +configCompilerEx Nothing _ _ _ _ = die "Unknown compiler" +configCompilerEx (Just hcFlavor) hcPath hcPkg conf verbosity = do (comp, maybePlatform, programsConfig) <- case hcFlavor of GHC -> GHC.configure verbosity hcPath hcPkg conf JHC -> JHC.configure verbosity hcPath hcPkg conf @@ -878,6 +880,24 @@ configCompiler (Just hcFlavor) hcPath hcPkg conf verbosity = do _ -> die "Unknown compiler" return (comp, fromMaybe buildPlatform maybePlatform, programsConfig) +-- Ideally we would like to not have separate configCompiler* and +-- configCompiler*Ex sets of functions, but there are many custom setup scripts +-- in the wild that are using them, so the versions with old types are kept for +-- backwards compatibility. Platform was added to the return triple in 1.18. + +{-# DEPRECATED configCompiler + "'configCompiler' is deprecated. Use 'configCompilerEx' instead." #-} +configCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath + -> ProgramConfiguration -> Verbosity + -> IO (Compiler, ProgramConfiguration) +configCompiler mFlavor hcPath hcPkg conf verbosity = + fmap (\(a,_,b) -> (a,b)) $ configCompilerEx mFlavor hcPath hcPkg conf verbosity + +{-# DEPRECATED configCompilerAux + "configCompilerAux is deprecated. Use 'configCompilerAuxEx' instead." #-} +configCompilerAux :: ConfigFlags + -> IO (Compiler, ProgramConfiguration) +configCompilerAux = fmap (\(a,_,b) -> (a,b)) . configCompilerAuxEx -- ----------------------------------------------------------------------------- -- Making the internal component graph diff --git a/cabal-install/Distribution/Client/Sandbox.hs b/cabal-install/Distribution/Client/Sandbox.hs index 8477fe60d627979c43835c6ea2a62c28370437c6..fc137d38f44a757f7b66e4a5a22e7d3a64eb36aa 100644 --- a/cabal-install/Distribution/Client/Sandbox.hs +++ b/cabal-install/Distribution/Client/Sandbox.hs @@ -69,7 +69,7 @@ import Distribution.PackageDescription.Configuration import Distribution.PackageDescription.Parse ( readPackageDescription ) import Distribution.Simple.Compiler ( Compiler(..), PackageDB(..) , PackageDBStack ) -import Distribution.Simple.Configure ( configCompilerAux +import Distribution.Simple.Configure ( configCompilerAuxEx , interpretPackageDbFlags , getPackageDBContents ) import Distribution.Simple.PreProcess ( knownSuffixHandlers ) @@ -294,7 +294,7 @@ sandboxInit verbosity sandboxFlags globalFlags = do -- Determine which compiler to use (using the value from ~/.cabal/config). userConfig <- loadConfig verbosity (globalConfigFile globalFlags) NoFlag - (comp, platform, _) <- configCompilerAux (savedConfigureFlags userConfig) + (comp, platform, _) <- configCompilerAuxEx (savedConfigureFlags userConfig) -- Create the package environment file. pkgEnvFile <- getSandboxConfigFilePath globalFlags @@ -353,7 +353,7 @@ doAddSource verbosity buildTreeRefs sandboxDir pkgEnv refType = do -- If we're running 'sandbox add-source' for the first time for this compiler, -- we need to create an initial timestamp record. - (comp, platform, _) <- configCompilerAux . savedConfigureFlags $ savedConfig + (comp, platform, _) <- configCompilerAuxEx . savedConfigureFlags $ savedConfig maybeAddCompilerTimestampRecord verbosity sandboxDir indexFile (compilerId comp) platform @@ -715,6 +715,6 @@ configPackageDB' cfg = configCompilerAux' :: ConfigFlags -> IO (Compiler, Platform, ProgramConfiguration) configCompilerAux' configFlags = - configCompilerAux configFlags + configCompilerAuxEx configFlags --FIXME: make configCompilerAux use a sensible verbosity { configVerbosity = fmap lessVerbose (configVerbosity configFlags) } diff --git a/cabal-install/Distribution/Client/SetupWrapper.hs b/cabal-install/Distribution/Client/SetupWrapper.hs index 4e279b2adcd1f1d9aba02c4b7ee383078dca08e9..11abb304dfe66732d601ecd349c09c211f0eea5c 100644 --- a/cabal-install/Distribution/Client/SetupWrapper.hs +++ b/cabal-install/Distribution/Client/SetupWrapper.hs @@ -38,7 +38,7 @@ import Distribution.PackageDescription import Distribution.PackageDescription.Parse ( readPackageDescription ) import Distribution.Simple.Configure - ( configCompiler ) + ( configCompilerEx ) import Distribution.Compiler ( buildCompilerId ) import Distribution.Simple.Compiler ( CompilerFlavor(GHC), Compiler(compilerId) @@ -306,7 +306,7 @@ externalSetupMethod verbosity options pkg bt mkargs = do (comp, conf) <- case useCompiler options' of Just comp -> return (comp, useProgramConfig options') Nothing -> do (comp, _, conf) <- - configCompiler (Just GHC) Nothing Nothing + configCompilerEx (Just GHC) Nothing Nothing (useProgramConfig options') verbosity return (comp, conf) -- Whenever we need to call configureCompiler, we also need to access the diff --git a/cabal-install/Main.hs b/cabal-install/Main.hs index 5b448868c613a154d54320833292b03c9414ff31..d2ddc2f816eada7f2fa22d54ca389cc44b29a4d3 100644 --- a/cabal-install/Main.hs +++ b/cabal-install/Main.hs @@ -101,7 +101,7 @@ import Distribution.Simple.Command import Distribution.Simple.Compiler ( Compiler(..) ) import Distribution.Simple.Configure - ( checkPersistBuildConfigOutdated, configCompilerAux + ( checkPersistBuildConfigOutdated, configCompilerAuxEx , ConfigStateFileErrorType(..), localBuildInfoFile , tryGetPersistBuildConfig ) import qualified Distribution.Simple.LocalBuildInfo as LBI @@ -231,7 +231,7 @@ configureAction (configFlags, configExFlags) extraArgs globalFlags = do let configFlags' = savedConfigureFlags config `mappend` configFlags configExFlags' = savedConfigureExFlags config `mappend` configExFlags globalFlags' = savedGlobalFlags config `mappend` globalFlags - (comp, platform, conf) <- configCompilerAux configFlags' + (comp, platform, conf) <- configCompilerAuxEx configFlags' -- If we're working inside a sandbox and the user has set the -w option, we -- may need to create a sandbox-local package DB for this compiler and add a @@ -662,7 +662,7 @@ infoAction infoFlags extraArgs globalFlags = do (_, config) <- loadConfigOrSandboxConfig verbosity globalFlags mempty let configFlags = savedConfigureFlags config globalFlags' = savedGlobalFlags config `mappend` globalFlags - (comp, _, conf) <- configCompilerAux configFlags + (comp, _, conf) <- configCompilerAuxEx configFlags List.info verbosity (configPackageDB' configFlags) (globalRepos globalFlags')