Skip to content

Commit cc251c0

Browse files
committed
cabal-install: Use AllowNewer from Cabal
1 parent 86350b7 commit cc251c0

File tree

16 files changed

+26
-315
lines changed

16 files changed

+26
-315
lines changed

cabal-install/cabal-install.cabal

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@ library
179179
Distribution.Client.TargetSelector
180180
Distribution.Client.Targets
181181
Distribution.Client.Types
182-
Distribution.Client.Types.AllowNewer
183182
Distribution.Client.Types.BuildResults
184183
Distribution.Client.Types.ConfiguredId
185184
Distribution.Client.Types.ConfiguredPackage

cabal-install/src/Distribution/Client/Config.hs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,17 @@ import Distribution.Client.Setup
8484
, reportCommand
8585
, uploadCommand
8686
)
87-
import Distribution.Client.Types
87+
import Distribution.Types.AllowNewer
8888
( AllowNewer (..)
8989
, AllowOlder (..)
90-
, LocalRepo (..)
9190
, RelaxDeps (..)
91+
, isRelaxDeps
92+
)
93+
import Distribution.Client.Types
94+
( LocalRepo (..)
9295
, RemoteRepo (..)
9396
, RepoName (..)
9497
, emptyRemoteRepo
95-
, isRelaxDeps
9698
, unRepoName
9799
)
98100
import Distribution.Client.Types.Credentials (Password (..), Username (..))

cabal-install/src/Distribution/Client/Configure.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ import Distribution.Version
130130
)
131131

132132
import System.FilePath ((</>))
133+
import Distribution.Types.AllowNewer (AllowOlder(..), AllowNewer (..))
133134

134135
-- | Choose the Cabal version such that the setup scripts compiled against this
135136
-- version will support the given command-line flags. Currently, it implements no

cabal-install/src/Distribution/Client/Dependency.hs

Lines changed: 6 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,17 @@ import Distribution.Client.Dependency.Types
7777
)
7878
import Distribution.Client.SolverInstallPlan (SolverInstallPlan)
7979
import qualified Distribution.Client.SolverInstallPlan as SolverInstallPlan
80-
import Distribution.Client.Types
80+
import Distribution.Types.AllowNewer
8181
( AllowNewer (..)
8282
, AllowOlder (..)
83-
, PackageSpecifier (..)
84-
, RelaxDepMod (..)
85-
, RelaxDepScope (..)
86-
, RelaxDepSubject (..)
8783
, RelaxDeps (..)
88-
, RelaxedDep (..)
84+
, isRelaxDeps
85+
)
86+
import Distribution.Client.Types
87+
( PackageSpecifier (..)
8988
, SourcePackageDb (SourcePackageDb)
9089
, UnresolvedPkgLoc
9190
, UnresolvedSourcePackage
92-
, isRelaxDeps
9391
, pkgSpecifierConstraints
9492
, pkgSpecifierTarget
9593
)
@@ -163,6 +161,7 @@ import Data.List
163161
)
164162
import qualified Data.Map as Map
165163
import qualified Data.Set as Set
164+
import Distribution.AllowNewer (RelaxKind (..), relaxPackageDeps)
166165

167166
-- ------------------------------------------------------------
168167

@@ -528,8 +527,6 @@ removeUpperBounds (AllowNewer relDeps) = removeBounds RelaxUpper relDeps
528527
removeLowerBounds :: AllowOlder -> DepResolverParams -> DepResolverParams
529528
removeLowerBounds (AllowOlder relDeps) = removeBounds RelaxLower relDeps
530529

531-
data RelaxKind = RelaxLower | RelaxUpper
532-
533530
-- | Common internal implementation of 'removeLowerBounds'/'removeUpperBounds'
534531
removeBounds :: RelaxKind -> RelaxDeps -> DepResolverParams -> DepResolverParams
535532
removeBounds _ rd params | not (isRelaxDeps rd) = params -- no-op optimisation
@@ -547,54 +544,6 @@ removeBounds relKind relDeps params =
547544
{ srcpkgDescription = relaxPackageDeps relKind relDeps (srcpkgDescription srcPkg)
548545
}
549546

550-
-- | Relax the dependencies of this package if needed.
551-
--
552-
-- Helper function used by 'removeBounds'
553-
relaxPackageDeps
554-
:: RelaxKind
555-
-> RelaxDeps
556-
-> PD.GenericPackageDescription
557-
-> PD.GenericPackageDescription
558-
relaxPackageDeps _ rd gpd | not (isRelaxDeps rd) = gpd -- subsumed by no-op case in 'removeBounds'
559-
relaxPackageDeps relKind RelaxDepsAll gpd = PD.transformAllBuildDepends relaxAll gpd
560-
where
561-
relaxAll :: Dependency -> Dependency
562-
relaxAll (Dependency pkgName verRange cs) =
563-
Dependency pkgName (removeBound relKind RelaxDepModNone verRange) cs
564-
relaxPackageDeps relKind (RelaxDepsSome depsToRelax0) gpd =
565-
PD.transformAllBuildDepends relaxSome gpd
566-
where
567-
thisPkgName = packageName gpd
568-
thisPkgId = packageId gpd
569-
depsToRelax = Map.fromList $ mapMaybe f depsToRelax0
570-
571-
f :: RelaxedDep -> Maybe (RelaxDepSubject, RelaxDepMod)
572-
f (RelaxedDep scope rdm p) = case scope of
573-
RelaxDepScopeAll -> Just (p, rdm)
574-
RelaxDepScopePackage p0
575-
| p0 == thisPkgName -> Just (p, rdm)
576-
| otherwise -> Nothing
577-
RelaxDepScopePackageId p0
578-
| p0 == thisPkgId -> Just (p, rdm)
579-
| otherwise -> Nothing
580-
581-
relaxSome :: Dependency -> Dependency
582-
relaxSome d@(Dependency depName verRange cs)
583-
| Just relMod <- Map.lookup RelaxDepSubjectAll depsToRelax =
584-
-- a '*'-subject acts absorbing, for consistency with
585-
-- the 'Semigroup RelaxDeps' instance
586-
Dependency depName (removeBound relKind relMod verRange) cs
587-
| Just relMod <- Map.lookup (RelaxDepSubjectPkg depName) depsToRelax =
588-
Dependency depName (removeBound relKind relMod verRange) cs
589-
| otherwise = d -- no-op
590-
591-
-- | Internal helper for 'relaxPackageDeps'
592-
removeBound :: RelaxKind -> RelaxDepMod -> VersionRange -> VersionRange
593-
removeBound RelaxLower RelaxDepModNone = removeLowerBound
594-
removeBound RelaxUpper RelaxDepModNone = removeUpperBound
595-
removeBound RelaxLower RelaxDepModCaret = transformCaretLower
596-
removeBound RelaxUpper RelaxDepModCaret = transformCaretUpper
597-
598547
-- | Supply defaults for packages without explicit Setup dependencies
599548
--
600549
-- Note: It's important to apply 'addDefaultSetupDepends' after

cabal-install/src/Distribution/Client/Install.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ import Distribution.Version
267267
)
268268

269269
import qualified Data.ByteString as BS
270+
import Distribution.Types.AllowNewer (AllowOlder(..), AllowNewer (..))
270271

271272
-- TODO:
272273

cabal-install/src/Distribution/Client/ProjectConfig.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ import System.IO
221221
( IOMode (ReadMode)
222222
, withBinaryFile
223223
)
224+
import Distribution.Types.AllowNewer (AllowOlder(..), AllowNewer (..))
224225

225226
----------------------------------------
226227
-- Resolving configuration to settings

cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import Distribution.Client.Compat.Prelude
3535
import Distribution.Types.Flag (FlagName, parsecFlagAssignment)
3636

3737
import Distribution.Client.ProjectConfig.Types
38-
import Distribution.Client.Types.AllowNewer (AllowNewer (..), AllowOlder (..))
38+
import Distribution.Types.AllowNewer (AllowNewer (..), AllowOlder (..))
3939
import Distribution.Client.Types.Repo (LocalRepo (..), RemoteRepo (..), emptyRemoteRepo)
4040
import Distribution.Client.Types.RepoName (RepoName (..), unRepoName)
4141
import Distribution.Client.Types.SourceRepo (SourceRepoList, sourceRepositoryPackageGrammar)

cabal-install/src/Distribution/Client/ProjectConfig/Types.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import Distribution.Client.Dependency.Types
3232
import Distribution.Client.Targets
3333
( UserConstraint
3434
)
35-
import Distribution.Client.Types.AllowNewer (AllowNewer (..), AllowOlder (..))
35+
import Distribution.Types.AllowNewer (AllowNewer (..), AllowOlder (..))
3636
import Distribution.Client.Types.Repo (LocalRepo, RemoteRepo)
3737
import Distribution.Client.Types.SourceRepo (SourceRepoList)
3838
import Distribution.Client.Types.WriteGhcEnvironmentFilesPolicy (WriteGhcEnvironmentFilesPolicy)

cabal-install/src/Distribution/Client/Setup.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ module Distribution.Client.Setup
9292
import Distribution.Client.Compat.Prelude hiding (get)
9393
import Prelude ()
9494

95-
import Distribution.Client.Types.AllowNewer (AllowNewer (..), AllowOlder (..), RelaxDeps (..))
95+
import Distribution.Types.AllowNewer (AllowNewer (..), AllowOlder (..), RelaxDeps (..))
9696
import Distribution.Client.Types.Credentials (Password (..), Username (..))
9797
import Distribution.Client.Types.Repo (LocalRepo (..), RemoteRepo (..))
9898
import Distribution.Client.Types.WriteGhcEnvironmentFilesPolicy
@@ -660,7 +660,9 @@ filterConfigureFlags flags cabalLibVersion
660660
-- Note: this is not in the wrong place. configConstraints gets
661661
-- repopulated in flags_1_19_1 but it needs to be set to empty for
662662
-- newer versions first.
663-
configConstraints = []
663+
configConstraints = [],
664+
configAllowNewer = AllowNever mempty,
665+
configAllowOlder = AllowOlder mempty
664666
}
665667

666668
flags_3_11_0 =

cabal-install/src/Distribution/Client/Types.hs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
--
2222
-- Various common data types for the entire cabal-install system
2323
module Distribution.Client.Types
24-
( module Distribution.Client.Types.AllowNewer
25-
, module Distribution.Client.Types.ConfiguredId
24+
( module Distribution.Client.Types.ConfiguredId
2625
, module Distribution.Client.Types.ConfiguredPackage
2726
, module Distribution.Client.Types.BuildResults
2827
, module Distribution.Client.Types.PackageLocation
@@ -34,7 +33,6 @@ module Distribution.Client.Types
3433
, module Distribution.Client.Types.WriteGhcEnvironmentFilesPolicy
3534
) where
3635

37-
import Distribution.Client.Types.AllowNewer
3836
import Distribution.Client.Types.BuildResults
3937
import Distribution.Client.Types.ConfiguredId
4038
import Distribution.Client.Types.ConfiguredPackage

0 commit comments

Comments
 (0)