diff --git a/src/Add.hs b/src/Add.hs index 50b9937..dc33ef1 100644 --- a/src/Add.hs +++ b/src/Add.hs @@ -38,7 +38,7 @@ import System.Unix.Directory -- {{{1 types data PkgType = GhcType String Version - | DistroType String Version String + | DistroType String Version Int | RepoType GenericPackageDescription deriving (Eq, Show) diff --git a/src/ConvertDB.hs b/src/ConvertDB.hs index c5b1a3e..bbb10cb 100644 --- a/src/ConvertDB.hs +++ b/src/ConvertDB.hs @@ -46,4 +46,4 @@ doConvertDB = map doConvert x = 0 d = ODB.pkgDeps o f = ODB.pkgFlags o - r = ODB.pkgRelease o + r = read $ ODB.pkgRelease o diff --git a/src/ListPkgs.hs b/src/ListPkgs.hs index 86ed018..5233f2b 100644 --- a/src/ListPkgs.hs +++ b/src/ListPkgs.hs @@ -46,7 +46,7 @@ pkgFilter g d r p = (g && isGhcPkg p) || (d && isDistroPkg p) || (not r && isRep printCblPkgShort :: CblPkg -> IO () printCblPkgShort p = - putStrLn $ pkgName p ++ " " ++ display (pkgVersion p) ++ "-" ++ pkgRelease p ++ showFlagsIfPresent p + putStrLn $ pkgName p ++ " " ++ display (pkgVersion p) ++ "-" ++ pkgReleaseAsStr p ++ showFlagsIfPresent p where showFlagsIfPresent _p | [] <- pkgFlags _p = "" diff --git a/src/PkgDB.hs b/src/PkgDB.hs index f1caf48..841f8e7 100644 --- a/src/PkgDB.hs +++ b/src/PkgDB.hs @@ -25,6 +25,7 @@ module PkgDB , pkgDeps , pkgFlags , pkgRelease + , pkgReleaseAsStr -- , isGhcPkg , isDistroPkg @@ -69,8 +70,8 @@ import qualified Util.Dist -- {{{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 } + | DistroPkg { version :: V.Version, release :: Int } + | RepoPkg { version :: V.Version, xrev :: Int, deps :: [P.Dependency], flags :: FlagAssignment, release :: Int } deriving (Eq, Show) data CblPkg = CP String Pkg @@ -120,22 +121,27 @@ pkgFlags :: CblPkg -> FlagAssignment pkgFlags (CP _ RepoPkg { flags = fa}) = fa pkgFlags _ = [] -pkgRelease :: CblPkg -> String -pkgRelease (CP _ GhcPkg {}) = "xx" +pkgRelease :: CblPkg -> Int +pkgRelease (CP _ GhcPkg {}) = (-1) pkgRelease (CP _ DistroPkg { release = r }) = r pkgRelease (CP _ RepoPkg { release = r }) = r +pkgReleaseAsStr :: CblPkg -> String +pkgReleaseAsStr (CP _ GhcPkg {}) = "xx" +pkgReleaseAsStr (CP _ DistroPkg { release = r }) = show r +pkgReleaseAsStr (CP _ RepoPkg { release = r }) = show r + createGhcPkg :: String -> V.Version -> CblPkg createGhcPkg n v = CP n (GhcPkg v) -createDistroPkg :: String -> V.Version -> String -> CblPkg +createDistroPkg :: String -> V.Version -> Int -> CblPkg createDistroPkg n v r = CP n (DistroPkg v r) -createRepoPkg :: String -> V.Version -> Int -> [P.Dependency] -> FlagAssignment -> String -> CblPkg +createRepoPkg :: String -> V.Version -> Int -> [P.Dependency] -> FlagAssignment -> Int -> CblPkg createRepoPkg n v x d fa r = CP n (RepoPkg 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 +182,7 @@ addPkg2 db (CP n p) = addPkg db n p 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 +191,7 @@ delPkg db n = filter (\ p -> n /= pkgName p) db 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' p@RepoPkg { release = r }) = CP n' (p { release = r + 1 }) doBump p = p lookupPkg :: CblDB -> String -> Maybe CblPkg diff --git a/src/Util/Misc.hs b/src/Util/Misc.hs index b4a9aa4..b1017fc 100644 --- a/src/Util/Misc.hs +++ b/src/Util/Misc.hs @@ -100,13 +100,13 @@ pkgNVersionArgReader = do ghcPkgArgReader :: ReadM (String, Version) ghcPkgArgReader = pkgNVersionArgReader -distroPkgArgReader :: ReadM (String, Version, String) +distroPkgArgReader :: ReadM (String, Version, Int) distroPkgArgReader = let readDistroPkg = do (n, v) <- readPkgNVersion char ',' r <- many (satisfy (/= ',')) - return (n, v, r) + return (n, v, read r) in do s <- readerAsk @@ -154,7 +154,7 @@ strCblPkgArgReader = let data Cmds = CmdAdd { patchDir :: FilePath, ghcVer :: Version, cmdAddGhcPkgs :: [(String, Version)] - , cmdAddDistroPkgs :: [(String, Version, String)], cmdAddFileCbls :: [(FilePath, FlagAssignment)] + , cmdAddDistroPkgs :: [(String, Version, Int)], cmdAddFileCbls :: [(FilePath, FlagAssignment)] , cmdAddCbls :: [(String, Version, FlagAssignment)] } | CmdBuildPkgs { pkgs :: [String] } | CmdBumpPkgs { inclusive :: Bool, pkgs :: [String] } diff --git a/src/Util/Translation.hs b/src/Util/Translation.hs index 8312a72..0974c7d 100644 --- a/src/Util/Translation.hs +++ b/src/Util/Translation.hs @@ -295,7 +295,7 @@ translate ghcVer ghcRel db fa pd = let ap = baseArchPkg (PackageName hkgName) = packageName pd pkgVer = packageVersion pd - pkgRel = maybe "1" pkgRelease (lookupPkg db hkgName) + pkgRel = show $ maybe 1 pkgRelease (lookupPkg db hkgName) hasLib = isJust (library pd) licFn = let l = licenseFiles pd in if null l then Nothing else Just (head l) archName = (if hasLib then "haskell-" else "") ++ map toLower hkgName @@ -338,7 +338,7 @@ calcExactDeps db pd = let pkg = fromJust $ lookupPkg db n name = map toLower $ DB.pkgName pkg ver = display $ DB.pkgVersion pkg - rel = pkgRelease pkg + rel = show $ pkgRelease pkg in "haskell-" ++ name ++ "=" ++ ver ++ "-" ++ rel in map depString deps