@@ -39,6 +39,12 @@ import Distribution.Utils.ShortText ( fromShortText )
3939import Distribution.Version
4040import Language.Nix
4141
42+ #if MIN_VERSION_Cabal(3,16,0)
43+ import Distribution.Types.MissingDependency ( MissingDependency (MissingDependency ) )
44+ import Distribution.Types.DependencySatisfaction ( DependencySatisfaction (.. ) )
45+ import Distribution.Types.MissingDependencyReason ( MissingDependencyReason (WrongVersion ) )
46+ #endif
47+
4248type HaskellResolver = PackageVersionConstraint -> Bool
4349type NixpkgsResolver = Identifier -> Maybe Binding
4450
@@ -54,8 +60,16 @@ finalizeGenericPackageDescription haskellResolver arch compiler flags constraint
5460 -- finalizePD incooperates the 'LibraryName' of a dependency
5561 -- which we always ignore, so the Cabal-compatible resolver
5662 -- is a simple wrapper around our 'HaskellResolver'
63+ #if MIN_VERSION_Cabal(3,16,0)
64+ makeCabalResolver :: HaskellResolver -> Dependency -> DependencySatisfaction
65+ makeCabalResolver r (Dependency n v _) =
66+ if r (PackageVersionConstraint n v)
67+ then Satisfied
68+ else Unsatisfied (WrongVersion [] )
69+ #else
5770 makeCabalResolver :: HaskellResolver -> Dependency -> Bool
5871 makeCabalResolver r (Dependency n v _) = r (PackageVersionConstraint n v)
72+ #endif
5973
6074 -- the finalizePD API changed in Cabal 3.4.0.0, so we need to do some plumbing.
6175 -- See https://github.com/haskell/cabal/issues/5570
@@ -70,7 +84,14 @@ finalizeGenericPackageDescription haskellResolver arch compiler flags constraint
7084 -- We have to call the Cabal finalizer several times with different resolver
7185 -- functions, and this convenience function makes our code shorter.
7286 finalize :: HaskellResolver -> Either [Dependency ] (PackageDescription ,FlagAssignment )
73- finalize resolver = finalizePD flags requestedComponents (makeCabalResolver resolver) arch compiler (makeCabalConstraints constraints) genDesc
87+ finalize resolver =
88+ case finalizePD flags requestedComponents (makeCabalResolver resolver) arch compiler (makeCabalConstraints constraints) genDesc of
89+ #if MIN_VERSION_Cabal(3,16,0)
90+ Left left -> Left (map (\ (MissingDependency dependency _reason) -> dependency) left)
91+ #else
92+ Left left -> Left left
93+ #endif
94+ Right right -> Right right
7495
7596 requestedComponents :: ComponentRequestedSpec
7697 requestedComponents = ComponentRequestedSpec
0 commit comments