[support printing out dependencies with --deps
John Meacham <john@repetae.net>**20100227081648
 Ignore-this: 5511a79cfeb2ca4c7068867a619290fe
] hunk ./Makefile.am 55
-GHCLANG= -fallow-undecidable-instances  -fglasgow-exts -fallow-overlapping-instances
-GHCOPTS= $(HSOPTS) -fbang-patterns -O @GHCFLAGS@  $(GHCDEBUGOPTS) $(GHCINC) $(PACKAGES) $(GHCLANG)
+GHCLANG= -XUndecidableInstances -XOverlappingInstances -fglasgow-exts
+GHCOPTS= $(HSOPTS) -XBangPatterns -O @GHCFLAGS@  $(GHCDEBUGOPTS) $(GHCINC) $(PACKAGES) $(GHCLANG)
hunk ./src/Ho/Build.hs 61
+import Util.YAML
hunk ./src/Ho/Build.hs 222
+instance MapKey Module where
+    showMapKey = show
+instance MapKey MD5.Hash where
+    showMapKey = show
+
+dumpDeps memap cug = case optDeps options of
+    Nothing -> return ()
+    Just fp -> do
+        let (sfps,sdps,ls) = collectDeps memap cug
+        let yaml = Map.fromList [
+                ("LibraryDesc",toNode $ [ fp | BuildHl fp  <- [optMode options]]),
+                ("LibraryDeps",toNode $ ls),
+                ("ModuleSource",toNode sfps),
+                ("ModuleDeps",toNode $ sdps)
+                ]
+        writeFile fp (showYAML yaml)
+
+collectDeps memap cs = mconcatMap f [ cu | (_,(_,cu)) <- cs] where
+    f (CompSources ss) = mconcat [ (Map.singleton (sourceModName s) (sourceFP s),Map.singleton (sourceModName s) (sourceDeps s),mempty) | s <- map sourceInfo ss ]
+    f (CompLibrary _ lib) = (mempty,mempty,Map.singleton (libHash lib) (libFileName lib))
+    f (CompHo _hoh idep _ho) =  (Map.fromList [ (sourceModName $ sourceInfo src, sourceFP $ sourceInfo src) | s <- fsts ss, Just (Found src) <- [Map.lookup s memap] ],Map.fromList [ mms | s <- snds ss, Just mms <- [Map.lookup s (hoIDeps idep)] ],mempty) where
+        ss = [ s | s <- hoDepends idep ]
+    f _ = mempty
+
hunk ./src/Ho/Build.hs 460
+    dumpDeps (modEncountered done) cug
hunk ./src/Ho/Library.hs 42
-libVersion lib = let HoHeader { hohName = ~(Right (name,vers)) } = libHoHeader lib in vers
-libBaseName lib = let HoHeader { hohName = ~(Right (name,vers)) } = libHoHeader lib in name
+libVersion lib = let HoHeader { hohName = ~(Right (_name,vers)) } = libHoHeader lib in vers
+libBaseName lib = let HoHeader { hohName = ~(Right (name,_vers)) } = libHoHeader lib in name
hunk ./src/Ho/Library.hs 105
-        nameComp a b = compare (libName a) (libName b)
hunk ./src/Ho/Library.hs 120
-maxBy c x1 x2 = case x1 `c` x2 of
-    LT -> x2
-    _ -> x1
+--maxBy c x1 x2 = case x1 `c` x2 of
+--    LT -> x2
+--    _ -> x1
hunk ./src/Ho/Library.hs 153
-            vcomb = maxBy libVersionCompare