module Distribution.Nixpkgs.Haskell.Constraint ( Constraint, constraintPkgName, satisfiesConstraint, satisfiesConstraints ) where import Distribution.Package import Distribution.Version import Distribution.Types.PackageVersionConstraint import Distribution.Nixpkgs.Haskell.OrphanInstances ( ) type Constraint = PackageVersionConstraint constraintPkgName :: Constraint -> PackageName constraintPkgName :: Constraint -> PackageName constraintPkgName (PackageVersionConstraint PackageName n VersionRange _) = PackageName n satisfiesConstraint :: PackageIdentifier -> Constraint -> Bool satisfiesConstraint :: PackageIdentifier -> Constraint -> Bool satisfiesConstraint (PackageIdentifier PackageName pn Version v) (PackageVersionConstraint PackageName cn VersionRange vr) = (PackageName pn PackageName -> PackageName -> Bool forall a. Eq a => a -> a -> Bool /= PackageName cn) Bool -> Bool -> Bool || (Version v Version -> VersionRange -> Bool `withinRange` VersionRange vr) satisfiesConstraints :: PackageIdentifier -> [Constraint] -> Bool satisfiesConstraints :: PackageIdentifier -> [Constraint] -> Bool satisfiesConstraints PackageIdentifier p = (Constraint -> Bool) -> [Constraint] -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all (PackageIdentifier -> Constraint -> Bool satisfiesConstraint PackageIdentifier p)