diff --git a/cabal-install/Distribution/Client/Configure.hs b/cabal-install/Distribution/Client/Configure.hs index 804d64b8f8918f08b0a155cdb9a31b9c72f1b14d..b4b9e0cc459f08642af57c01817bb22c330db796 100644 --- a/cabal-install/Distribution/Client/Configure.hs +++ b/cabal-install/Distribution/Client/Configure.hs @@ -98,6 +98,7 @@ configure verbosity packageDBs repos comp platform conf useCabalVersion = maybe anyVersion thisVersion (flagToMaybe (configCabalVersion configExFlags)), useCompiler = Just comp, + usePlatform = Just platform, usePackageDB = packageDBs', usePackageIndex = index', useProgramConfig = conf, diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index f65c5dfb304d3ec1a32ae580dea8c6b797a74221..923c4114375099ac347a0a524135c0ffe8b64f48 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -122,7 +122,7 @@ import Distribution.Simple.Utils as Utils import Distribution.Client.Utils ( numberOfProcessors, inDir, mergeBy, MergeResult(..) ) import Distribution.System - ( Platform, buildPlatform, OS(Windows), buildOS ) + ( Platform, OS(Windows), buildOS ) import Distribution.Text ( display ) import Distribution.Verbosity as Verbosity @@ -152,6 +152,7 @@ install -> PackageDBStack -> [Repo] -> Compiler + -> Platform -> ProgramConfiguration -> GlobalFlags -> ConfigFlags @@ -160,7 +161,7 @@ install -> HaddockFlags -> [UserTarget] -> IO () -install verbosity packageDBs repos comp conf +install verbosity packageDBs repos comp platform conf globalFlags configFlags configExFlags installFlags haddockFlags userTargets0 = do @@ -171,7 +172,7 @@ install verbosity packageDBs repos comp conf processInstallPlan verbosity args installContext installPlan where args :: InstallArgs - args = (packageDBs, repos, comp, conf, + args = (packageDBs, repos, comp, platform, conf, globalFlags, configFlags, configExFlags, installFlags, haddockFlags) @@ -188,6 +189,7 @@ type InstallContext = ( PackageIndex, SourcePackageDb type InstallArgs = ( PackageDBStack , [Repo] , Compiler + , Platform , ProgramConfiguration , GlobalFlags , ConfigFlags @@ -199,7 +201,7 @@ type InstallArgs = ( PackageDBStack makeInstallContext :: Verbosity -> InstallArgs -> [UserTarget] -> IO InstallContext makeInstallContext verbosity - (packageDBs, repos, comp, conf, + (packageDBs, repos, comp, _, conf, globalFlags, _, _, _, _) userTargets0 = do installedPkgIndex <- getInstalledPackages verbosity comp packageDBs conf @@ -221,7 +223,7 @@ makeInstallContext verbosity makeInstallPlan :: Verbosity -> InstallArgs -> InstallContext -> IO (Progress String String InstallPlan) makeInstallPlan verbosity - (_, _, comp, _, + (_, _, comp, platform, _, _, configFlags, configExFlags, installFlags, _) (installedPkgIndex, sourcePkgDb, @@ -230,15 +232,15 @@ makeInstallPlan verbosity solver <- chooseSolver verbosity (fromFlag (configSolver configExFlags)) (compilerId comp) notice verbosity "Resolving dependencies..." - return $ planPackages comp solver configFlags configExFlags installFlags - installedPkgIndex sourcePkgDb pkgSpecifiers + return $ planPackages comp platform solver configFlags configExFlags + installFlags installedPkgIndex sourcePkgDb pkgSpecifiers -- | Given an install plan, perform the actual installations. processInstallPlan :: Verbosity -> InstallArgs -> InstallContext -> InstallPlan -> IO () processInstallPlan verbosity - args@(_, _, _, _, _, _, _, installFlags, _) + args@(_, _, _, _, _, _, _, _, installFlags, _) (installedPkgIndex, sourcePkgDb, userTargets, pkgSpecifiers) installPlan = do checkPrintPlan verbosity installedPkgIndex installPlan sourcePkgDb @@ -256,6 +258,7 @@ processInstallPlan verbosity -- ------------------------------------------------------------ planPackages :: Compiler + -> Platform -> Solver -> ConfigFlags -> ConfigExFlags @@ -264,11 +267,11 @@ planPackages :: Compiler -> SourcePackageDb -> [PackageSpecifier SourcePackage] -> Progress String String InstallPlan -planPackages comp solver configFlags configExFlags installFlags +planPackages comp platform solver configFlags configExFlags installFlags installedPkgIndex sourcePkgDb pkgSpecifiers = resolveDependencies - buildPlatform (compilerId comp) + platform (compilerId comp) solver resolverParams @@ -599,7 +602,8 @@ postInstallActions :: Verbosity -> InstallPlan -> IO () postInstallActions verbosity - (packageDBs, _, comp, conf, globalFlags, configFlags, _, installFlags, _) + (packageDBs, _, comp, platform, conf, globalFlags, configFlags + , _, installFlags, _) targets installPlan = do unless oneShot $ @@ -616,7 +620,7 @@ postInstallActions verbosity when (reportingLevel == DetailedReports) $ storeDetailedBuildReports verbosity logsDir buildReports - regenerateHaddockIndex verbosity packageDBs comp conf + regenerateHaddockIndex verbosity packageDBs comp platform conf configFlags installFlags installPlan symlinkBinaries verbosity configFlags installFlags installPlan @@ -665,12 +669,13 @@ storeDetailedBuildReports verbosity logsDir reports = sequence_ regenerateHaddockIndex :: Verbosity -> [PackageDB] -> Compiler + -> Platform -> ProgramConfiguration -> ConfigFlags -> InstallFlags -> InstallPlan -> IO () -regenerateHaddockIndex verbosity packageDBs comp conf +regenerateHaddockIndex verbosity packageDBs comp platform conf configFlags installFlags installPlan | haddockIndexFileIsRequested && shouldRegenerateHaddockIndex = do @@ -714,7 +719,7 @@ regenerateHaddockIndex verbosity packageDBs comp conf where env = env0 ++ installDirsTemplateEnv absoluteDirs env0 = InstallDirs.compilerTemplateEnv (compilerId comp) - ++ InstallDirs.platformTemplateEnv (buildPlatform) + ++ InstallDirs.platformTemplateEnv platform absoluteDirs = InstallDirs.substituteInstallDirTemplates env0 templateDirs templateDirs = InstallDirs.combineInstallDirs fromFlagOrDefault @@ -794,7 +799,7 @@ performInstallations :: Verbosity -> InstallPlan -> IO InstallPlan performInstallations verbosity - (packageDBs, _, comp, conf, + (packageDBs, _, comp, _, conf, globalFlags, configFlags, configExFlags, installFlags, haddockFlags) installedPkgIndex installPlan = do @@ -829,6 +834,7 @@ performInstallations verbosity setupScriptOptions index lock = SetupScriptOptions { useCabalVersion = maybe anyVersion thisVersion (libVersion miscOptions), useCompiler = Just comp, + usePlatform = Just platform, -- Hack: we typically want to allow the UserPackageDB for finding the -- Cabal lib when compiling any Setup.hs even if we're doing a global -- install. However we also allow looking in a specific package db. diff --git a/cabal-install/Distribution/Client/Sandbox.hs b/cabal-install/Distribution/Client/Sandbox.hs index f139f2a8ab10ee449f7303114837dee995b422fc..b66792db371af5f9d7ab7fb1aacba649c4b5b597 100644 --- a/cabal-install/Distribution/Client/Sandbox.hs +++ b/cabal-install/Distribution/Client/Sandbox.hs @@ -292,7 +292,7 @@ sandboxInstall verbosity _sandboxFlags configFlags configExFlags installFlags' = defaultInstallFlags `mappend` savedInstallFlags config `mappend` installFlags globalFlags' = savedGlobalFlags config `mappend` globalFlags - (comp, _, conf) <- configCompilerAux' configFlags' + (comp, platform, conf) <- configCompilerAux' configFlags' -- If the user has set the -w option, we may need to create the package DB for -- this compiler. @@ -300,7 +300,7 @@ sandboxInstall verbosity _sandboxFlags configFlags configExFlags args :: InstallArgs args = ((configPackageDB' configFlags''), (globalRepos globalFlags'), - comp, conf, + comp, platform, conf, globalFlags', configFlags'', configExFlags', installFlags', haddockFlags) diff --git a/cabal-install/Distribution/Client/SetupWrapper.hs b/cabal-install/Distribution/Client/SetupWrapper.hs index cf4cb542d044650ead929783b8e52c3877b6fa5e..9536c243a9ab0beac134451f864231f2a08e9d47 100644 --- a/cabal-install/Distribution/Client/SetupWrapper.hs +++ b/cabal-install/Distribution/Client/SetupWrapper.hs @@ -63,6 +63,7 @@ import Distribution.Simple.Utils , rewriteFile, intercalate ) import Distribution.Client.Utils ( moreRecentFile, inDir ) +import Distribution.System (Platform(..)) import Distribution.Text ( display ) import Distribution.Verbosity @@ -83,6 +84,7 @@ import Data.Char ( isSpace ) data SetupScriptOptions = SetupScriptOptions { useCabalVersion :: VersionRange, useCompiler :: Maybe Compiler, + usePlatform :: Maybe Platform, usePackageDB :: PackageDBStack, usePackageIndex :: Maybe PackageIndex, useProgramConfig :: ProgramConfiguration, @@ -100,6 +102,7 @@ defaultSetupScriptOptions :: SetupScriptOptions defaultSetupScriptOptions = SetupScriptOptions { useCabalVersion = anyVersion, useCompiler = Nothing, + usePlatform = Nothing, usePackageDB = [GlobalPackageDB, UserPackageDB], usePackageIndex = Nothing, useProgramConfig = emptyProgramConfiguration, @@ -261,7 +264,8 @@ externalSetupMethod verbosity options pkg bt mkargs = do configureCompiler options' = do (comp, conf) <- case useCompiler options' of Just comp -> return (comp, useProgramConfig options') - Nothing -> do (comp, _, conf) <- configCompiler (Just GHC) Nothing Nothing + Nothing -> do (comp, _, conf) <- + configCompiler (Just GHC) Nothing Nothing (useProgramConfig options') verbosity return (comp, conf) return (comp, conf, options' { useCompiler = Just comp, diff --git a/cabal-install/src/Main.hs b/cabal-install/src/Main.hs index 4cebbe79e056a5f242b8245aeb8dfaf6ffd26c7c..8354a6443059510034733eca2c31a5de9ffbe077 100644 --- a/cabal-install/src/Main.hs +++ b/cabal-install/src/Main.hs @@ -397,10 +397,10 @@ installAction (configFlags, configExFlags, installFlags, haddockFlags) installFlags' = defaultInstallFlags `mappend` savedInstallFlags config `mappend` installFlags globalFlags' = savedGlobalFlags config `mappend` globalFlags - (comp, _, conf) <- configCompilerAux' configFlags' + (comp, platform, conf) <- configCompilerAux' configFlags' install verbosity (configPackageDB' configFlags') (globalRepos globalFlags') - comp conf globalFlags' configFlags' configExFlags' + comp platform conf globalFlags' configFlags' configExFlags' installFlags' haddockFlags targets