cblrepo 0.6.3 → 0.7.0
raw patch · 5 files changed
+69/−28 lines, 5 filesdep ~Cabaldep ~basedep ~bytestring
Dependency ranges changed: Cabal, base, bytestring, directory, json, unix
Files
- cblrepo.cabal +5/−5
- src/PkgBuild.hs +3/−1
- src/PkgDB.hs +54/−19
- src/Util/Misc.hs +2/−2
- src/Util/Translation.hs +5/−1
cblrepo.cabal view
@@ -1,5 +1,5 @@ name: cblrepo-version: 0.6.3+version: 0.7.0 cabal-version: >= 1.6 license: OtherLicense license-file: LICENSE-2.0@@ -25,10 +25,10 @@ other-modules: Util.Misc PkgDB Add BumpPkgs BuildPkgs Sync Versions Updates ListPkgs Urls PkgBuild Util.Translation OldPkgDB ConvertDB Remove- build-depends: base ==4.5.*, cmdargs ==0.10.*, filepath ==1.3.*,- directory ==1.1.*, Cabal ==1.14.*, json ==0.5.*,- bytestring ==0.9.*, tar ==0.4.*, zlib ==0.5.*, mtl >=2.0 && <2.2,- process ==1.1.*, Unixutils ==1.50.*, unix ==2.5.*,+ build-depends: base ==4.6.*, cmdargs ==0.10.*, filepath ==1.3.*,+ directory ==1.2.*, Cabal ==1.16.*, json ==0.7.*,+ bytestring ==0.10.*, tar ==0.4.*, zlib ==0.5.*, mtl >=2.0 && <2.2,+ process ==1.1.*, Unixutils ==1.50.*, unix ==2.6.*, ansi-wl-pprint ==0.6.* Source-Repository head
src/PkgBuild.hs view
@@ -26,6 +26,7 @@ import Data.Maybe import Distribution.Text import System.Directory+import System.FilePath import System.Exit import System.IO import System.Unix.Directory@@ -58,7 +59,8 @@ hClose hPKGBUILD maybe (return ()) (\ pfn -> (runErrorT $ applyPatch "PKGBUILD" pfn) >> return ()) (apPkgbuildPatch archPkgWHash) when (apHasLibrary archPkgWHash) $ do- hInstall <- openFile (apPkgName archPkgWHash ++ ".install") WriteMode+ hInstall <- openFile (apPkgName archPkgWHash <.> "install") WriteMode let archInstall = aiFromAP archPkgWHash hPutDoc hInstall $ pretty archInstall hClose hInstall+ maybe (return ()) (\ pfn -> (runErrorT $ applyPatch (apPkgName archPkgWHash <.> "install") pfn)>> return ()) (apInstallPatch archPkgWHash)
src/PkgDB.hs view
@@ -41,28 +41,53 @@ | RepoPkg { version :: V.Version, deps :: [P.Dependency], release :: String } deriving (Eq, Show) -type CblPkg = (String, Pkg)+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 _ 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 _ 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)+ -- {{{1 packages pkgName :: CblPkg -> String-pkgName (n, _) = n+pkgName (CP n _) = n +pkgPkg :: CblPkg -> Pkg+pkgPkg (CP _ p) = p+ pkgVersion :: CblPkg -> V.Version-pkgVersion (_, p) = version p+pkgVersion (CP _ p) = version p pkgDeps :: CblPkg -> [P.Dependency]-pkgDeps (_, RepoPkg { deps = d}) = d+pkgDeps (CP _ RepoPkg { deps = d}) = d pkgDeps _ = [] pkgRelease :: CblPkg -> String-pkgRelease (_, GhcPkg {}) = "xx"-pkgRelease (_, DistroPkg { release = r }) = r-pkgRelease (_, RepoPkg { release = r }) = r+pkgRelease (CP _ GhcPkg {}) = "xx"+pkgRelease (CP _ DistroPkg { release = r }) = r+pkgRelease (CP _ RepoPkg { release = r }) = r -createGhcPkg n v = (n, GhcPkg v)-createDistroPkg n v r = (n, DistroPkg v r)-createRepoPkg n v d r = (n, RepoPkg v d r)+createGhcPkg n v = CP n (GhcPkg v)+createDistroPkg n v r = CP n (DistroPkg v r)+createRepoPkg n v d r = CP n (RepoPkg v d r) createCblPkg :: PackageDescription -> CblPkg createCblPkg pd = createRepoPkg name version deps "1"@@ -74,13 +99,13 @@ getDependencyOn :: String -> CblPkg -> Maybe P.Dependency getDependencyOn n p = find (\ d -> _depName d == n) (pkgDeps p) -isGhcPkg (_, GhcPkg {}) = True+isGhcPkg (CP _ GhcPkg {}) = True isGhcPkg _ = False -isDistroPkg (_, DistroPkg {}) = True+isDistroPkg (CP _ DistroPkg {}) = True isDistroPkg _ = False -isRepoPkg (_, RepoPkg {}) = True+isRepoPkg (CP _ RepoPkg {}) = True isRepoPkg _ = False isBasePkg :: CblPkg -> Bool@@ -93,11 +118,11 @@ addPkg :: CblDB -> String -> Pkg -> CblDB addPkg db n p = nubBy cmp newdb where- cmp (n1, _) (n2, _) = n1 == n2- newdb = (n, p):db+ cmp (CP n1 _) (CP n2 _) = n1 == n2+ newdb = (CP n p):db addPkg2 :: CblDB -> CblPkg -> CblDB-addPkg2 db (n, p) = addPkg db n p+addPkg2 db (CP n p) = addPkg db n p addGhcPkg :: CblDB -> String -> V.Version -> CblDB addGhcPkg db n v = addPkg2 db (createGhcPkg n v)@@ -110,14 +135,17 @@ bumpRelease :: CblDB -> String -> CblDB bumpRelease db n = let- doBump (n', p@RepoPkg { release = r }) = (n', p { release = nr })+ doBump (CP n' p@RepoPkg { release = r }) = CP n' (p { release = nr }) where nr = show $ (read r) + 1 doBump p = p in maybe db (addPkg2 db . doBump) (lookupPkg db n) lookupPkg :: CblDB -> String -> Maybe CblPkg-lookupPkg db n = maybe Nothing (\ p -> Just (n, p)) (lookup n db)+lookupPkg [] _ = Nothing+lookupPkg (p:db) n+ | n == pkgName p = Just p+ | otherwise = lookupPkg db n lookupDependants db n = filter (/= n) $ map pkgName $ filter (\ p -> doesDependOn p n) db where@@ -151,9 +179,16 @@ saveDb :: CblDB -> FilePath -> IO () saveDb db fp = writeFile fp s where- s = unlines $ map encode db+ s = unlines $ map encode $ sort db -- {{{1 JSON instances+instance JSON CblPkg where+ showJSON (CP n p) = showJSON (n, p)++ readJSON object = do+ (n,p) <- readJSON object+ return (CP n p)+ instance JSON V.Version where showJSON v = makeObj [ ("Version", showJSON $ display v) ]
src/Util/Misc.hs view
@@ -65,7 +65,7 @@ progName = "cblrepo" dbName = progName ++ ".db" -ghcVersion = (Version [7,4,2] [])+ghcVersion = (Version [7,6,1] []) ghcVersionDep = "ghc=" ++ display ghcVersion ++ "-1" -- {{{1 command line argument type@@ -208,7 +208,7 @@ then True else case DB.lookupPkg db dN of Nothing -> False- Just (_, p) -> withinRange (DB.version p) dVR+ Just (DB.CP _ p) -> withinRange (DB.version p) dVR -- {{{1 Command type type Command a = ReaderT Cmds IO a
src/Util/Translation.hs view
@@ -38,7 +38,6 @@ import System.Directory import System.Exit import System.FilePath-import System.IO import System.Process import System.Unix.Directory import Text.PrettyPrint.ANSI.Leijen hiding((</>))@@ -81,6 +80,7 @@ , apLicenseFile :: Maybe FilePath , apCabalPatch :: Maybe FilePath , apPkgbuildPatch :: Maybe FilePath+ , apInstallPatch :: Maybe FilePath , apBuildPatch :: Maybe FilePath -- shell bits , apShHkgName :: ShVar String@@ -105,6 +105,7 @@ , apLicenseFile = Nothing , apCabalPatch = Nothing , apPkgbuildPatch = Nothing+ , apInstallPatch = Nothing , apBuildPatch = Nothing , apShHkgName = ShVar "_hkgname" "" , apShPkgName = ShVar "pkgname" ""@@ -339,16 +340,19 @@ fi tF fF v = if v then tF else fF cabalPatchFn = patchDir </> hkgName <.> "cabal" pkgbuildPatchFn = patchDir </> hkgName <.> "pkgbuild"+ installPatchFn = patchDir </> hkgName <.> "install" buildPatchFn = patchDir </> hkgName <.> "source" in do cabalPatch <- doesFileExist cabalPatchFn >>= fi (liftM Just $ canonicalizePath cabalPatchFn) (return Nothing) pkgBuildPatch <- doesFileExist pkgbuildPatchFn >>= fi (liftM Just $ canonicalizePath pkgbuildPatchFn) (return Nothing)+ installPatch <- doesFileExist installPatchFn >>= fi (liftM Just $ canonicalizePath installPatchFn) (return Nothing) buildPatch <- doesFileExist buildPatchFn >>= fi (liftM Just $ canonicalizePath buildPatchFn) (return Nothing) let sources' = shVarAppendValue sources (ShArray $ catMaybes [maybe Nothing (const $ Just "cabal.patch") cabalPatch, maybe Nothing (const $ Just "source.patch") buildPatch]) return ap { apCabalPatch = cabalPatch , apPkgbuildPatch = pkgBuildPatch+ , apInstallPatch = installPatch , apBuildPatch = buildPatch , apShSource = sources' }