packages feed

dependency 0.1.0.2 → 0.1.0.3

raw patch · 5 files changed

+28/−21 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Data.Dependency: [_libVersion] :: Dependency -> Version
- Data.Dependency: Dependency :: String -> Constraint Version -> [String] -> Dependency
+ Data.Dependency: Dependency :: String -> Constraint Version -> [String] -> Version -> Dependency
- Data.Dependency: resolveDependencies :: PackageSet Dependency -> [[Dependency]] -> Maybe [[Dependency]]
+ Data.Dependency: resolveDependencies :: PackageSet Dependency -> [Dependency] -> Maybe [[Dependency]]

Files

bench/Bench.hs view
@@ -6,21 +6,24 @@ import qualified Data.Map        as M import qualified Data.Set        as S -microlens :: Dependency-microlens = Dependency "microlens" mempty mempty- free :: Dependency-free = Dependency "free" mempty mempty+free = Dependency "free" mempty mempty defV  comonad :: Dependency-comonad = Dependency "comonad" mempty mempty--bifunctors :: Dependency-bifunctors = Dependency "bifunctors" mempty ["comonad"]+comonad = Dependency "comonad" mempty mempty defV  lens :: Dependency-lens = Dependency "lens" mempty ["free", "comonad"]+lens = Dependency "lens" mempty ["free", "comonad"] defV +defV :: Version+defV = Version [0,1,0]++microlens :: Dependency+microlens = Dependency "microlens" mempty mempty defV++bifunctors :: Dependency+bifunctors = Dependency "bifunctors" mempty ["comonad"] defV+ deps :: [Dependency] deps = [free, lens, comonad] @@ -37,5 +40,5 @@                       , bench "6" $ nf buildSequence (bifunctors : microlens : deps)                       ]                 , bgroup "resolveDependencies"-                      [ bench "3" $ nf (resolveDependencies set) (buildSequence [lens]) ]+                      [ bench "3" $ nf (resolveDependencies set) [lens] ]                 ]
dependency.cabal view
@@ -1,5 +1,5 @@ name:                dependency-version:             0.1.0.2+version:             0.1.0.3 synopsis:            Dependency resolution for package management description:         A library for resolving dependencies; uses a topological sort to construct a build plan and then allows choice between all compatible plans. license:             BSD3
src/Data/Dependency.hs view
@@ -18,18 +18,18 @@ import qualified Data.Set             as S  isPresent :: PackageSet Version -> Dependency -> Bool-isPresent (PackageSet ps) (Dependency ln _ _) = g (M.lookup ln ps)+isPresent (PackageSet ps) (Dependency ln _ _ _) = g (M.lookup ln ps)     where g (Just x) = not (S.null x)           g Nothing  = False  latest :: (Ord a) => PackageSet a -> Dependency -> Maybe (String, a)-latest (PackageSet ps) (Dependency ln _ _) = do+latest (PackageSet ps) (Dependency ln _ _ _) = do     s <- M.lookup ln ps     (,) ln <$> S.lookupMax s  buildSequence :: [Dependency] -> [[Dependency]] buildSequence = reverse . groupBy independent . sortDeps-    where independent (Dependency ln _ ls) (Dependency ln' _ ls') = ln' `notElem` ls && ln `notElem` ls'+    where independent (Dependency ln _ ls _) (Dependency ln' _ ls' _) = ln' `notElem` ls && ln `notElem` ls'  saturateDeps :: PackageSet Dependency -> Dependency -> Maybe [Dependency] saturateDeps (PackageSet ps) dep = do@@ -50,8 +50,8 @@ -- 5. Specify an error if a package is not present. -- -- This doesn't do any package resolution beyond versioning.-resolveDependencies :: PackageSet Dependency -> [[Dependency]] -> Maybe [[Dependency]]+resolveDependencies :: PackageSet Dependency -> [Dependency] -> Maybe [[Dependency]] resolveDependencies ps = select . getLatest <=< fmap buildSequence . saturated     where select = fmap (fmap (fmap snd))-          saturated dep = join . join <$> traverse (traverse (saturateDeps ps)) dep-          getLatest = sequence . fmap (traverse (latest ps))+          saturated dep = join <$> traverse (saturateDeps ps) dep+          getLatest = traverse (traverse (latest ps))
src/Data/Dependency/Type.hs view
@@ -93,6 +93,7 @@ data Dependency = Dependency { _libName         :: String                              , _libConstraint   :: Constraint Version                              , _libDependencies :: [String]+                             , _libVersion      :: Version                              }                              deriving (Show, Eq, Ord, Generic, NFData) 
test/Spec.hs view
@@ -5,14 +5,17 @@ import           Test.Hspec  free :: Dependency-free = Dependency "free" mempty mempty+free = Dependency "free" mempty mempty defV  comonad :: Dependency-comonad = Dependency "comonad" mempty mempty+comonad = Dependency "comonad" mempty mempty defV  lens :: Dependency-lens = Dependency "lens" mempty ["free", "comonad"]+lens = Dependency "lens" mempty ["free", "comonad"] defV +defV :: Version+defV = Version [0,1,0]+ deps :: [Dependency] deps = [free, lens, comonad] @@ -29,4 +32,4 @@             buildSequence deps `shouldBe` [[free, comonad], [lens]]     describe "resolveDependencies" $         it "correctly resolves dependencies in a package set" $-            resolveDependencies set (buildSequence [lens]) `shouldBe` Just [[free, comonad], [lens]]+            resolveDependencies set [lens] `shouldBe` Just [[free, comonad], [lens]]