cblrepo 0.16.0 → 0.17.0
raw patch · 7 files changed
+71/−54 lines, 7 files
Files
- cblrepo.cabal +1/−1
- src/Add.hs +6/−6
- src/ConvertDB.hs +2/−2
- src/ListPkgs.hs +1/−1
- src/OldPkgDB.hs +45/−34
- src/PkgDB.hs +10/−6
- src/Util/Misc.hs +6/−4
cblrepo.cabal view
@@ -1,5 +1,5 @@ name: cblrepo-version: 0.16.0+version: 0.17.0 cabal-version: >= 1.6 license: OtherLicense license-file: LICENSE-2.0
src/Add.hs view
@@ -38,7 +38,7 @@ -- {{{1 types data PkgType = GhcType String Version- | DistroType String Version Int+ | DistroType String Version Int Int | RepoType GenericPackageDescription deriving (Eq, Show) @@ -53,7 +53,7 @@ idxPkgs <- asks $ cmdAddCbls . optsCmd -- ghcPkgs <- asks $ map (uncurry GhcType) . cmdAddGhcPkgs . optsCmd- distroPkgs <- asks $ map (\ (n, v, r) -> DistroType n v r) . cmdAddDistroPkgs . optsCmd+ distroPkgs <- asks $ map (\ (n, v, x, r) -> DistroType n v x r) . cmdAddDistroPkgs . optsCmd genFilePkgs <- mapM (runCabalParseWithTempDir . fmap snd . Cbl.readFromFile . fst) filePkgs genIdxPkgs <- mapM ((runCabalParseWithTempDir . fmap snd . Cbl.readFromIdx) . (\ (a, b, _) -> (a, b))) idxPkgs genPkgs <- liftM (map RepoType) $ exitOnAnyLefts (genFilePkgs ++ genIdxPkgs)@@ -79,7 +79,7 @@ Cbl.runCabalParse cpe f getName (GhcType n _) = n-getName (DistroType n _ _) = n+getName (DistroType n _ _ _) = n getName (RepoType gpd) = pkgNameStr $ packageDescription gpd -- {{{1 addPkgs@@ -96,7 +96,7 @@ canBeAdded :: Version -> CblDB -> [(String, FlagAssignment)] -> PkgType -> Bool canBeAdded _ db _ (GhcType n v) = null $ checkDependants db n v-canBeAdded _ db _ (DistroType n v _) = null $ checkDependants db n v+canBeAdded _ db _ (DistroType n v _ _) = null $ checkDependants db n v canBeAdded ghcVer db flags pkg@(RepoType gpd) = finable && depsOK where fa = fromMaybe [] $ lookup (getName pkg) flags@@ -106,7 +106,7 @@ depsOK = null $ checkDependants db n v pkgTypeToCblPkg _ _ _ (GhcType n v) = createGhcPkg n v-pkgTypeToCblPkg _ _ _ (DistroType n v r) = createDistroPkg n v r+pkgTypeToCblPkg _ _ _ (DistroType n v x r) = createDistroPkg n v x r pkgTypeToCblPkg ghcVer db flags pkg@(RepoType gpd) = let fa = fromMaybe [] $ lookup (getName pkg) flags in fromJust $ case finalizePkg ghcVer db fa gpd of@@ -126,7 +126,7 @@ in if null d then Nothing else Just ((n, v), d)-findBreaking db (DistroType n v _) = let+findBreaking db (DistroType n v _ _) = let d = checkDependants db n v in if null d then Nothing
src/ConvertDB.hs view
@@ -37,7 +37,7 @@ where doConvert o | ODB.isGhcPkg o = NDB.createGhcPkg n v- | ODB.isDistroPkg o = NDB.createDistroPkg n v r+ | ODB.isDistroPkg o = NDB.createDistroPkg n v x r | ODB.isRepoPkg o = NDB.createRepoPkg n v x d f r | otherwise = error "" where@@ -46,4 +46,4 @@ x = 0 d = ODB.pkgDeps o f = ODB.pkgFlags o- r = read $ ODB.pkgRelease o+ r = ODB.pkgRelease o
src/ListPkgs.hs view
@@ -48,7 +48,7 @@ printCblPkgShort p = putStrLn $ pkgName p ++ " " ++ v ++ "-" ++ r ++ showFlagsIfPresent p where- v = display (pkgVersion p) ++ if isRepoPkg p then ("_" ++ show (pkgXRev p)) else ""+ v = display (pkgVersion p) ++ if (not $ isGhcPkg p) then ("_" ++ show (pkgXRev p)) else "" r = if isGhcPkg p then "xx" else show (pkgRelease p) showFlagsIfPresent _p | [] <- pkgFlags _p = ""
src/OldPkgDB.hs view
@@ -55,6 +55,7 @@ import Control.Monad import Data.List import Data.Maybe+import Data.Monoid import Distribution.PackageDescription import System.IO.Error import qualified Distribution.Package as P@@ -68,35 +69,42 @@ -- {{{1 types data Pkg- = GhcPkg { version :: V.Version }- | DistroPkg { version :: V.Version, release :: String }- | RepoPkg { version :: V.Version, xrev :: Int, deps :: [P.Dependency], flags :: FlagAssignment, release :: String }+ = GhcPkg GhcPkgD+ | DistroPkg DistroPkgD+ | RepoPkg RepoPkgD deriving (Eq, Show) +data GhcPkgD = GhcPkgD { gpVersion :: V.Version }+ deriving (Eq, Show)++data DistroPkgD = DistroPkgD { dpVersion :: V.Version , dpRelease :: Int }+ deriving (Eq, Show)++data RepoPkgD = RepoPkgD+ { rpVersion :: V.Version+ , rpXrev :: Int+ , rpDeps :: [P.Dependency]+ , rpFlags :: FlagAssignment, rpRelease :: Int+ } deriving (Eq, Show)+ data CblPkg = CP String Pkg deriving (Eq, Show) type CblDB = [CblPkg] instance Ord CblPkg where- compare- (CP n1 GhcPkg { version = v1 })- (CP n2 GhcPkg { version = v2 }) =- compare (n1, v1) (n2, v2)+ compare (CP n1 (GhcPkg d1)) (CP n2 (GhcPkg d2)) =+ compare (n1, gpVersion d1) (n2, gpVersion d2) compare (CP _ GhcPkg {}) _ = LT compare _ (CP _ GhcPkg {}) = GT - compare- (CP n1 DistroPkg { version = v1, release = r1 })- (CP n2 DistroPkg { version = v2, release = r2 }) =- compare (n1, v1, r1) (n2, v2, r2)+ compare (CP n1 (DistroPkg d1)) (CP n2 (DistroPkg d2)) =+ compare (n1, dpVersion d1, dpRelease d1) (n2, dpVersion d2, dpRelease d2) compare (CP _ DistroPkg {}) _ = LT compare _ (CP _ DistroPkg {}) = GT - compare- (CP n1 RepoPkg { version = v1, release = r1 })- (CP n2 RepoPkg { version = v2, release = r2 }) =- compare (n1, v1, r1) (n2, v2, r2)+ compare (CP n1 (RepoPkg d1)) (CP n2 (RepoPkg d2)) =+ compare (n1, rpVersion d1, rpRelease d1) (n2, rpVersion d2, rpRelease d2) -- {{{1 packages pkgName :: CblPkg -> String@@ -106,36 +114,38 @@ pkgPkg (CP _ p) = p pkgVersion :: CblPkg -> V.Version-pkgVersion (CP _ p) = version p+pkgVersion (CP _ (GhcPkg d)) = gpVersion d+pkgVersion (CP _ (DistroPkg d)) = dpVersion d+pkgVersion (CP _ (RepoPkg d)) = rpVersion d pkgXRev :: CblPkg -> Int-pkgXRev (CP _ RepoPkg { xrev = x }) = x+pkgXRev (CP _ (RepoPkg d)) = rpXrev d pkgXRev _ = 0 pkgDeps :: CblPkg -> [P.Dependency]-pkgDeps (CP _ RepoPkg { deps = d}) = d+pkgDeps (CP _ (RepoPkg d)) = rpDeps d pkgDeps _ = [] pkgFlags :: CblPkg -> FlagAssignment-pkgFlags (CP _ RepoPkg { flags = fa}) = fa+pkgFlags (CP _ (RepoPkg d)) = rpFlags d pkgFlags _ = [] -pkgRelease :: CblPkg -> String-pkgRelease (CP _ GhcPkg {}) = "xx"-pkgRelease (CP _ DistroPkg { release = r }) = r-pkgRelease (CP _ RepoPkg { release = r }) = r+pkgRelease :: CblPkg -> Int+pkgRelease (CP _ (GhcPkg _)) = (-1)+pkgRelease (CP _ (DistroPkg d)) = dpRelease d+pkgRelease (CP _ (RepoPkg d)) = rpRelease d createGhcPkg :: String -> V.Version -> CblPkg-createGhcPkg n v = CP n (GhcPkg v)+createGhcPkg n v = CP n (GhcPkg $ GhcPkgD v) -createDistroPkg :: String -> V.Version -> String -> CblPkg-createDistroPkg n v r = CP n (DistroPkg v r)+createDistroPkg :: String -> V.Version -> Int -> CblPkg+createDistroPkg n v r = CP n (DistroPkg (DistroPkgD v r)) -createRepoPkg :: String -> V.Version -> Int -> [P.Dependency] -> FlagAssignment -> String -> CblPkg-createRepoPkg n v x d fa r = CP n (RepoPkg v x d fa r)+createRepoPkg :: String -> V.Version -> Int -> [P.Dependency] -> FlagAssignment -> Int -> CblPkg+createRepoPkg n v x d fa r = CP n (RepoPkg $ RepoPkgD v x d fa r) createCblPkg :: PackageDescription -> FlagAssignment -> CblPkg-createCblPkg pd fa = createRepoPkg name version xrev deps fa "1"+createCblPkg pd fa = createRepoPkg name version xrev deps fa 1 where name = Util.Dist.pkgNameStr pd version = P.pkgVersion $ package pd@@ -176,7 +186,7 @@ addGhcPkg :: CblDB -> String -> V.Version -> CblDB addGhcPkg db n v = addPkg2 db (createGhcPkg n v) -addDistroPkg :: CblDB -> String -> V.Version -> String -> CblDB+addDistroPkg :: CblDB -> String -> V.Version -> Int -> CblDB addDistroPkg db n v r = addPkg2 db (createDistroPkg n v r) delPkg :: CblDB -> String -> CblDB@@ -185,9 +195,7 @@ bumpRelease :: CblDB -> String -> CblDB bumpRelease db n = maybe db (addPkg2 db . doBump) (lookupPkg db n) where- doBump (CP n' p@RepoPkg { release = r }) = CP n' (p { release = nr })- where- nr = show $ read r + (1 :: Int)+ doBump (CP n' (RepoPkg d)) = CP n' (RepoPkg d { rpRelease = (rpRelease d + 1) }) doBump p = p lookupPkg :: CblDB -> String -> Maybe CblPkg@@ -222,7 +230,7 @@ in (dN == name) || (case lookupPkg db dN of Nothing -> False- Just (CP _ p) -> V.withinRange (version p) dVR)+ Just p -> V.withinRange (pkgVersion p) dVR) readDb :: FilePath -> IO CblDB readDb fp = handle@@ -245,6 +253,9 @@ $(deriveJSON defaultOptions { sumEncoding = ObjectWithSingleField, allNullaryToStringTag = False } ''V.VersionRange) $(deriveJSON defaultOptions { sumEncoding = ObjectWithSingleField, allNullaryToStringTag = False } ''FlagName) $(deriveJSON defaultOptions { sumEncoding = ObjectWithSingleField, allNullaryToStringTag = False } ''Pkg)+$(deriveJSON defaultOptions { sumEncoding = ObjectWithSingleField, allNullaryToStringTag = False } ''GhcPkgD)+$(deriveJSON defaultOptions { sumEncoding = ObjectWithSingleField, allNullaryToStringTag = False } ''DistroPkgD)+$(deriveJSON defaultOptions { sumEncoding = ObjectWithSingleField, allNullaryToStringTag = False } ''RepoPkgD) $(deriveJSON defaultOptions { sumEncoding = ObjectWithSingleField, allNullaryToStringTag = False } ''CblPkg) instance ToJSON P.Dependency where
src/PkgDB.hs view
@@ -77,8 +77,11 @@ data GhcPkgD = GhcPkgD { gpVersion :: V.Version } deriving (Eq, Show) -data DistroPkgD = DistroPkgD { dpVersion :: V.Version , dpRelease :: Int }- deriving (Eq, Show)+data DistroPkgD = DistroPkgD+ { dpVersion :: V.Version+ , dpXrev :: Int+ , dpRelease :: Int+ } deriving (Eq, Show) data RepoPkgD = RepoPkgD { rpVersion :: V.Version@@ -119,6 +122,7 @@ pkgVersion (CP _ (RepoPkg d)) = rpVersion d pkgXRev :: CblPkg -> Int+pkgXRev (CP _ (DistroPkg d)) = dpXrev d pkgXRev (CP _ (RepoPkg d)) = rpXrev d pkgXRev _ = 0 @@ -138,8 +142,8 @@ createGhcPkg :: String -> V.Version -> CblPkg createGhcPkg n v = CP n (GhcPkg $ GhcPkgD v) -createDistroPkg :: String -> V.Version -> Int -> CblPkg-createDistroPkg n v r = CP n (DistroPkg (DistroPkgD v r))+createDistroPkg :: String -> V.Version -> Int -> Int -> CblPkg+createDistroPkg n v x r = CP n (DistroPkg (DistroPkgD v x r)) createRepoPkg :: String -> V.Version -> Int -> [P.Dependency] -> FlagAssignment -> Int -> CblPkg createRepoPkg n v x d fa r = CP n (RepoPkg $ RepoPkgD v x d fa r)@@ -186,8 +190,8 @@ addGhcPkg :: CblDB -> String -> V.Version -> CblDB addGhcPkg db n v = addPkg2 db (createGhcPkg n v) -addDistroPkg :: CblDB -> String -> V.Version -> Int -> CblDB-addDistroPkg db n v r = addPkg2 db (createDistroPkg n v r)+addDistroPkg :: CblDB -> String -> V.Version -> Int -> Int -> CblDB+addDistroPkg db n v x r = addPkg2 db (createDistroPkg n v x r) delPkg :: CblDB -> String -> CblDB delPkg db n = filter (\ p -> n /= pkgName p) db
src/Util/Misc.hs view
@@ -100,19 +100,21 @@ ghcPkgArgReader :: ReadM (String, Version) ghcPkgArgReader = pkgNVersionArgReader -distroPkgArgReader :: ReadM (String, Version, Int)+distroPkgArgReader :: ReadM (String, Version, Int, Int) distroPkgArgReader = let readDistroPkg = do (n, v) <- readPkgNVersion char ','+ x <- many (satisfy (/= ','))+ char ',' r <- many (satisfy (/= ','))- return (n, v, read r)+ return (n, v, read x, read r) in do s <- readerAsk case lastMay (readP_to_S readDistroPkg s) of Just (r, "") -> return r- _ -> fail $ "Cannot parse '" ++ s ++ "' as PKG,VER,REL"+ _ -> fail $ "Cannot parse '" ++ s ++ "' as PKG,VER,XREV,REL" strCblFileArgReader :: ReadM (FilePath, FlagAssignment) strCblFileArgReader = let@@ -154,7 +156,7 @@ data Cmds = CmdAdd { patchDir :: FilePath, ghcVer :: Version, cmdAddGhcPkgs :: [(String, Version)]- , cmdAddDistroPkgs :: [(String, Version, Int)], cmdAddFileCbls :: [(FilePath, FlagAssignment)]+ , cmdAddDistroPkgs :: [(String, Version, Int, Int)], cmdAddFileCbls :: [(FilePath, FlagAssignment)] , cmdAddCbls :: [(String, Version, FlagAssignment)] } | CmdBuildPkgs { pkgs :: [String] } | CmdBumpPkgs { inclusive :: Bool, pkgs :: [String] }