From f46d26312ff92d3d40ccc3bd11b3a0e23644e71f Mon Sep 17 00:00:00 2001 From: Duncan Coutts <duncan@community.haskell.org> Date: Thu, 23 Jul 2015 00:51:50 +0100 Subject: [PATCH] Remove the now-unused Platform and CompilerInfo from the InstallPlan It wasn't used within the InstallPlan, but it had accessors and those were used in a few places. Just pass them into those few places that need it. --- .../Client/BuildReports/Storage.hs | 14 +++++------ .../Distribution/Client/Configure.hs | 3 +-- .../Distribution/Client/Dependency.hs | 2 +- cabal-install/Distribution/Client/Install.hs | 24 +++++++++++-------- .../Distribution/Client/InstallPlan.hs | 22 ++++------------- .../Distribution/Client/InstallSymlink.hs | 16 +++++++------ 6 files changed, 37 insertions(+), 44 deletions(-) diff --git a/cabal-install/Distribution/Client/BuildReports/Storage.hs b/cabal-install/Distribution/Client/BuildReports/Storage.hs index 26e4b6e272..78bcdf0d90 100644 --- a/cabal-install/Distribution/Client/BuildReports/Storage.hs +++ b/cabal-install/Distribution/Client/BuildReports/Storage.hs @@ -118,16 +118,16 @@ storeLocal cinfo templates reports platform = sequence_ -- * InstallPlan support -- ------------------------------------------------------------ -fromInstallPlan :: InstallPlan InstalledPackageInfo +fromInstallPlan :: Platform -> CompilerId + -> InstallPlan InstalledPackageInfo ConfiguredPackage BuildSuccess BuildFailure -> [(BuildReport, Maybe Repo)] -fromInstallPlan plan = catMaybes - . map (fromPlanPackage platform comp) - . InstallPlan.toList - $ plan - where platform = InstallPlan.planPlatform plan - comp = compilerInfoId (InstallPlan.planCompiler plan) +fromInstallPlan platform comp plan = + catMaybes + . map (fromPlanPackage platform comp) + . InstallPlan.toList + $ plan fromPlanPackage :: Platform -> CompilerId -> InstallPlan.PlanPackage InstalledPackageInfo diff --git a/cabal-install/Distribution/Client/Configure.hs b/cabal-install/Distribution/Client/Configure.hs index 52557fbf3f..9e731beff4 100644 --- a/cabal-install/Distribution/Client/Configure.hs +++ b/cabal-install/Distribution/Client/Configure.hs @@ -122,8 +122,7 @@ configure verbosity packageDBs repos comp platform conf _ _ _) _)] -> do configurePackage verbosity - (InstallPlan.planPlatform installPlan) - (InstallPlan.planCompiler installPlan) + platform (compilerInfo comp) (setupScriptOptions installedPkgIndex (Just pkg)) configFlags pkg extraArgs diff --git a/cabal-install/Distribution/Client/Dependency.hs b/cabal-install/Distribution/Client/Dependency.hs index 514e8fe869..cb1aeb74ce 100644 --- a/cabal-install/Distribution/Client/Dependency.hs +++ b/cabal-install/Distribution/Client/Dependency.hs @@ -618,7 +618,7 @@ validateSolverResult :: Platform iresult ifailure validateSolverResult platform comp indepGoals pkgs = case planPackagesProblems platform comp pkgs of - [] -> case InstallPlan.new platform comp indepGoals index of + [] -> case InstallPlan.new indepGoals index of Right plan -> plan Left problems -> error (formatPlanProblems problems) problems -> error (formatPkgProblems problems) diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index 9942946b8c..aa285ae167 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -799,9 +799,12 @@ postInstallActions verbosity [ World.WorldPkgInfo dep [] | UserTargetNamed dep <- targets ] - let buildReports = BuildReports.fromInstallPlan installPlan - BuildReports.storeLocal (compilerInfo comp) (fromNubList $ installSummaryFile installFlags) buildReports - (InstallPlan.planPlatform installPlan) + let buildReports = BuildReports.fromInstallPlan platform (compilerId comp) + installPlan + BuildReports.storeLocal (compilerInfo comp) + (fromNubList $ installSummaryFile installFlags) + buildReports + platform when (reportingLevel >= AnonymousReports) $ BuildReports.storeAnonymous buildReports when (reportingLevel == DetailedReports) $ @@ -810,7 +813,7 @@ postInstallActions verbosity regenerateHaddockIndex verbosity packageDBs comp platform conf useSandbox configFlags installFlags installPlan - symlinkBinaries verbosity comp configFlags installFlags installPlan + symlinkBinaries verbosity platform comp configFlags installFlags installPlan printBuildFailures installPlan @@ -920,15 +923,17 @@ regenerateHaddockIndex verbosity packageDBs comp platform conf useSandbox symlinkBinaries :: Verbosity - -> Compiler + -> Platform -> Compiler -> ConfigFlags -> InstallFlags -> InstallPlan InstalledPackageInfo ConfiguredPackage iresult ifailure -> IO () -symlinkBinaries verbosity comp configFlags installFlags plan = do - failed <- InstallSymlink.symlinkBinaries comp configFlags installFlags plan +symlinkBinaries verbosity platform comp configFlags installFlags plan = do + failed <- InstallSymlink.symlinkBinaries platform comp + configFlags installFlags + plan case failed of [] -> return () [(_, exe, path)] -> @@ -1038,7 +1043,7 @@ performInstallations :: Verbosity ConfiguredPackage BuildSuccess BuildFailure) performInstallations verbosity - (packageDBs, _, comp, _, conf, useSandbox, _, + (packageDBs, _, comp, platform, conf, useSandbox, _, globalFlags, configFlags, configExFlags, installFlags, haddockFlags) installedPkgIndex installPlan = do @@ -1071,8 +1076,7 @@ performInstallations verbosity cinfo platform pkg pkgoverride mpath useLogFile where - platform = InstallPlan.planPlatform installPlan - cinfo = InstallPlan.planCompiler installPlan + cinfo = compilerInfo comp numJobs = determineNumJobs (installNumJobs installFlags) numFetchJobs = 2 diff --git a/cabal-install/Distribution/Client/InstallPlan.hs b/cabal-install/Distribution/Client/InstallPlan.hs index 1f6617329f..d5b02b2893 100644 --- a/cabal-install/Distribution/Client/InstallPlan.hs +++ b/cabal-install/Distribution/Client/InstallPlan.hs @@ -27,10 +27,6 @@ module Distribution.Client.InstallPlan ( showPlanIndex, showInstallPlan, - -- ** Query functions - planPlatform, - planCompiler, - -- * Checking validity of plans valid, closed, @@ -63,13 +59,9 @@ import Distribution.Client.PlanIndex import qualified Distribution.Client.PlanIndex as PlanIndex import Distribution.Text ( display ) -import Distribution.System - ( Platform ) -import Distribution.Compiler - ( CompilerInfo(..) ) -import Distribution.Simple.Utils - ( intercalate ) +import Data.List + ( intercalate ) import Data.Maybe ( fromMaybe, maybeToList ) import qualified Data.Graph as Graph @@ -176,8 +168,6 @@ data InstallPlan ipkg srcpkg iresult ifailure = InstallPlan { planGraphRev :: Graph, planPkgOf :: Graph.Vertex -> PlanPackage ipkg srcpkg iresult ifailure, planVertexOf :: InstalledPackageId -> Graph.Vertex, - planPlatform :: Platform, - planCompiler :: CompilerInfo, planIndepGoals :: Bool } @@ -222,11 +212,11 @@ showPlanPackageTag (Failed _ _) = "Failed" -- new :: (HasInstalledPackageId ipkg, PackageFixedDeps ipkg, HasInstalledPackageId srcpkg, PackageFixedDeps srcpkg) - => Platform -> CompilerInfo -> Bool + => Bool -> PlanIndex ipkg srcpkg iresult ifailure -> Either [PlanProblem ipkg srcpkg iresult ifailure] (InstallPlan ipkg srcpkg iresult ifailure) -new platform cinfo indepGoals index = +new indepGoals index = -- NB: Need to pre-initialize the fake-map with pre-existing -- packages let isPreExisting (PreExisting _) = True @@ -243,8 +233,6 @@ new platform cinfo indepGoals index = planGraphRev = Graph.transposeG graph, planPkgOf = vertexToPkgId, planVertexOf = fromMaybe noSuchPkgId . pkgIdToVertex, - planPlatform = platform, --TODO: now unused - planCompiler = cinfo, --TODO: now unused planIndepGoals = indepGoals } where (graph, vertexToPkgId, pkgIdToVertex) = @@ -269,7 +257,7 @@ remove :: (HasInstalledPackageId ipkg, PackageFixedDeps ipkg, -> Either [PlanProblem ipkg srcpkg iresult ifailure] (InstallPlan ipkg srcpkg iresult ifailure) remove shouldRemove plan = - new (planPlatform plan) (planCompiler plan) (planIndepGoals plan) newIndex + new (planIndepGoals plan) newIndex where newIndex = PackageIndex.fromList $ filter (not . shouldRemove) (toList plan) diff --git a/cabal-install/Distribution/Client/InstallSymlink.hs b/cabal-install/Distribution/Client/InstallSymlink.hs index 71309d1e30..ceb03fb94a 100644 --- a/cabal-install/Distribution/Client/InstallSymlink.hs +++ b/cabal-install/Distribution/Client/InstallSymlink.hs @@ -23,15 +23,16 @@ import Distribution.Client.InstallPlan (InstallPlan) import Distribution.Client.Setup (InstallFlags) import Distribution.Simple.Setup (ConfigFlags) import Distribution.Simple.Compiler +import Distribution.System -symlinkBinaries :: Compiler +symlinkBinaries :: Platform -> Compiler -> ConfigFlags -> InstallFlags -> InstallPlan InstalledPackageInfo ConfiguredPackage iresult ifailure -> IO [(PackageIdentifier, String, FilePath)] -symlinkBinaries _ _ _ _ = return [] +symlinkBinaries _ _ _ _ _ = return [] symlinkBinary :: FilePath -> FilePath -> String -> String -> IO Bool symlinkBinary _ _ _ _ = fail "Symlinking feature not available on Windows" @@ -64,7 +65,9 @@ import Distribution.InstalledPackageInfo ( InstalledPackageInfo ) import qualified Distribution.InstalledPackageInfo as Installed import Distribution.Simple.Compiler - ( Compiler, CompilerInfo(..), packageKeySupported ) + ( Compiler, compilerInfo, CompilerInfo(..), packageKeySupported ) +import Distribution.System + ( Platform ) import System.Posix.Files ( getSymbolicLinkStatus, isSymbolicLink, createSymbolicLink @@ -103,14 +106,14 @@ import Data.Maybe -- controlled from the config file. Of course it only works on POSIX systems -- with symlinks so is not available to Windows users. -- -symlinkBinaries :: Compiler +symlinkBinaries :: Platform -> Compiler -> ConfigFlags -> InstallFlags -> InstallPlan InstalledPackageInfo ConfiguredPackage iresult ifailure -> IO [(PackageIdentifier, String, FilePath)] -symlinkBinaries comp configFlags installFlags plan = +symlinkBinaries platform comp configFlags installFlags plan = case flagToMaybe (installSymlinkBinDir installFlags) of Nothing -> return [] Just symlinkBinDir @@ -180,8 +183,7 @@ symlinkBinaries comp configFlags installFlags plan = fromFlagTemplate = fromFlagOrDefault (InstallDirs.toPathTemplate "") prefixTemplate = fromFlagTemplate (configProgPrefix configFlags) suffixTemplate = fromFlagTemplate (configProgSuffix configFlags) - platform = InstallPlan.planPlatform plan - cinfo = InstallPlan.planCompiler plan + cinfo = compilerInfo comp (CompilerId compilerFlavor _) = compilerInfoId cinfo symlinkBinary :: FilePath -- ^ The canonical path of the public bin dir -- GitLab