[Support libraries without explicit versions and Ho fixes
Einar Karttunen <ekarttun@cs.helsinki.fi>**20060313115017] hunk ./Ho/Build.hs 9
-    checkForHoFile
+    checkForHoFile,
+    checkForHoModule
hunk ./Ho/Build.hs 37
+import Name.Name(Name())
hunk ./Ho/Build.hs 53
+import Info.Types
hunk ./Ho/Build.hs 57
+import PrimitiveOperators
hunk ./Ho/Build.hs 60
+import Support.CanType
hunk ./Ho/Build.hs 117
-    | m `mmember` (hoExports have) = return have
-    | m `mmember` (hoExports lhave) = return have
+    | m `Map.member` (hoExports have) = return have
+    | m `Map.member` (hoExports lhave) = return mempty
hunk ./Ho/Build.hs 134
-                mdeps = [ (m,dep) | m <- mods', Left dep <- mlookup m (hoModules ho)]
-                ldeps = unions [ msingleton ln cs | m <- mods', Right (ln,cs) <- mlookup m (hoModules ho)]
+                mdeps = [ (m,dep) | m <- mods', Left dep <- Map.lookup m (hoModules ho)]
+                ldeps = Map.unions [ Map.singleton ln cs | m <- mods', Right (ln,cs) <- Map.lookup m (hoModules ho)]
hunk ./Ho/Build.hs 141
+            ho' <- return (ho' `mappend` mempty { hoLibraries = ldeps })
hunk ./Ho/Build.hs 143
-            f (ho `mappend` ho' `mappend` mempty { hoLibraries = ldeps }) scs
+            f (ho `mappend` ho') scs
hunk ./Ho/Build.hs 147
-{-
hunk ./Ho/Build.hs 152
--}
hunk ./Ho/Build.hs 352
-                Just (Right (cl,_)) -> putVerboseLn  (show m ++ " found in " ++ show cl) >> return True
+                Just (Right (cl,cs)) -> do
+                    putVerboseLn  (show m ++ " found in " ++ show cl)
+                    writeIORef ho_ref $ ho { hoLibraries = Map.insert cl cs $ hoLibraries ho }
+                    return True
hunk ./Ho/Library.hs 43
-    case Map.lookup name got of
+    (n',fp) <- libraryMapFind name
+    case Map.lookup n' got of
hunk ./Ho/Library.hs 46
-        rfp <- libraryMapFind name
-        pkg <- readLibraryFile name rfp mbcs
-        let got' = Map.insert name pkg got
+        pkg <- readLibraryFile n' fp mbcs
+        let got' = Map.insert n' pkg got
hunk ./Ho/Library.hs 59
-    wdump FD.Progress $ putErrLn $ "Loading libraries: " ++ show (optHls options)
hunk ./Ho/Library.hs 118
-    wdump FD.Progress $ putErrLn $ "Reading: " ++ show fp
+    wdump FD.Progress $ putStrLn $ "Reading: " ++ show fp
hunk ./Ho/LibraryMap.hs 22
-libraryMapFind :: Monad m => LibraryName -> m FilePath
-libraryMapFind pn = case Map.lookup pn globalLibraryMap of
-                      Just x  -> return x
-                      Nothing -> fail ("LibraryMap: Library "++pn++" not found!")
+libraryMapFind :: Monad m => LibraryName -> m (LibraryName,FilePath)
+libraryMapFind pn =
+  case Map.lookup pn globalLibraryMap of
+    Just x  -> return (pn,x)
+    Nothing -> case range (pn++"-") (pn++"-"++repeat maxBound) globalLibraryMap of
+                 [] -> fail ("LibraryMap: Library "++pn++" not found!")
+                 xs -> return $ last xs
hunk ./Ho/LibraryMap.hs 33
+---- range queries for Data.Map
+
+range :: Ord k => k -> k -> Map.Map k v -> [(k,v)]
+range low high = toList . fst . split high . snd . split low
+