From 445ad90d5ccf1c67055e712df25528ac99ad10af Mon Sep 17 00:00:00 2001 From: Edsko de Vries <edsko@well-typed.com> Date: Thu, 19 Feb 2015 17:04:49 +0100 Subject: [PATCH] Move PackageFixedDeps from Cabal to cabal-install The fundamental difference between Cabal and cabal-install is that the former deals with installed libraries, and -- in principle -- knows about _library_ dependencies only, whereas the latters deals with setup, executable, test-suite and benchmark dependencies in addition to library dependencies. Currently we classify all of these simply as 'dependencies' but that will change shortly. In this commit we take a first step towards this by moving the PackageFixedDeps class, which deals with dependencies of packages rather than installed libraries, from Cabal to cabal-install. The commit is pretty simple; we just move the type class and update import statements where necessary. --- Cabal/Distribution/Package.hs | 11 ----------- Cabal/Distribution/Simple/GHC/IPI641.hs | 2 +- Cabal/Distribution/Simple/GHC/IPI642.hs | 2 +- .../Distribution/Client/Dependency/TopDown.hs | 5 +++-- .../Client/Dependency/TopDown/Constraints.hs | 5 +++-- .../Distribution/Client/Dependency/TopDown/Types.hs | 4 +++- cabal-install/Distribution/Client/Install.hs | 4 +++- cabal-install/Distribution/Client/InstallPlan.hs | 4 +++- cabal-install/Distribution/Client/PackageIndex.hs | 13 ++++++++++++- cabal-install/Distribution/Client/Types.hs | 4 ++-- 10 files changed, 31 insertions(+), 23 deletions(-) diff --git a/Cabal/Distribution/Package.hs b/Cabal/Distribution/Package.hs index f36a4ce8c5..70cd70adb4 100644 --- a/Cabal/Distribution/Package.hs +++ b/Cabal/Distribution/Package.hs @@ -38,7 +38,6 @@ module Distribution.Package ( -- * Package classes Package(..), packageName, packageVersion, - PackageFixedDeps(..), PackageInstalled(..), ) where @@ -360,16 +359,6 @@ packageVersion = pkgVersion . packageId instance Package PackageIdentifier where packageId = id --- | 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 -> [PackageIdentifier] - -- | Class of installed packages. -- -- The primary data type which is an instance of this package is diff --git a/Cabal/Distribution/Simple/GHC/IPI641.hs b/Cabal/Distribution/Simple/GHC/IPI641.hs index 84cda21f61..4bb995dea1 100644 --- a/Cabal/Distribution/Simple/GHC/IPI641.hs +++ b/Cabal/Distribution/Simple/GHC/IPI641.hs @@ -14,7 +14,7 @@ module Distribution.Simple.GHC.IPI641 ( ) where import qualified Distribution.InstalledPackageInfo as Current -import qualified Distribution.Package as Current hiding (depends, installedPackageId) +import qualified Distribution.Package as Current hiding (installedPackageId) import Distribution.Text (display) import Distribution.Simple.GHC.IPI642 diff --git a/Cabal/Distribution/Simple/GHC/IPI642.hs b/Cabal/Distribution/Simple/GHC/IPI642.hs index 512949c164..25145f1ab1 100644 --- a/Cabal/Distribution/Simple/GHC/IPI642.hs +++ b/Cabal/Distribution/Simple/GHC/IPI642.hs @@ -19,7 +19,7 @@ module Distribution.Simple.GHC.IPI642 ( ) where import qualified Distribution.InstalledPackageInfo as Current -import qualified Distribution.Package as Current hiding (depends, installedPackageId) +import qualified Distribution.Package as Current hiding (installedPackageId) import qualified Distribution.License as Current import Distribution.Version (Version) diff --git a/cabal-install/Distribution/Client/Dependency/TopDown.hs b/cabal-install/Distribution/Client/Dependency/TopDown.hs index b7f3a7be03..9c6cf314d5 100644 --- a/cabal-install/Distribution/Client/Dependency/TopDown.hs +++ b/cabal-install/Distribution/Client/Dependency/TopDown.hs @@ -33,11 +33,12 @@ import Distribution.Client.Dependency.Types , Progress(..), foldProgress ) import qualified Distribution.Client.PackageIndex as PackageIndex -import Distribution.Client.PackageIndex (PackageIndex) +import Distribution.Client.PackageIndex + ( PackageIndex, PackageFixedDeps(depends) ) import Distribution.Package ( PackageName(..), PackageId, Package(..), packageVersion, packageName , Dependency(Dependency), thisPackageVersion - , simplifyDependency, PackageFixedDeps(depends) ) + , simplifyDependency ) import Distribution.PackageDescription ( PackageDescription(buildDepends) ) import Distribution.Client.PackageUtils diff --git a/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs b/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs index 006288c1a1..00004bcdcf 100644 --- a/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs +++ b/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs @@ -26,11 +26,12 @@ module Distribution.Client.Dependency.TopDown.Constraints ( import Distribution.Client.Dependency.TopDown.Types import qualified Distribution.Client.PackageIndex as PackageIndex -import Distribution.Client.PackageIndex (PackageIndex) +import Distribution.Client.PackageIndex + ( PackageIndex, PackageFixedDeps(depends) ) import Distribution.Package ( PackageName, PackageId, PackageIdentifier(..) , Package(packageId), packageName, packageVersion - , Dependency, PackageFixedDeps(depends) ) + , Dependency ) import Distribution.Version ( Version ) import Distribution.Client.Utils diff --git a/cabal-install/Distribution/Client/Dependency/TopDown/Types.hs b/cabal-install/Distribution/Client/Dependency/TopDown/Types.hs index 43567c81c3..dc480e36b9 100644 --- a/cabal-install/Distribution/Client/Dependency/TopDown/Types.hs +++ b/cabal-install/Distribution/Client/Dependency/TopDown/Types.hs @@ -14,10 +14,12 @@ module Distribution.Client.Dependency.TopDown.Types where import Distribution.Client.Types ( SourcePackage(..), InstalledPackage, OptionalStanza ) +import Distribution.Client.PackageIndex + ( PackageFixedDeps(depends) ) import Distribution.Package ( PackageIdentifier, Dependency - , Package(packageId), PackageFixedDeps(depends) ) + , Package(packageId) ) import Distribution.PackageDescription ( FlagAssignment ) diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index b7d66c455f..cfebe26e54 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -90,6 +90,8 @@ 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 ) @@ -128,7 +130,7 @@ import Distribution.Simple.InstallDirs as InstallDirs , initialPathTemplateEnv, installDirsTemplateEnv ) import Distribution.Package ( PackageIdentifier(..), PackageId, packageName, packageVersion - , Package(..), PackageFixedDeps(..), PackageKey + , Package(..), PackageKey , Dependency(..), thisPackageVersion, InstalledPackageId, installedPackageId ) import qualified Distribution.PackageDescription as PackageDescription import Distribution.PackageDescription diff --git a/cabal-install/Distribution/Client/InstallPlan.hs b/cabal-install/Distribution/Client/InstallPlan.hs index 9376d7152e..04434978b7 100644 --- a/cabal-install/Distribution/Client/InstallPlan.hs +++ b/cabal-install/Distribution/Client/InstallPlan.hs @@ -54,7 +54,7 @@ import Distribution.Client.Types , InstalledPackage(..), fakeInstalledPackageId ) import Distribution.Package ( PackageIdentifier(..), PackageName(..), Package(..), packageName - , PackageFixedDeps(..), Dependency(..), InstalledPackageId + , Dependency(..), InstalledPackageId , PackageInstalled(..) ) import Distribution.Version ( Version, withinRange ) @@ -63,6 +63,8 @@ import Distribution.PackageDescription , Flag(flagName), FlagName(..) ) import Distribution.Client.PackageUtils ( externalBuildDepends ) +import Distribution.Client.PackageIndex + ( PackageFixedDeps(..) ) import Distribution.PackageDescription.Configuration ( finalizePackageDescription ) import Distribution.Simple.PackageIndex diff --git a/cabal-install/Distribution/Client/PackageIndex.hs b/cabal-install/Distribution/Client/PackageIndex.hs index 4a4a70857c..3a4a974dd1 100644 --- a/cabal-install/Distribution/Client/PackageIndex.hs +++ b/cabal-install/Distribution/Client/PackageIndex.hs @@ -15,6 +15,7 @@ module Distribution.Client.PackageIndex ( -- * Package index data type PackageIndex, + PackageFixedDeps(..), -- * Creating an index fromList, @@ -72,11 +73,21 @@ import Data.Maybe (isJust, isNothing, fromMaybe, catMaybes) import Distribution.Package ( PackageName(..), PackageIdentifier(..) , Package(..), packageName, packageVersion - , Dependency(Dependency), PackageFixedDeps(..) ) + , Dependency(Dependency) ) import Distribution.Version ( Version, withinRange ) import Distribution.Simple.Utils (lowercase, equating, comparing) +-- | 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 -> [PackageIdentifier] + -- | The collection of information about packages from one or more 'PackageDB's. -- diff --git a/cabal-install/Distribution/Client/Types.hs b/cabal-install/Distribution/Client/Types.hs index 8cd7fb08da..37da68bd9a 100644 --- a/cabal-install/Distribution/Client/Types.hs +++ b/cabal-install/Distribution/Client/Types.hs @@ -15,7 +15,7 @@ module Distribution.Client.Types where import Distribution.Package - ( PackageName, PackageId, Package(..), PackageFixedDeps(..) + ( PackageName, PackageId, Package(..) , mkPackageKey, PackageKey, InstalledPackageId(..) , PackageInstalled(..) ) import Distribution.InstalledPackageInfo @@ -26,7 +26,7 @@ import Distribution.PackageDescription import Distribution.PackageDescription.Configuration ( mapTreeData ) import Distribution.Client.PackageIndex - ( PackageIndex ) + ( PackageIndex, PackageFixedDeps(..) ) import Distribution.Version ( VersionRange ) import Distribution.Simple.Compiler -- GitLab