Hack to get the compare tool to work on Windows "bindists"
[ghc-hetmet.git] / distrib / compare / BuildInfo.hs
1
2 module BuildInfo where
3
4 import Control.Monad.State
5
6 data BuildInfo = BuildInfo {
7                      biThingVersionMap :: ThingVersionMap,
8                      biWays :: Ways
9                  }
10 -- Mapping from thing (e.g. "Cabal") to version (e.g. "1.10.0.0")
11 type ThingVersionMap = [(String, String)]
12 -- The list of ways in the order the build system uses them, e.g.
13 -- ["v", "p", "dyn"] => we have ".depend-v-p-dyn.haskell" files
14 type Ways = [String]
15
16 addThingVersion :: ThingVersionMap -> String -> String -> Maybe ThingVersionMap
17 addThingVersion mapping thing version
18  = case lookup thing mapping of
19    Just version' ->
20        if version == version'
21        then Just mapping
22        else Nothing
23    Nothing ->
24        Just ((thing, version) : mapping)
25
26 getThingVersionMap :: State BuildInfo ThingVersionMap
27 getThingVersionMap = do st <- get
28                         return $ biThingVersionMap st
29
30 getWays :: State BuildInfo Ways
31 getWays = do st <- get
32              return $ biWays st
33
34 putThingVersionMap :: ThingVersionMap -> State BuildInfo ()
35 putThingVersionMap tm = do st <- get
36                            put $ st { biThingVersionMap = tm }
37
38 putWays :: Ways -> State BuildInfo ()
39 putWays ws = do st <- get
40                 put $ st { biWays = ws }
41