1 {-# LANGUAGE RecordWildCards, TypeSynonymInstances, StandaloneDeriving, GeneralizedNewtypeDeriving #-}
2 {-# OPTIONS_GHC -fno-warn-orphans -fno-warn-name-shadowing #-}
3 -----------------------------------------------------------------------------
5 -- Module : Distribution.InstalledPackageInfo.Binary
6 -- Copyright : (c) The University of Glasgow 2009
8 -- Maintainer : cvs-ghc@haskell.org
9 -- Portability : portable
12 module Distribution.InstalledPackageInfo.Binary (
17 import Distribution.Version
18 import Distribution.Package hiding (depends)
19 import Distribution.License
20 import Distribution.InstalledPackageInfo as IPI
21 import Data.Binary as Bin
23 readBinPackageDB :: Binary m => FilePath -> IO [InstalledPackageInfo_ m]
24 readBinPackageDB file = Bin.decodeFile file
26 writeBinPackageDB :: Binary m => FilePath -> [InstalledPackageInfo_ m] -> IO ()
27 writeBinPackageDB file ipis = Bin.encodeFile file ipis
29 instance Binary m => Binary (InstalledPackageInfo_ m) where
30 put = putInstalledPackageInfo
31 get = getInstalledPackageInfo
33 putInstalledPackageInfo :: Binary m => InstalledPackageInfo_ m -> Put
34 putInstalledPackageInfo ipi = do
35 put (sourcePackageId ipi)
36 put (installedPackageId ipi)
47 put (exposedModules ipi)
48 put (hiddenModules ipi)
52 put (extraLibraries ipi)
53 put (extraGHCiLibraries ipi)
60 put (frameworkDirs ipi)
62 put (haddockInterfaces ipi)
63 put (haddockHTMLs ipi)
65 getInstalledPackageInfo :: Binary m => Get (InstalledPackageInfo_ m)
66 getInstalledPackageInfo = do
67 sourcePackageId <- get
68 installedPackageId <- get
85 extraGHCiLibraries <- get
94 haddockInterfaces <- get
96 return InstalledPackageInfo{..}
98 instance Binary PackageIdentifier where
99 put pid = do put (pkgName pid); put (pkgVersion pid)
103 return PackageIdentifier{..}
105 instance Binary License where
106 put (GPL v) = do putWord8 0; put v
107 put (LGPL v) = do putWord8 1; put v
108 put BSD3 = do putWord8 2
109 put BSD4 = do putWord8 3
110 put MIT = do putWord8 4
111 put PublicDomain = do putWord8 5
112 put AllRightsReserved = do putWord8 6
113 put OtherLicense = do putWord8 7
114 put (UnknownLicense str) = do putWord8 8; put str
119 0 -> do v <- get; return (GPL v)
120 1 -> do v <- get; return (LGPL v)
124 5 -> return PublicDomain
125 6 -> return AllRightsReserved
126 7 -> return OtherLicense
127 _ -> do str <- get; return (UnknownLicense str)
129 instance Binary Version where
130 put v = do put (versionBranch v); put (versionTags v)
131 get = do versionBranch <- get; versionTags <- get; return Version{..}
133 deriving instance Binary PackageName
134 deriving instance Binary InstalledPackageId