Skip to content

Commit d0bb887

Browse files
Merge pull request #698 from 9999years/wiggles/nums
Fix build with Cabal-3.16
2 parents f92873b + a3d347c commit d0bb887

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

cabal2nix/src/Distribution/Nixpkgs/Haskell/FromCabal.hs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ import Distribution.Utils.ShortText ( fromShortText )
3939
import Distribution.Version
4040
import 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+
4248
type HaskellResolver = PackageVersionConstraint -> Bool
4349
type 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

Comments
 (0)