From a28a2968e3e5c2f1d903550699db022b17375150 Mon Sep 17 00:00:00 2001 From: Duncan Coutts <duncan@community.haskell.org> Date: Tue, 21 Jul 2015 19:01:32 +0100 Subject: [PATCH] Move PackageFixedDeps class to Types module It was in the PackageIndex module but it was unused there and it being there was just confusing. --- cabal-install/Distribution/Client/Install.hs | 2 -- .../Distribution/Client/InstallPlan.hs | 4 +--- .../Distribution/Client/PackageIndex.hs | 23 +------------------ .../Distribution/Client/PlanIndex.hs | 2 +- cabal-install/Distribution/Client/Types.hs | 18 +++++++++++++-- 5 files changed, 19 insertions(+), 30 deletions(-) diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index 93c2af9f11..68fa7303ad 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -96,8 +96,6 @@ import Distribution.Client.BuildReports.Types ( ReportLevel(..) ) import Distribution.Client.SetupWrapper ( setupWrapper, SetupScriptOptions(..), defaultSetupScriptOptions ) -import Distribution.Client.PackageIndex - ( PackageFixedDeps(..) ) import qualified Distribution.Client.BuildReports.Anonymous as BuildReports import qualified Distribution.Client.BuildReports.Storage as BuildReports ( storeAnonymous, storeLocal, fromInstallPlan, fromPlanningFailure ) diff --git a/cabal-install/Distribution/Client/InstallPlan.hs b/cabal-install/Distribution/Client/InstallPlan.hs index 91da634445..cb9fd04884 100644 --- a/cabal-install/Distribution/Client/InstallPlan.hs +++ b/cabal-install/Distribution/Client/InstallPlan.hs @@ -55,7 +55,7 @@ import Distribution.Client.Types , ReadyPackage(..), readyPackageToConfiguredPackage , InstalledPackage, BuildFailure, BuildSuccess(..), enableStanzas , InstalledPackage(..), fakeInstalledPackageId - , ConfiguredId(..) + , ConfiguredId(..), PackageFixedDeps(..) ) import Distribution.Package ( PackageIdentifier(..), PackageName(..), Package(..), packageName @@ -70,8 +70,6 @@ import Distribution.PackageDescription ) import Distribution.Client.PackageUtils ( externalBuildDepends ) -import Distribution.Client.PackageIndex - ( PackageFixedDeps(..) ) import Distribution.Client.ComponentDeps (ComponentDeps) import qualified Distribution.Client.ComponentDeps as CD import Distribution.PackageDescription.Configuration diff --git a/cabal-install/Distribution/Client/PackageIndex.hs b/cabal-install/Distribution/Client/PackageIndex.hs index c975177d61..0efb485c78 100644 --- a/cabal-install/Distribution/Client/PackageIndex.hs +++ b/cabal-install/Distribution/Client/PackageIndex.hs @@ -16,9 +16,6 @@ module Distribution.Client.PackageIndex ( -- * Package index data type PackageIndex, - -- * Fine-grained package dependencies - PackageFixedDeps(..), - -- * Creating an index fromList, @@ -61,30 +58,12 @@ import Data.Maybe (isJust, fromMaybe) import Distribution.Package ( PackageName(..), PackageIdentifier(..) , Package(..), packageName, packageVersion - , Dependency(Dependency) - , InstalledPackageId, installedDepends ) + , Dependency(Dependency) ) import Distribution.Version ( withinRange ) -import Distribution.InstalledPackageInfo - ( InstalledPackageInfo_ ) import Distribution.Simple.Utils ( lowercase, comparing ) -import Distribution.Client.ComponentDeps (ComponentDeps) -import qualified Distribution.Client.ComponentDeps as CD - --- | Subclass of packages that have specific versioned dependencies. --- --- So for example a not-yet-configured package has dependencies on version --- ranges, not specific versions. A configured or an already installed package --- depends on exact versions. Some operations or data structures (like --- dependency graphs) only make sense on this subclass of package types. --- -class Package pkg => PackageFixedDeps pkg where - depends :: pkg -> ComponentDeps [InstalledPackageId] - -instance PackageFixedDeps (InstalledPackageInfo_ str) where - depends = CD.fromInstalled . installedDepends -- | The collection of information about packages from one or more 'PackageDB's. -- diff --git a/cabal-install/Distribution/Client/PlanIndex.hs b/cabal-install/Distribution/Client/PlanIndex.hs index ca3be6fe36..5e837c6eed 100644 --- a/cabal-install/Distribution/Client/PlanIndex.hs +++ b/cabal-install/Distribution/Client/PlanIndex.hs @@ -42,7 +42,7 @@ import Distribution.Version import Distribution.Client.ComponentDeps (ComponentDeps) import qualified Distribution.Client.ComponentDeps as CD -import Distribution.Client.PackageIndex +import Distribution.Client.Types ( PackageFixedDeps(..) ) import Distribution.Simple.PackageIndex ( PackageIndex, allPackages, insert, lookupInstalledPackageId ) diff --git a/cabal-install/Distribution/Client/Types.hs b/cabal-install/Distribution/Client/Types.hs index 129f65b489..da840c4ca6 100644 --- a/cabal-install/Distribution/Client/Types.hs +++ b/cabal-install/Distribution/Client/Types.hs @@ -20,14 +20,14 @@ import Distribution.Package , HasInstalledPackageId(..), PackageInstalled(..) , LibraryName, packageKeyLibraryName ) import Distribution.InstalledPackageInfo - ( InstalledPackageInfo ) + ( InstalledPackageInfo, InstalledPackageInfo_ ) import Distribution.PackageDescription ( Benchmark(..), GenericPackageDescription(..), FlagAssignment , TestSuite(..) ) import Distribution.PackageDescription.Configuration ( mapTreeData ) import Distribution.Client.PackageIndex - ( PackageIndex, PackageFixedDeps(..) ) + ( PackageIndex ) import Distribution.Client.ComponentDeps ( ComponentDeps ) import qualified Distribution.Client.ComponentDeps as CD @@ -58,6 +58,20 @@ data SourcePackageDb = SourcePackageDb { -- * Various kinds of information about packages -- ------------------------------------------------------------ +-- | Subclass of packages that have specific versioned dependencies. +-- +-- So for example a not-yet-configured package has dependencies on version +-- ranges, not specific versions. A configured or an already installed package +-- depends on exact versions. Some operations or data structures (like +-- dependency graphs) only make sense on this subclass of package types. +-- +class Package pkg => PackageFixedDeps pkg where + depends :: pkg -> ComponentDeps [InstalledPackageId] + +instance PackageFixedDeps (InstalledPackageInfo_ str) where + depends = CD.fromInstalled . installedDepends + + -- | InstalledPackage caches its dependencies as source package IDs. -- This is for the benefit of the top-down solver only. data InstalledPackage = InstalledPackage -- GitLab